commit 2c3c0ac627fc70362cec4a9c36db3f0b2ef51a33 Author: seiki7788 Date: Sun Mar 9 23:45:43 2025 +0900 2025-03-09 Init diff --git a/.gradle/8.10.1/checksums/checksums.lock b/.gradle/8.10.1/checksums/checksums.lock new file mode 100644 index 0000000..f56ccbb Binary files /dev/null and b/.gradle/8.10.1/checksums/checksums.lock differ diff --git a/.gradle/8.10.1/dependencies-accessors/gc.properties b/.gradle/8.10.1/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.10.1/executionHistory/executionHistory.bin b/.gradle/8.10.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000..64538ec Binary files /dev/null and b/.gradle/8.10.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.10.1/executionHistory/executionHistory.lock b/.gradle/8.10.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000..85f5979 Binary files /dev/null and b/.gradle/8.10.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.10.1/fileChanges/last-build.bin b/.gradle/8.10.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/8.10.1/fileChanges/last-build.bin differ diff --git a/.gradle/8.10.1/fileHashes/fileHashes.bin b/.gradle/8.10.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000..6b6c708 Binary files /dev/null and b/.gradle/8.10.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.10.1/fileHashes/fileHashes.lock b/.gradle/8.10.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..ebe3baa Binary files /dev/null and b/.gradle/8.10.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.10.1/fileHashes/resourceHashesCache.bin b/.gradle/8.10.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..2fd0dc1 Binary files /dev/null and b/.gradle/8.10.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/8.10.1/gc.properties b/.gradle/8.10.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.10.2/checksums/checksums.lock b/.gradle/8.10.2/checksums/checksums.lock new file mode 100644 index 0000000..344d77a Binary files /dev/null and b/.gradle/8.10.2/checksums/checksums.lock differ diff --git a/.gradle/8.10.2/checksums/md5-checksums.bin b/.gradle/8.10.2/checksums/md5-checksums.bin new file mode 100644 index 0000000..e00b059 Binary files /dev/null and b/.gradle/8.10.2/checksums/md5-checksums.bin differ diff --git a/.gradle/8.10.2/checksums/sha1-checksums.bin b/.gradle/8.10.2/checksums/sha1-checksums.bin new file mode 100644 index 0000000..3545de5 Binary files /dev/null and b/.gradle/8.10.2/checksums/sha1-checksums.bin differ diff --git a/.gradle/8.10.2/dependencies-accessors/gc.properties b/.gradle/8.10.2/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin new file mode 100644 index 0000000..a2bf0c9 Binary files /dev/null and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock new file mode 100644 index 0000000..8d0ef95 Binary files /dev/null and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.10.2/fileChanges/last-build.bin b/.gradle/8.10.2/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/8.10.2/fileChanges/last-build.bin differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin new file mode 100644 index 0000000..266c2d0 Binary files /dev/null and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock new file mode 100644 index 0000000..9c79f50 Binary files /dev/null and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..8849c0e Binary files /dev/null and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/8.10.2/gc.properties b/.gradle/8.10.2/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..9ac6ca4 Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..ab3e933 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Mon Feb 17 00:07:25 KST 2025 +gradle.version=8.10.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..50551dd Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000..d11e1f0 Binary files /dev/null and b/.gradle/file-system.probe differ diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..ae388c2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..d2ce72d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..c224ad5 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8978d23 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0882370 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/app/ritpsip.app.main.iml b/.idea/modules/app/ritpsip.app.main.iml new file mode 100644 index 0000000..15b0d81 --- /dev/null +++ b/.idea/modules/app/ritpsip.app.main.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.kotlin/errors/errors-1741010215617.log b/.kotlin/errors/errors-1741010215617.log new file mode 100644 index 0000000..1219b50 --- /dev/null +++ b/.kotlin/errors/errors-1741010215617.log @@ -0,0 +1,4 @@ +kotlin version: 2.0.21 +error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output: + 1. Kotlin compile daemon is ready + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ddb0eb5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2018, TutPro Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/PrivacyPolicy.txt b/PrivacyPolicy.txt new file mode 100644 index 0000000..888802c --- /dev/null +++ b/PrivacyPolicy.txt @@ -0,0 +1,11 @@ +baresip+ Privacy Policy + +Last updated: Sept 25, 2022 + +baresip+ does not collect any personal, app usage, or any other information nor share any information with anyone. Information you submit in baresip+ app is stored privately and securely on your Android device and is deleted when you uninstall the app. + +When you make a call, you share your audio and, in case of video call, also video images with the other party of the call. They are not shared with anybody else. If you choose ZRTP media encryption, both audio and video is encrypted end-to-end. + +You can be optionally choose in Settings that baresip+ uses Android contacts as references to SIP and tel URIs. If chosen, baresip+ does not store or upload Android contacts anywhere nor share them with anyone. + +Use https://github.com/juha-h/baresip-studio/discussions page for questions regarding baresip+ app's privacy policy. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a79a14f --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +This branch adds video calling capability to baresip app and provides its sister app called baresip+. Currently AV1, VP9, VP8, and H.264 video codecs are supported. + +Static libraries and include files need to be generated to distribution directory using video branch of libbaresip-android. Video codecs and support of android_camera input device are provided by FFmpeg libraries and need at least Android API level 24. + +Video calling is possible only on devices that include Camera2 API at hardware support level LEVEL 3. + +Ready to be installed baresip+ app is available from F-Droid and from GitHub. + +Copyright (c) 2020 TutPro Inc. Distributed under GNU GPL license. diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cache-v2-b3379d373718fcc18475.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cache-v2-b3379d373718fcc18475.json new file mode 100644 index 0000000..2a499d8 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cache-v2-b3379d373718fcc18475.json @@ -0,0 +1,1343 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-28" + }, + { + "name" : "ANDROID_STL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "c++_shared" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "22" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "-DHAVE_INTTYPES_H -lstdc++" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "C:/Program Files (x86)/baresip+" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\2a1t5c4e\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "baresip+" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\2a1t5c4e\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "28" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "baresip+_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a" + }, + { + "name" : "baresip+_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "baresip+_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "baresip_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f46d3f5a83a5161e24f.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f46d3f5a83a5161e24f.json new file mode 100644 index 0000000..e7b892f --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f46d3f5a83a5161e24f.json @@ -0,0 +1,803 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-403f449ccc5e4620b9f6.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-403f449ccc5e4620b9f6.json new file mode 100644 index 0000000..8ff48b2 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-403f449ccc5e4620b9f6.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", + "minimumCMakeVersion" : + { + "string" : "3.4.1" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "baresip+", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "baresip::@6890427a1f51a3e7e1df", + "jsonFile" : "target-baresip-Debug-e1a9eeb6c5a22e215e2f.json", + "name" : "baresip", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 3 + } +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/index-2025-01-28T13-51-17-0336.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/index-2025-01-28T13-51-17-0336.json new file mode 100644 index 0000000..21073d1 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/index-2025-01-28T13-51-17-0336.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe", + "cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe", + "ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe", + "root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + "version" : + { + "isDirty" : true, + "major" : 3, + "minor" : 22, + "patch" : 1, + "string" : "3.22.1-g37088a8-dirty", + "suffix" : "g37088a8" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-403f449ccc5e4620b9f6.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + }, + { + "jsonFile" : "cache-v2-b3379d373718fcc18475.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-2f46d3f5a83a5161e24f.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-b3379d373718fcc18475.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-2f46d3f5a83a5161e24f.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-403f449ccc5e4620b9f6.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + } + } + } +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-e1a9eeb6c5a22e215e2f.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-e1a9eeb6c5a22e215e2f.json new file mode 100644 index 0000000..c96c5da --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-e1a9eeb6c5a22e215e2f.json @@ -0,0 +1,342 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "add_definitions", + "target_include_directories" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 119, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 132, + "parent" : 0 + }, + { + "command" : 2, + "file" : 0, + "line" : 130, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 124, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "backtrace" : 3, + "define" : "HAVE_PTHREAD" + }, + { + "define" : "baresip_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include" + } + ], + "language" : "C", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + } + ], + "id" : "baresip::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-landroid", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lEGL", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv2", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv1_CM", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-laaudio", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\baresip\\lib\\arm64-v8a\\libbaresip.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\re\\lib\\arm64-v8a\\libre.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libssl.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libcrypto.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\opus\\lib\\arm64-v8a\\libopus.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\x264\\lib\\arm64-v8a\\libx264.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\aom\\lib\\arm64-v8a\\libaom.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\png\\lib\\arm64-v8a\\libpng.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\vpx\\lib\\arm64-v8a\\libvpx.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\spandsp\\lib\\arm64-v8a\\libspandsp.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g7221\\lib\\arm64-v8a\\libg722_1.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g729\\lib\\arm64-v8a\\libbcg729.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\codec2\\lib\\arm64-v8a\\libcodec2.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrnb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwbenc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\webrtc\\lib\\arm64-v8a\\libwebrtc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\gzrtp\\lib\\arm64-v8a\\libzrtpcppcore.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\sndfile\\lib\\arm64-v8a\\libsndfile.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lz", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-llog", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lcamera2ndk", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libcpu_features.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libndk_compat.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lmediandk", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "C", + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + }, + "name" : "baresip", + "nameOnDisk" : "libbaresip.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "baresip.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "vidisp.c", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_deps b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_deps new file mode 100644 index 0000000..8447755 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_deps differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_log b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_log new file mode 100644 index 0000000..34f3b66 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/.ninja_log @@ -0,0 +1,22 @@ +# ninja log v5 +17 395 7597756561451012 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +2 713 7597756564607143 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +715 1518 7597756572121788 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 +0 11 0 clean 267b28daf0e986 +3 134 7597825090087316 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +6 293 7597825091650740 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +293 469 7597825093160580 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 +0 9 0 clean 267b28daf0e986 +0 10 0 clean 267b28daf0e986 +6 158 7597848643128397 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +2 267 7597848644203242 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +267 449 7597848645766725 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 +6 130 7597870029065878 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +3 234 7597870030091872 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +234 398 7597870031465931 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 +2 122 7597876962979604 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +6 218 7597876963937218 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +219 383 7597876965324752 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 +2 441 7600398483687521 CMakeFiles/baresip.dir/vidisp.c.o 8c29680928d723b0 +13 505 7600398484332427 CMakeFiles/baresip.dir/baresip.c.o 55ac2bab0a666334 +505 816 7600398487205224 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so 59cb5998f88ab366 diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeCache.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000..2e21c74 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeCache.txt @@ -0,0 +1,397 @@ +# This is the CMakeCache file. +# For build in directory: d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a +# It was generated by CMake: D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-28 + +//No help, variable specified on the command line. +ANDROID_STL:UNINITIALIZED=c++_shared + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//Archiver +CMAKE_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING=-DHAVE_INTTYPES_H -lstdc++ + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/baresip+ + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=baresip+ + +//Ranlib +CMAKE_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=28 + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +baresip+_BINARY_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a + +//Value Computed by CMake +baresip+_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +baresip+_SOURCE_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +//Dependencies for the target +baresip_LIB_DEPENDS:STATIC=general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake new file mode 100644 index 0000000..00cf495 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.3") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..7acc118 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.3") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000..36fd789 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000..a995872 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake new file mode 100644 index 0000000..1141296 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..41b99d7 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,803 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..054e438 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..25c62a8 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,791 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..e8b15ac Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeOutput.log b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..ffb90f1 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,274 @@ +The target system is: Android - 1 - aarch64 +The host system is: Windows - 10.0.19045 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;-DHAVE_INTTYPES_H;-lstdc++ +Id flags: -c;--target=aarch64-none-linux-android28 + +The output was: +0 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;; +Id flags: -c;--target=aarch64-none-linux-android28 + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_15cd4 && [1/2] Building C object CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android28 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android28 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_15cd4.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_15cd4 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android28 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_15cd4 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_15cd4 && [1/2] Building C object CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android28] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android28 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_15cd4.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_15cd4] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android28] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_15cd4 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_15cd4] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [-lc++] ==> lib [c++] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_15cd4.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_7be06 && [1/2] Building CXX object CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android28 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android28 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_7be06.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_7be06 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android28 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_7be06 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_7be06 && [1/2] Building CXX object CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android28] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android28 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_7be06.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_7be06] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android28] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_7be06 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_7be06] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_7be06.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lm] ==> lib [m] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/28;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/TargetDirectories.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..9a9ee3f --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/edit_cache.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o new file mode 100644 index 0000000..07e2b66 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o new file mode 100644 index 0000000..20a09f6 Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/cmake.check_cache b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/rules.ninja b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..265928c --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling C files. + +rule C_COMPILER__baresip_Debug + depfile = $DEP_FILE + deps = gcc + command = D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android28 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building C object $out + + +############################################# +# Rule for linking C shared library. + +rule C_SHARED_LIBRARY_LINKER__baresip_Debug + command = cmd.exe /C "$PRE_LINK && D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android28 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE @$RSP_FILE && $POST_BUILD" + description = Linking C shared library $TARGET_FILE + rspfile = $RSP_FILE + rspfile_content = $in $LINK_PATH $LINK_LIBRARIES + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/additional_project_files.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..5ae94d2 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build.json @@ -0,0 +1,46 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\2a1t5c4e\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\2a1t5c4e\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "arm64-v8a", + "artifactName": "baresip", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\2a1t5c4e\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", + "cppCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build_mini.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..c056ce2 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,35 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\2a1t5c4e\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\2a1t5c4e\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "artifactName": "baresip", + "abi": "arm64-v8a", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\2a1t5c4e\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + } +} \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build.ninja b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build.ninja new file mode 100644 index 0000000..0439a89 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build.ninja @@ -0,0 +1,166 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target baresip + + +############################################# +# Order-only phony target for baresip + +build cmake_object_order_depends_target_baresip: phony || CMakeFiles/baresip.dir + +build CMakeFiles/baresip.dir/baresip.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/baresip.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\baresip.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a\libbaresip.pdb + +build CMakeFiles/baresip.dir/vidisp.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/vidisp.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\vidisp.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a\libbaresip.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target baresip + + +############################################# +# Link the shared library D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a\libbaresip.so + +build D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so: C_SHARED_LIBRARY_LINKER__baresip_Debug CMakeFiles/baresip.dir/baresip.c.o CMakeFiles/baresip.dir/vidisp.c.o | D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info + LINK_FLAGS = -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments + LINK_LIBRARIES = -landroid -lEGL -lGLESv2 -lGLESv1_CM -laaudio D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a -lz -llog -lcamera2ndk D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a -lmediandk -latomic -lm + OBJECT_DIR = CMakeFiles\baresip.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libbaresip.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_FILE = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a\libbaresip.so + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a\libbaresip.pdb + RSP_FILE = CMakeFiles\baresip.rsp + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe -E echo "No interactive CMake dialog available."" + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build baresip: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so + +build libbaresip.so: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a + +build all: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/2a1t5c4e/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build_file_index.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build_file_index.txt new file mode 100644 index 0000000..531fa14 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/build_file_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/cmake_install.cmake b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000..1ac8221 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/baresip+") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..7783e6e --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android28 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/2a1t5c4e/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android28 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json.bin b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json.bin new file mode 100644 index 0000000..f455d5a Binary files /dev/null and b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/compile_commands.json.bin differ diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/configure_fingerprint.bin b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/configure_fingerprint.bin new file mode 100644 index 0000000..d99c17e --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Logl +j +hD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\android_gradle_build.json  2 2n +l +jD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\android_gradle_build_mini.json  2 2[ +Y +WD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\build.ninja  2Ԇ 2_ +] +[D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\build.ninja.txt  2d +b +`D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\build_file_index.txt  2 I 2e +c +aD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\compile_commands.json  2 2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\compile_commands.json.bin  2  2o +m +kD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\metadata_generation_command.txt  2 + 2b +` +^D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\prefab_config.json  2  ( 2g +e +cD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a\symbol_folder_index.txt  2  b 2M +K +ID:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt  2 . ؉2 \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/metadata_generation_command.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/metadata_generation_command.txt new file mode 100644 index 0000000..40057a4 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/metadata_generation_command.txt @@ -0,0 +1,20 @@ + -HD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=28 +-DANDROID_PLATFORM=android-28 +-DANDROID_ABI=arm64-v8a +-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a +-DANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_ANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_TOOLCHAIN_FILE=D:\Android\sdk\ndk\27.2.12479018\build\cmake\android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a +-DCMAKE_BUILD_TYPE=Debug +-BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\2a1t5c4e\arm64-v8a +-GNinja +-DANDROID_STL=c++_shared + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/prefab_config.json b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/arm64-v8a/symbol_folder_index.txt b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/symbol_folder_index.txt new file mode 100644 index 0000000..18fa8eb --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/arm64-v8a/symbol_folder_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\2a1t5c4e\obj\arm64-v8a \ No newline at end of file diff --git a/app/.cxx/Debug/2a1t5c4e/hash_key.txt b/app/.cxx/Debug/2a1t5c4e/hash_key.txt new file mode 100644 index 0000000..483ff24 --- /dev/null +++ b/app/.cxx/Debug/2a1t5c4e/hash_key.txt @@ -0,0 +1,27 @@ +# Values used to calculate the hash in this folder name. +# Should not depend on the absolute path of the project itself. +# - AGP: 8.1.1. +# - $NDK is the path to NDK 27.2.12479018. +# - $PROJECT is the path to the parent folder of the root Gradle build file. +# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. +# - $HASH is the hash value computed from this text. +# - $CMAKE is the path to CMake 3.22.1. +# - $NINJA is the path to Ninja. +-H$PROJECT/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=28 +-DANDROID_PLATFORM=android-28 +-DANDROID_ABI=$ABI +-DCMAKE_ANDROID_ARCH_ABI=$ABI +-DANDROID_NDK=$NDK +-DCMAKE_ANDROID_NDK=$NDK +-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=$NINJA +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_BUILD_TYPE=Debug +-B$PROJECT/app/.cxx/Debug/$HASH/$ABI +-GNinja +-DANDROID_STL=c++_shared \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cache-v2-b7284a11ce9428a8eab6.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cache-v2-b7284a11ce9428a8eab6.json new file mode 100644 index 0000000..46281f3 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cache-v2-b7284a11ce9428a8eab6.json @@ -0,0 +1,1343 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-27" + }, + { + "name" : "ANDROID_STL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "c++_shared" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "22" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "-DHAVE_INTTYPES_H -lstdc++" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "C:/Program Files (x86)/baresip+" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\3ftx7333\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "baresip+" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\3ftx7333\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "27" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "baresip+_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a" + }, + { + "name" : "baresip+_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "baresip+_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "baresip_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-9267183061b6cf92efbb.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-9267183061b6cf92efbb.json new file mode 100644 index 0000000..08bdcba --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-9267183061b6cf92efbb.json @@ -0,0 +1,803 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1d3b511bc3de2197c0d5.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1d3b511bc3de2197c0d5.json new file mode 100644 index 0000000..9e20822 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1d3b511bc3de2197c0d5.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", + "minimumCMakeVersion" : + { + "string" : "3.4.1" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "baresip+", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "baresip::@6890427a1f51a3e7e1df", + "jsonFile" : "target-baresip-Debug-ce09f828cdef42a5d90e.json", + "name" : "baresip", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 3 + } +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/index-2025-02-24T01-59-12-0145.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/index-2025-02-24T01-59-12-0145.json new file mode 100644 index 0000000..9a4b4e3 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/index-2025-02-24T01-59-12-0145.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe", + "cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe", + "ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe", + "root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + "version" : + { + "isDirty" : true, + "major" : 3, + "minor" : 22, + "patch" : 1, + "string" : "3.22.1-g37088a8-dirty", + "suffix" : "g37088a8" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-1d3b511bc3de2197c0d5.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + }, + { + "jsonFile" : "cache-v2-b7284a11ce9428a8eab6.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-9267183061b6cf92efbb.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-b7284a11ce9428a8eab6.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-9267183061b6cf92efbb.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-1d3b511bc3de2197c0d5.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + } + } + } +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-ce09f828cdef42a5d90e.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-ce09f828cdef42a5d90e.json new file mode 100644 index 0000000..f40e603 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-ce09f828cdef42a5d90e.json @@ -0,0 +1,342 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/3ftx7333/obj/arm64-v8a/libbaresip.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "add_definitions", + "target_include_directories" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 119, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 132, + "parent" : 0 + }, + { + "command" : 2, + "file" : 0, + "line" : 130, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 124, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "backtrace" : 3, + "define" : "HAVE_PTHREAD" + }, + { + "define" : "baresip_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include" + } + ], + "language" : "C", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + } + ], + "id" : "baresip::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-landroid", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lEGL", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv2", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv1_CM", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-laaudio", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\baresip\\lib\\arm64-v8a\\libbaresip.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\re\\lib\\arm64-v8a\\libre.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libssl.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libcrypto.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\opus\\lib\\arm64-v8a\\libopus.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\x264\\lib\\arm64-v8a\\libx264.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\aom\\lib\\arm64-v8a\\libaom.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\png\\lib\\arm64-v8a\\libpng.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\vpx\\lib\\arm64-v8a\\libvpx.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\spandsp\\lib\\arm64-v8a\\libspandsp.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g7221\\lib\\arm64-v8a\\libg722_1.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g729\\lib\\arm64-v8a\\libbcg729.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\codec2\\lib\\arm64-v8a\\libcodec2.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrnb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwbenc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\webrtc\\lib\\arm64-v8a\\libwebrtc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\gzrtp\\lib\\arm64-v8a\\libzrtpcppcore.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\sndfile\\lib\\arm64-v8a\\libsndfile.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lz", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-llog", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lcamera2ndk", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libcpu_features.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libndk_compat.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lmediandk", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "C", + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + }, + "name" : "baresip", + "nameOnDisk" : "libbaresip.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "baresip.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "vidisp.c", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_deps b/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_deps new file mode 100644 index 0000000..9d558ec Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_deps differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_log b/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_log new file mode 100644 index 0000000..1da7d09 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/.ninja_log @@ -0,0 +1,3 @@ +# ninja log v5 +6 280 7620655717852754 CMakeFiles/baresip.dir/vidisp.c.o 801b18bac13c4ae5 +2 376 7620655718752948 CMakeFiles/baresip.dir/baresip.c.o 3d5cbee60df8fdb8 diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeCache.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000..1589ec3 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeCache.txt @@ -0,0 +1,397 @@ +# This is the CMakeCache file. +# For build in directory: d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a +# It was generated by CMake: D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-27 + +//No help, variable specified on the command line. +ANDROID_STL:UNINITIALIZED=c++_shared + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//Archiver +CMAKE_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING=-DHAVE_INTTYPES_H -lstdc++ + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/baresip+ + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=baresip+ + +//Ranlib +CMAKE_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=27 + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +baresip+_BINARY_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a + +//Value Computed by CMake +baresip+_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +baresip+_SOURCE_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +//Dependencies for the target +baresip_LIB_DEPENDS:STATIC=general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake new file mode 100644 index 0000000..cf3de98 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.3") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..c90d585 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.3") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000..f7c51ee Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000..6371d2b Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake new file mode 100644 index 0000000..1141296 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..41b99d7 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,803 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..482b427 Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..25c62a8 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,791 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..c9eb7f7 Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeOutput.log b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..0da57e5 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,274 @@ +The target system is: Android - 1 - aarch64 +The host system is: Windows - 10.0.19045 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;-DHAVE_INTTYPES_H;-lstdc++ +Id flags: -c;--target=aarch64-none-linux-android27 + +The output was: +0 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;; +Id flags: -c;--target=aarch64-none-linux-android27 + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_834a4 && [1/2] Building C object CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android27 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android27 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_834a4.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_834a4 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android27 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_834a4 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_834a4 && [1/2] Building C object CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android27] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android27 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_834a4.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_834a4] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android27] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_834a4 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_834a4] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [-lc++] ==> lib [c++] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_834a4.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_e7fb0 && [1/2] Building CXX object CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android27 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android27 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_e7fb0.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_e7fb0 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android27 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_e7fb0 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_e7fb0 && [1/2] Building CXX object CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android27] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android27 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_e7fb0.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_e7fb0] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android27] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_e7fb0 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_e7fb0] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_e7fb0.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lm] ==> lib [m] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/27;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/TargetDirectories.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..178eaba --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/edit_cache.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o new file mode 100644 index 0000000..f7384f4 Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/baresip.c.o differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o new file mode 100644 index 0000000..0fbe5c6 Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.dir/vidisp.c.o differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.rsp b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.rsp new file mode 100644 index 0000000..d33b7dc --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/baresip.rsp @@ -0,0 +1 @@ +CMakeFiles/baresip.dir/baresip.c.o CMakeFiles/baresip.dir/vidisp.c.o -landroid -lEGL -lGLESv2 -lGLESv1_CM -laaudio D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a -lz -llog -lcamera2ndk D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a -lmediandk -latomic -lm \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/cmake.check_cache b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/rules.ninja b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..20ae260 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling C files. + +rule C_COMPILER__baresip_Debug + depfile = $DEP_FILE + deps = gcc + command = D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building C object $out + + +############################################# +# Rule for linking C shared library. + +rule C_SHARED_LIBRARY_LINKER__baresip_Debug + command = cmd.exe /C "$PRE_LINK && D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE @$RSP_FILE && $POST_BUILD" + description = Linking C shared library $TARGET_FILE + rspfile = $RSP_FILE + rspfile_content = $in $LINK_PATH $LINK_LIBRARIES + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/additional_project_files.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..0bf499b --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build.json @@ -0,0 +1,46 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\3ftx7333\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\3ftx7333\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "arm64-v8a", + "artifactName": "baresip", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\3ftx7333\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", + "cppCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build_mini.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..f788fc6 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,35 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\3ftx7333\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\3ftx7333\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "artifactName": "baresip", + "abi": "arm64-v8a", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\3ftx7333\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + } +} \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/build.ninja b/app/.cxx/Debug/3ftx7333/arm64-v8a/build.ninja new file mode 100644 index 0000000..af786d4 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/build.ninja @@ -0,0 +1,166 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target baresip + + +############################################# +# Order-only phony target for baresip + +build cmake_object_order_depends_target_baresip: phony || CMakeFiles/baresip.dir + +build CMakeFiles/baresip.dir/baresip.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/baresip.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\baresip.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a\libbaresip.pdb + +build CMakeFiles/baresip.dir/vidisp.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/vidisp.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\vidisp.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a\libbaresip.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target baresip + + +############################################# +# Link the shared library D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a\libbaresip.so + +build D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/3ftx7333/obj/arm64-v8a/libbaresip.so: C_SHARED_LIBRARY_LINKER__baresip_Debug CMakeFiles/baresip.dir/baresip.c.o CMakeFiles/baresip.dir/vidisp.c.o | D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info + LINK_FLAGS = -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments + LINK_LIBRARIES = -landroid -lEGL -lGLESv2 -lGLESv1_CM -laaudio D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a -lz -llog -lcamera2ndk D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a -lmediandk -latomic -lm + OBJECT_DIR = CMakeFiles\baresip.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libbaresip.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_FILE = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a\libbaresip.so + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a\libbaresip.pdb + RSP_FILE = CMakeFiles\baresip.rsp + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe -E echo "No interactive CMake dialog available."" + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build baresip: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/3ftx7333/obj/arm64-v8a/libbaresip.so + +build libbaresip.so: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/3ftx7333/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a + +build all: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/3ftx7333/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/build_file_index.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/build_file_index.txt new file mode 100644 index 0000000..531fa14 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/build_file_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/cmake_install.cmake b/app/.cxx/Debug/3ftx7333/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000..55d154f --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/baresip+") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..56bb572 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json.bin b/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json.bin new file mode 100644 index 0000000..189a3a6 Binary files /dev/null and b/app/.cxx/Debug/3ftx7333/arm64-v8a/compile_commands.json.bin differ diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/configure_fingerprint.bin b/app/.cxx/Debug/3ftx7333/arm64-v8a/configure_fingerprint.bin new file mode 100644 index 0000000..4030cb8 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Logl +j +hD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\android_gradle_build.json  2 2n +l +jD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\android_gradle_build_mini.json  2 2[ +Y +WD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\build.ninja  2Ԇ 2_ +] +[D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\build.ninja.txt  2d +b +`D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\build_file_index.txt  2 I 2e +c +aD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\compile_commands.json  2 2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\compile_commands.json.bin  2  2o +m +kD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\metadata_generation_command.txt  2 + 2b +` +^D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\prefab_config.json  2  ( 2g +e +cD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a\symbol_folder_index.txt  2  b 2M +K +ID:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt  2 . ؉2 \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/metadata_generation_command.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/metadata_generation_command.txt new file mode 100644 index 0000000..421c728 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/metadata_generation_command.txt @@ -0,0 +1,20 @@ + -HD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=27 +-DANDROID_PLATFORM=android-27 +-DANDROID_ABI=arm64-v8a +-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a +-DANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_ANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_TOOLCHAIN_FILE=D:\Android\sdk\ndk\27.2.12479018\build\cmake\android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a +-DCMAKE_BUILD_TYPE=Debug +-BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\3ftx7333\arm64-v8a +-GNinja +-DANDROID_STL=c++_shared + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/prefab_config.json b/app/.cxx/Debug/3ftx7333/arm64-v8a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/arm64-v8a/symbol_folder_index.txt b/app/.cxx/Debug/3ftx7333/arm64-v8a/symbol_folder_index.txt new file mode 100644 index 0000000..8088f5e --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/arm64-v8a/symbol_folder_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\3ftx7333\obj\arm64-v8a \ No newline at end of file diff --git a/app/.cxx/Debug/3ftx7333/hash_key.txt b/app/.cxx/Debug/3ftx7333/hash_key.txt new file mode 100644 index 0000000..5bf22b7 --- /dev/null +++ b/app/.cxx/Debug/3ftx7333/hash_key.txt @@ -0,0 +1,27 @@ +# Values used to calculate the hash in this folder name. +# Should not depend on the absolute path of the project itself. +# - AGP: 8.1.1. +# - $NDK is the path to NDK 27.2.12479018. +# - $PROJECT is the path to the parent folder of the root Gradle build file. +# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. +# - $HASH is the hash value computed from this text. +# - $CMAKE is the path to CMake 3.22.1. +# - $NINJA is the path to Ninja. +-H$PROJECT/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=27 +-DANDROID_PLATFORM=android-27 +-DANDROID_ABI=$ABI +-DCMAKE_ANDROID_ARCH_ABI=$ABI +-DANDROID_NDK=$NDK +-DCMAKE_ANDROID_NDK=$NDK +-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=$NINJA +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_BUILD_TYPE=Debug +-B$PROJECT/app/.cxx/Debug/$HASH/$ABI +-GNinja +-DANDROID_STL=c++_shared \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cache-v2-94b7b778b9e201c5b673.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cache-v2-94b7b778b9e201c5b673.json new file mode 100644 index 0000000..c0efafc --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cache-v2-94b7b778b9e201c5b673.json @@ -0,0 +1,1343 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-29" + }, + { + "name" : "ANDROID_STL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "c++_shared" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "22" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "-DHAVE_INTTYPES_H -lstdc++" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "C:/Program Files (x86)/baresip+" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\6c5rc482\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "baresip+" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\6c5rc482\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "29" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "baresip+_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a" + }, + { + "name" : "baresip+_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "baresip+_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "baresip_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-434d2790e9d2a27b8096.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-434d2790e9d2a27b8096.json new file mode 100644 index 0000000..415b7e9 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-434d2790e9d2a27b8096.json @@ -0,0 +1,803 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b4d449e859306ae0ab12.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b4d449e859306ae0ab12.json new file mode 100644 index 0000000..320a7ce --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b4d449e859306ae0ab12.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", + "minimumCMakeVersion" : + { + "string" : "3.4.1" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "baresip+", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "baresip::@6890427a1f51a3e7e1df", + "jsonFile" : "target-baresip-Debug-7d86db7aa4b05fd25cfb.json", + "name" : "baresip", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 3 + } +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/index-2025-02-05T15-34-16-0554.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/index-2025-02-05T15-34-16-0554.json new file mode 100644 index 0000000..818c758 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/index-2025-02-05T15-34-16-0554.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe", + "cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe", + "ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe", + "root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + "version" : + { + "isDirty" : true, + "major" : 3, + "minor" : 22, + "patch" : 1, + "string" : "3.22.1-g37088a8-dirty", + "suffix" : "g37088a8" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-b4d449e859306ae0ab12.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + }, + { + "jsonFile" : "cache-v2-94b7b778b9e201c5b673.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-434d2790e9d2a27b8096.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-94b7b778b9e201c5b673.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-434d2790e9d2a27b8096.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-b4d449e859306ae0ab12.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + } + } + } +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-7d86db7aa4b05fd25cfb.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-7d86db7aa4b05fd25cfb.json new file mode 100644 index 0000000..7d9ee2d --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.cmake/api/v1/reply/target-baresip-Debug-7d86db7aa4b05fd25cfb.json @@ -0,0 +1,342 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "add_definitions", + "target_include_directories" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 119, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 132, + "parent" : 0 + }, + { + "command" : 2, + "file" : 0, + "line" : 130, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 124, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "backtrace" : 3, + "define" : "HAVE_PTHREAD" + }, + { + "define" : "baresip_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include" + } + ], + "language" : "C", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + } + ], + "id" : "baresip::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-landroid", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lEGL", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv2", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv1_CM", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-laaudio", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\baresip\\lib\\arm64-v8a\\libbaresip.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\re\\lib\\arm64-v8a\\libre.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libssl.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libcrypto.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\opus\\lib\\arm64-v8a\\libopus.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\x264\\lib\\arm64-v8a\\libx264.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\aom\\lib\\arm64-v8a\\libaom.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\png\\lib\\arm64-v8a\\libpng.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\vpx\\lib\\arm64-v8a\\libvpx.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\spandsp\\lib\\arm64-v8a\\libspandsp.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g7221\\lib\\arm64-v8a\\libg722_1.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g729\\lib\\arm64-v8a\\libbcg729.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\codec2\\lib\\arm64-v8a\\libcodec2.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrnb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwbenc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\webrtc\\lib\\arm64-v8a\\libwebrtc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\gzrtp\\lib\\arm64-v8a\\libzrtpcppcore.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\sndfile\\lib\\arm64-v8a\\libsndfile.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lz", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-llog", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lcamera2ndk", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libcpu_features.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libndk_compat.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lmediandk", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "C", + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + }, + "name" : "baresip", + "nameOnDisk" : "libbaresip.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "baresip.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "vidisp.c", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_deps b/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_deps new file mode 100644 index 0000000..bd0bf77 Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_deps differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_log b/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_log new file mode 100644 index 0000000..14e64cb --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/.ninja_log @@ -0,0 +1,43 @@ +# ninja log v5 +2 127 7625318267107335 CMakeFiles/baresip.dir/vidisp.c.o 83d28fd78083785d +3 460 7626736890925131 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +461 667 7626736892703533 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +0 9 0 clean 267b28daf0e986 +3 343 7626737215097977 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +343 513 7626737216573473 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 235 7626737654140007 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +235 406 7626737655546670 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +4 465 7626739853173947 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +466 951 7626739857219322 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 224 7626740404946268 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +224 409 7626740406519463 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 314 7627164164705516 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +315 542 7627164166718426 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 229 7627168484978045 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +230 410 7627168486306956 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 288 7627170240057618 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +288 489 7627170241777391 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 209 7627179868188684 CMakeFiles/baresip.dir/baresip.c.o 353ae01ad0dfe97d +210 359 7627179869458965 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 167 7627184488887449 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 189 7627188974496780 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 170 7627191650786911 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 172 7627193128616350 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 164 7627195881951121 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 164 7627197112475025 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 155 7627200522264783 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 182 7627201322552678 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 197 7627201862917390 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 162 7627218566761453 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 150 7627219267825444 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 158 7627224053223468 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 160 7627225982238029 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 155 7627227911653666 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 222 7627257571597610 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 188 7627269717634709 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 189 7627274532334912 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 175 7627275777949660 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 165 7627278548702669 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +2 230 7627302266928047 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +3 187 7627307478169953 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so dbd2a0c696f27021 +0 7 0 clean 267b28daf0e986 diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeCache.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000..71a2806 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeCache.txt @@ -0,0 +1,397 @@ +# This is the CMakeCache file. +# For build in directory: d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a +# It was generated by CMake: D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-29 + +//No help, variable specified on the command line. +ANDROID_STL:UNINITIALIZED=c++_shared + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//Archiver +CMAKE_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING=-DHAVE_INTTYPES_H -lstdc++ + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/baresip+ + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=baresip+ + +//Ranlib +CMAKE_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=29 + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +baresip+_BINARY_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a + +//Value Computed by CMake +baresip+_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +baresip+_SOURCE_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +//Dependencies for the target +baresip_LIB_DEPENDS:STATIC=general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake new file mode 100644 index 0000000..6ca1b27 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.3") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..49f9d3c --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.3") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000..ec2f24a Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000..56633ff Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake new file mode 100644 index 0000000..1141296 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..41b99d7 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,803 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..1a0b925 Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..25c62a8 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,791 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..dea32a6 Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeOutput.log b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..8388bf3 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,274 @@ +The target system is: Android - 1 - aarch64 +The host system is: Windows - 10.0.19045 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;-DHAVE_INTTYPES_H;-lstdc++ +Id flags: -c;--target=aarch64-none-linux-android29 + +The output was: +0 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;; +Id flags: -c;--target=aarch64-none-linux-android29 + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_30d98 && [1/2] Building C object CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_30d98.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_30d98 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_30d98 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_30d98 && [1/2] Building C object CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_30d98.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_30d98] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_30d98 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_30d98] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [-lc++] ==> lib [c++] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_30d98.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_2cf37 && [1/2] Building CXX object CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_2cf37.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_2cf37 +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_2cf37 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_2cf37 && [1/2] Building CXX object CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_2cf37.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_2cf37] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_2cf37 D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_2cf37] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_2cf37.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lm] ==> lib [m] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/TargetDirectories.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..45a65c2 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/baresip.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/edit_cache.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/cmake.check_cache b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/rules.ninja b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..bfa16e3 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling C files. + +rule C_COMPILER__baresip_Debug + depfile = $DEP_FILE + deps = gcc + command = D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building C object $out + + +############################################# +# Rule for linking C shared library. + +rule C_SHARED_LIBRARY_LINKER__baresip_Debug + command = cmd.exe /C "$PRE_LINK && D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE @$RSP_FILE && $POST_BUILD" + description = Linking C shared library $TARGET_FILE + rspfile = $RSP_FILE + rspfile_content = $in $LINK_PATH $LINK_LIBRARIES + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/additional_project_files.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..28fef5c --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build.json @@ -0,0 +1,46 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\6c5rc482\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\6c5rc482\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "arm64-v8a", + "artifactName": "baresip", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\6c5rc482\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", + "cppCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build_mini.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..95b9993 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,35 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\6c5rc482\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\Debug\\6c5rc482\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "artifactName": "baresip", + "abi": "arm64-v8a", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\Debug\\6c5rc482\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + } +} \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/build.ninja b/app/.cxx/Debug/6c5rc482/arm64-v8a/build.ninja new file mode 100644 index 0000000..ec04553 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/build.ninja @@ -0,0 +1,166 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: baresip+ +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target baresip + + +############################################# +# Order-only phony target for baresip + +build cmake_object_order_depends_target_baresip: phony || CMakeFiles/baresip.dir + +build CMakeFiles/baresip.dir/baresip.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/baresip.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\baresip.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a\libbaresip.pdb + +build CMakeFiles/baresip.dir/vidisp.c.o: C_COMPILER__baresip_Debug D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/vidisp.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\vidisp.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a\libbaresip.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target baresip + + +############################################# +# Link the shared library D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a\libbaresip.so + +build D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so: C_SHARED_LIBRARY_LINKER__baresip_Debug CMakeFiles/baresip.dir/baresip.c.o CMakeFiles/baresip.dir/vidisp.c.o | D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info + LINK_FLAGS = -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments + LINK_LIBRARIES = -landroid -lEGL -lGLESv2 -lGLESv1_CM -laaudio D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a -lz -llog -lcamera2ndk D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a -lmediandk -latomic -lm + OBJECT_DIR = CMakeFiles\baresip.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libbaresip.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_FILE = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a\libbaresip.so + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a\libbaresip.pdb + RSP_FILE = CMakeFiles\baresip.rsp + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe -E echo "No interactive CMake dialog available."" + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build baresip: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so + +build libbaresip.so: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a + +build all: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/Debug/6c5rc482/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/build_file_index.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/build_file_index.txt new file mode 100644 index 0000000..531fa14 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/build_file_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/cmake_install.cmake b/app/.cxx/Debug/6c5rc482/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000..e887af8 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/baresip+") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..fb84518 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/6c5rc482/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json.bin b/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json.bin new file mode 100644 index 0000000..6980638 Binary files /dev/null and b/app/.cxx/Debug/6c5rc482/arm64-v8a/compile_commands.json.bin differ diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/configure_fingerprint.bin b/app/.cxx/Debug/6c5rc482/arm64-v8a/configure_fingerprint.bin new file mode 100644 index 0000000..104070a --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Logl +j +hD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\android_gradle_build.json  2 2n +l +jD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\android_gradle_build_mini.json  2 2[ +Y +WD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\build.ninja  2Ԇ 2_ +] +[D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\build.ninja.txt  2d +b +`D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\build_file_index.txt  2 I 2e +c +aD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\compile_commands.json  2 2i +g +eD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\compile_commands.json.bin  2  2o +m +kD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\metadata_generation_command.txt  2 + 2b +` +^D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\prefab_config.json  2  ( 2g +e +cD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a\symbol_folder_index.txt  2  b 2M +K +ID:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt  2 . ؉2 \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/metadata_generation_command.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/metadata_generation_command.txt new file mode 100644 index 0000000..6bc84a1 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/metadata_generation_command.txt @@ -0,0 +1,20 @@ + -HD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=29 +-DANDROID_PLATFORM=android-29 +-DANDROID_ABI=arm64-v8a +-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a +-DANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_ANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_TOOLCHAIN_FILE=D:\Android\sdk\ndk\27.2.12479018\build\cmake\android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a +-DCMAKE_BUILD_TYPE=Debug +-BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\Debug\6c5rc482\arm64-v8a +-GNinja +-DANDROID_STL=c++_shared + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/prefab_config.json b/app/.cxx/Debug/6c5rc482/arm64-v8a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/arm64-v8a/symbol_folder_index.txt b/app/.cxx/Debug/6c5rc482/arm64-v8a/symbol_folder_index.txt new file mode 100644 index 0000000..4c5db09 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/arm64-v8a/symbol_folder_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\Debug\6c5rc482\obj\arm64-v8a \ No newline at end of file diff --git a/app/.cxx/Debug/6c5rc482/hash_key.txt b/app/.cxx/Debug/6c5rc482/hash_key.txt new file mode 100644 index 0000000..9f566f8 --- /dev/null +++ b/app/.cxx/Debug/6c5rc482/hash_key.txt @@ -0,0 +1,27 @@ +# Values used to calculate the hash in this folder name. +# Should not depend on the absolute path of the project itself. +# - AGP: 8.1.1. +# - $NDK is the path to NDK 27.2.12479018. +# - $PROJECT is the path to the parent folder of the root Gradle build file. +# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. +# - $HASH is the hash value computed from this text. +# - $CMAKE is the path to CMake 3.22.1. +# - $NINJA is the path to Ninja. +-H$PROJECT/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=29 +-DANDROID_PLATFORM=android-29 +-DANDROID_ABI=$ABI +-DCMAKE_ANDROID_ARCH_ABI=$ABI +-DANDROID_NDK=$NDK +-DCMAKE_ANDROID_NDK=$NDK +-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=$NINJA +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_BUILD_TYPE=Debug +-B$PROJECT/app/.cxx/Debug/$HASH/$ABI +-GNinja +-DANDROID_STL=c++_shared \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cache-v2-092a51ac6f53a0578778.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cache-v2-092a51ac6f53a0578778.json new file mode 100644 index 0000000..aa59dd3 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cache-v2-092a51ac6f53a0578778.json @@ -0,0 +1,1343 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-29" + }, + { + "name" : "ANDROID_STL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "c++_shared" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\ndk\\27.2.12479018" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "RelWithDebInfo" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "22" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "(This variable does not exist and should not be used)" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "-DHAVE_INTTYPES_H -lstdc++" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "C:/Program Files (x86)/baresip+" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\RelWithDebInfo\\1s722i60\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "baresip+" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\RelWithDebInfo\\1s722i60\\obj\\arm64-v8a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "29" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "baresip+_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a" + }, + { + "name" : "baresip+_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "baresip+_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + { + "name" : "baresip_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-bff83105f4bcb64bddfc.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-bff83105f4bcb64bddfc.json new file mode 100644 index 0000000..a508a43 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-bff83105f4bcb64bddfc.json @@ -0,0 +1,803 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "D:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-c912d17fa9035b1c52ab.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-c912d17fa9035b1c52ab.json new file mode 100644 index 0000000..ed82c69 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-c912d17fa9035b1c52ab.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-RelWithDebInfo-d0094a50bb2071803777.json", + "minimumCMakeVersion" : + { + "string" : "3.4.1" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "RelWithDebInfo", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "baresip+", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "baresip::@6890427a1f51a3e7e1df", + "jsonFile" : "target-baresip-RelWithDebInfo-401cab9342ce03767201.json", + "name" : "baresip", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "source" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 3 + } +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/directory-.-RelWithDebInfo-d0094a50bb2071803777.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/index-2025-02-16T14-59-01-0044.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/index-2025-02-16T14-59-01-0044.json new file mode 100644 index 0000000..c725093 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/index-2025-02-16T14-59-01-0044.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe", + "cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe", + "ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe", + "root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22" + }, + "version" : + { + "isDirty" : true, + "major" : 3, + "minor" : 22, + "patch" : 1, + "string" : "3.22.1-g37088a8-dirty", + "suffix" : "g37088a8" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-c912d17fa9035b1c52ab.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + }, + { + "jsonFile" : "cache-v2-092a51ac6f53a0578778.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-bff83105f4bcb64bddfc.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-092a51ac6f53a0578778.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-bff83105f4bcb64bddfc.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-c912d17fa9035b1c52ab.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 3 + } + } + } + } +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/target-baresip-RelWithDebInfo-401cab9342ce03767201.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/target-baresip-RelWithDebInfo-401cab9342ce03767201.json new file mode 100644 index 0000000..60af6e8 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.cmake/api/v1/reply/target-baresip-RelWithDebInfo-401cab9342ce03767201.json @@ -0,0 +1,342 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "add_definitions", + "target_include_directories" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 119, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 132, + "parent" : 0 + }, + { + "command" : 2, + "file" : 0, + "line" : 130, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 124, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC" + } + ], + "defines" : + [ + { + "backtrace" : 3, + "define" : "HAVE_PTHREAD" + }, + { + "define" : "baresip_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include" + }, + { + "backtrace" : 4, + "path" : "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include" + } + ], + "language" : "C", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + } + ], + "id" : "baresip::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-landroid", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lEGL", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv2", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lGLESv1_CM", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-laaudio", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\baresip\\lib\\arm64-v8a\\libbaresip.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\re\\lib\\arm64-v8a\\libre.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libssl.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\openssl\\lib\\arm64-v8a\\libcrypto.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\opus\\lib\\arm64-v8a\\libopus.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\x264\\lib\\arm64-v8a\\libx264.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\aom\\lib\\arm64-v8a\\libaom.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\png\\lib\\arm64-v8a\\libpng.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\vpx\\lib\\arm64-v8a\\libvpx.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\spandsp\\lib\\arm64-v8a\\libspandsp.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g7221\\lib\\arm64-v8a\\libg722_1.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\g729\\lib\\arm64-v8a\\libbcg729.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\codec2\\lib\\arm64-v8a\\libcodec2.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrnb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwb.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\amr\\lib\\arm64-v8a\\libamrwbenc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\webrtc\\lib\\arm64-v8a\\libwebrtc.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\gzrtp\\lib\\arm64-v8a\\libzrtpcppcore.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\sndfile\\lib\\arm64-v8a\\libsndfile.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lz", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-llog", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lcamera2ndk", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libcpu_features.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\..\\..\\..\\..\\distribution.video\\cpu_features\\lib\\arm64-v8a\\libndk_compat.a", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lmediandk", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "C", + "sysroot" : + { + "path" : "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot" + } + }, + "name" : "baresip", + "nameOnDisk" : "libbaresip.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "baresip.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "vidisp.c", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_deps b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_deps new file mode 100644 index 0000000..6e85f4f Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_deps differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_log b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_log new file mode 100644 index 0000000..d5f752c --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/.ninja_log @@ -0,0 +1,5 @@ +# ninja log v5 +4 192 7614211413135098 CMakeFiles/baresip.dir/vidisp.c.o 3606101afbc2d204 +1 348 7614211414674491 CMakeFiles/baresip.dir/baresip.c.o c612d59fac9f8e64 +348 497 7614211415974791 D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so 90a2a7f1666c8ef4 +1 7 0 clean 267b28daf0e986 diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeCache.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000..2d29b98 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeCache.txt @@ -0,0 +1,397 @@ +# This is the CMakeCache file. +# For build in directory: d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a +# It was generated by CMake: D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-29 + +//No help, variable specified on the command line. +ANDROID_STL:UNINITIALIZED=c++_shared + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=D:\Android\sdk\ndk\27.2.12479018 + +//Archiver +CMAKE_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=RelWithDebInfo + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING=-DHAVE_INTTYPES_H -lstdc++ + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/baresip+ + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=baresip+ + +//Ranlib +CMAKE_RANLIB:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=29 + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +baresip+_BINARY_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a + +//Value Computed by CMake +baresip+_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +baresip+_SOURCE_DIR:STATIC=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +//Dependencies for the target +baresip_LIB_DEPENDS:STATIC=general;android;general;EGL;general;GLESv2;general;GLESv1_CM;general;aaudio;general;lib_baresip;general;lib_re;general;lib_ssl;general;lib_crypto;general;lib_opus;general;lib_avdevice;general;lib_avfilter;general;lib_swscale;general;lib_avformat;general;lib_avcodec;general;lib_x264;general;lib_aom;general;lib_png;general;lib_vpx;general;lib_avutil;general;lib_swresample;general;lib_spandsp;general;lib_g722_1;general;lib_g729;general;lib_codec2;general;lib_amrnb;general;lib_amrwb;general;lib_amrwbenc;general;lib_webrtc;general;lib_zrtpcppcore;general;lib_sndfile;general;z;general;log;general;camera2ndk;general;lib_cpu_features;general;lib_ndk_compat;general;mediandk; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake new file mode 100644 index 0000000..6ca1b27 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.3") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..49f9d3c --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.3") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe") +set(CMAKE_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe") +set(CMAKE_LINKER "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000..e02cd39 Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000..5f9ad37 Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake new file mode 100644 index 0000000..1141296 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("D:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..41b99d7 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,803 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..0a5a3e6 Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..25c62a8 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,791 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..7fc09df Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeOutput.log b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..4428d06 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,274 @@ +The target system is: Android - 1 - aarch64 +The host system is: Windows - 10.0.19045 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;-DHAVE_INTTYPES_H;-lstdc++ +Id flags: -c;--target=aarch64-none-linux-android29 + +The output was: +0 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe +Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security;; +Id flags: -c;--target=aarch64-none-linux-android29 + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_8069d && [1/2] Building C object CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 +clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument] + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_8069d.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_8069d +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_8069d D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_8069d && [1/2] Building C object CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_8069d.dir\\CMakeCCompilerABI.c.o.d" -MT CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -D HAVE_INTTYPES_H -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o -x c D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_8069d] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_8069d D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib -lc++ --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_8069d] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [-lc++] ==> lib [c++] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_8069d.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_596ba && [1/2] Building CXX object CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + (in-process) + "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_596ba.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include" +ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 + D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android + D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_596ba +Android (12470979, based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) +Target: aarch64-none-linux-android29 +Thread model: posix +InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin +Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4, version 11.4 + "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_596ba D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + implicit include dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):D:\Android\sdk\cmake\3.22.1\bin\ninja.exe cmTC_596ba && [1/2] Building CXX object CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + ignore line: [ (in-process)] + ignore line: [ "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" -cc1 -triple aarch64-none-linux-android29 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18" -dependency-file "CMakeFiles\\cmTC_596ba.dir\\CMakeCXXCompilerABI.cpp.o.d" -MT CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/include" -internal-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -x c++ D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.3 based upon LLVM 18.0.3 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64/lib/clang/18/include] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_596ba] + ignore line: [Android (12470979 based on r522817c) clang version 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android29] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin] + ignore line: [Found CUDA installation: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.4 version 11.4] + link line: [ "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld" --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_596ba D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o "-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64" -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android -LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lm "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl -lc "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a" -l:libunwind.a -ldl D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_596ba] ==> ignore + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o] + arg [-LD:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-LD:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_596ba.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lm] ==> lib [m] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] ==> obj [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64/lib/clang/18/lib/linux/aarch64] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] ==> [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29/crtend_android.o] + implicit dirs: [D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/29;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib] + implicit fwks: [] + + diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/TargetDirectories.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..6bdf0c7 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/baresip.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/edit_cache.dir +D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/cmake.check_cache b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/rules.ninja b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..e3fb6e5 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: baresip+ +# Configurations: RelWithDebInfo +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling C files. + +rule C_COMPILER__baresip_RelWithDebInfo + depfile = $DEP_FILE + deps = gcc + command = D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building C object $out + + +############################################# +# Rule for linking C shared library. + +rule C_SHARED_LIBRARY_LINKER__baresip_RelWithDebInfo + command = cmd.exe /C "$PRE_LINK && D:\Android\Sdk\ndk\27.2.12479018\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE @$RSP_FILE && $POST_BUILD" + description = Linking C shared library $TARGET_FILE + rspfile = $RSP_FILE + rspfile_content = $in $LINK_PATH $LINK_LIBRARIES + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = D:\Android\sdk\cmake\3.22.1\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/additional_project_files.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..b631651 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build.json @@ -0,0 +1,46 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\RelWithDebInfo\\1s722i60\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\RelWithDebInfo\\1s722i60\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "arm64-v8a", + "artifactName": "baresip", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\RelWithDebInfo\\1s722i60\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", + "cppCompilerExecutable": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build_mini.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..c8a8325 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,35 @@ +{ + "buildFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\RelWithDebInfo\\1s722i60\\arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "D:\\Android\\sdk\\cmake\\3.22.1\\bin\\ninja.exe", + "-C", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\.cxx\\RelWithDebInfo\\1s722i60\\arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "baresip::@6890427a1f51a3e7e1df": { + "artifactName": "baresip", + "abi": "arm64-v8a", + "output": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\build\\intermediates\\cxx\\RelWithDebInfo\\1s722i60\\obj\\arm64-v8a\\libbaresip.so", + "runtimeFiles": [ + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavdevice.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavfilter.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswscale.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavformat.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavcodec.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libavutil.so", + "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\distribution.video\\ffmpeg\\lib\\arm64-v8a\\libswresample.so" + ] + } + } +} \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build.ninja b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build.ninja new file mode 100644 index 0000000..bdf0770 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build.ninja @@ -0,0 +1,166 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.22 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: baresip+ +# Configurations: RelWithDebInfo +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = RelWithDebInfo +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target baresip + + +############################################# +# Order-only phony target for baresip + +build cmake_object_order_depends_target_baresip: phony || CMakeFiles/baresip.dir + +build CMakeFiles/baresip.dir/baresip.c.o: C_COMPILER__baresip_RelWithDebInfo D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/baresip.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\baresip.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a\libbaresip.pdb + +build CMakeFiles/baresip.dir/vidisp.c.o: C_COMPILER__baresip_RelWithDebInfo D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/vidisp.c || cmake_object_order_depends_target_baresip + DEFINES = -DHAVE_PTHREAD -Dbaresip_EXPORTS + DEP_FILE = CMakeFiles\baresip.dir\vidisp.c.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC + INCLUDES = -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include + OBJECT_DIR = CMakeFiles\baresip.dir + OBJECT_FILE_DIR = CMakeFiles\baresip.dir + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a\libbaresip.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target baresip + + +############################################# +# Link the shared library D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a\libbaresip.so + +build D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so: C_SHARED_LIBRARY_LINKER__baresip_RelWithDebInfo CMakeFiles/baresip.dir/baresip.c.o CMakeFiles/baresip.dir/vidisp.c.o | D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG + LINK_FLAGS = -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections + LINK_LIBRARIES = -landroid -lEGL -lGLESv2 -lGLESv1_CM -laaudio D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/lib/arm64-v8a/libbaresip.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/lib/arm64-v8a/libre.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libssl.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/lib/arm64-v8a/libcrypto.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/opus/lib/arm64-v8a/libopus.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/x264/lib/arm64-v8a/libx264.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/aom/lib/arm64-v8a/libaom.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/png/lib/arm64-v8a/libpng.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/vpx/lib/arm64-v8a/libvpx.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/spandsp/lib/arm64-v8a/libspandsp.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g7221/lib/arm64-v8a/libg722_1.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/g729/lib/arm64-v8a/libbcg729.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/codec2/lib/arm64-v8a/libcodec2.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrnb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwb.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/amr/lib/arm64-v8a/libamrwbenc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/sndfile/lib/arm64-v8a/libsndfile.a -lz -llog -lcamera2ndk D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a -lmediandk -latomic -lm + OBJECT_DIR = CMakeFiles\baresip.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libbaresip.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\baresip.dir\ + TARGET_FILE = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a\libbaresip.so + TARGET_PDB = D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a\libbaresip.pdb + RSP_FILE = CMakeFiles\baresip.rsp + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe -E echo "No interactive CMake dialog available."" + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a && D:\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp -BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build baresip: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so + +build libbaresip.so: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a + +build all: phony D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/build/intermediates/cxx/RelWithDebInfo/1s722i60/obj/arm64-v8a/libbaresip.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build CMakeCache.txt CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake D$:/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/abis.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android-legacy.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/flags.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Clang.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Determine.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android-Initialize.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Android.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/hooks/pre/Determine-Compiler.cmake D$:/Android/Sdk/ndk/27.2.12479018/build/cmake/platforms.cmake D$:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build_file_index.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build_file_index.txt new file mode 100644 index 0000000..531fa14 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/build_file_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/cmake_install.cmake b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000..95e402b --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/baresip+") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..943f6ff --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json.bin b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json.bin new file mode 100644 index 0000000..1b95726 Binary files /dev/null and b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/compile_commands.json.bin differ diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/configure_fingerprint.bin b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/configure_fingerprint.bin new file mode 100644 index 0000000..4daa073 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Logu +s +qD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  Ϯ2r +p +nD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\android_gradle_build.json  2 Ү2w +u +sD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\android_gradle_build_mini.json  2 宔2d +b +`D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\build.ninja  2 2h +f +dD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\build.ninja.txt  2m +k +iD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\build_file_index.txt  2 I 鮔2n +l +jD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\compile_commands.json  2 2r +p +nD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\compile_commands.json.bin  2  2x +v +tD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\metadata_generation_command.txt  2 + 讔2k +i +gD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\prefab_config.json  2  ( 鮔2p +n +lD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a\symbol_folder_index.txt  2  k 鮔2M +K +ID:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp\CMakeLists.txt  2 . ؉2 \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/metadata_generation_command.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/metadata_generation_command.txt new file mode 100644 index 0000000..fe219f9 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/metadata_generation_command.txt @@ -0,0 +1,20 @@ + -HD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\src\main\cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=29 +-DANDROID_PLATFORM=android-29 +-DANDROID_ABI=arm64-v8a +-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a +-DANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_ANDROID_NDK=D:\Android\sdk\ndk\27.2.12479018 +-DCMAKE_TOOLCHAIN_FILE=D:\Android\sdk\ndk\27.2.12479018\build\cmake\android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=D:\Android\sdk\cmake\3.22.1\bin\ninja.exe +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a +-DCMAKE_BUILD_TYPE=RelWithDebInfo +-BD:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\.cxx\RelWithDebInfo\1s722i60\arm64-v8a +-GNinja +-DANDROID_STL=c++_shared + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/prefab_config.json b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/symbol_folder_index.txt b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/symbol_folder_index.txt new file mode 100644 index 0000000..a229774 --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a/symbol_folder_index.txt @@ -0,0 +1 @@ +D:\Workspace\RITO\Develop\RitoSIP\ritpsip\app\build\intermediates\cxx\RelWithDebInfo\1s722i60\obj\arm64-v8a \ No newline at end of file diff --git a/app/.cxx/RelWithDebInfo/1s722i60/hash_key.txt b/app/.cxx/RelWithDebInfo/1s722i60/hash_key.txt new file mode 100644 index 0000000..8af539f --- /dev/null +++ b/app/.cxx/RelWithDebInfo/1s722i60/hash_key.txt @@ -0,0 +1,27 @@ +# Values used to calculate the hash in this folder name. +# Should not depend on the absolute path of the project itself. +# - AGP: 8.1.1. +# - $NDK is the path to NDK 27.2.12479018. +# - $PROJECT is the path to the parent folder of the root Gradle build file. +# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. +# - $HASH is the hash value computed from this text. +# - $CMAKE is the path to CMake 3.22.1. +# - $NINJA is the path to Ninja. +-H$PROJECT/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=29 +-DANDROID_PLATFORM=android-29 +-DANDROID_ABI=$ABI +-DCMAKE_ANDROID_ARCH_ABI=$ABI +-DANDROID_NDK=$NDK +-DCMAKE_ANDROID_NDK=$NDK +-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=$NINJA +-DCMAKE_C_FLAGS=-DHAVE_INTTYPES_H -lstdc++ +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/RelWithDebInfo/$HASH/obj/$ABI +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$PROJECT/app/build/intermediates/cxx/RelWithDebInfo/$HASH/obj/$ABI +-DCMAKE_BUILD_TYPE=RelWithDebInfo +-B$PROJECT/app/.cxx/RelWithDebInfo/$HASH/$ABI +-GNinja +-DANDROID_STL=c++_shared \ No newline at end of file diff --git a/app/.cxx/tools/debug/arm64-v8a/compile_commands.json b/app/.cxx/tools/debug/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..56bb572 --- /dev/null +++ b/app/.cxx/tools/debug/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/Debug/3ftx7333/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android27 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -fno-limit-debug-info -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/.cxx/tools/release/arm64-v8a/compile_commands.json b/app/.cxx/tools/release/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..943f6ff --- /dev/null +++ b/app/.cxx/tools/release/arm64-v8a/compile_commands.json @@ -0,0 +1,12 @@ +[ +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC -o CMakeFiles\\baresip.dir\\baresip.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\baresip.c" +}, +{ + "directory": "D:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/.cxx/RelWithDebInfo/1s722i60/arm64-v8a", + "command": "D:\\Android\\Sdk\\ndk\\27.2.12479018\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe --target=aarch64-none-linux-android29 --sysroot=D:/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DHAVE_PTHREAD -Dbaresip_EXPORTS -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/openssl/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/ffmpeg/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/re/include -ID:/Workspace/RITO/Develop/RitoSIP/ritpsip/app/src/main/cpp/../../../../distribution.video/baresip/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DHAVE_INTTYPES_H -lstdc++ -O2 -g -DNDEBUG -fPIC -o CMakeFiles\\baresip.dir\\vidisp.c.o -c D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c", + "file": "D:\\Workspace\\RITO\\Develop\\RitoSIP\\ritpsip\\app\\src\\main\\cpp\\vidisp.c" +} +] \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..a2a7460 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,84 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' + +android { + compileSdkVersion = 35 + ndkVersion '27.2.12479018' + defaultConfig { + applicationId = 'kr.co.rito.ritosip' + minSdkVersion 29 + targetSdkVersion 35 + versionCode = 100 + versionName = '1.0.0' + externalNativeBuild { + cmake { + cFlags '-DHAVE_INTTYPES_H -lstdc++' + arguments '-DANDROID_STL=c++_shared' + version '3.25.1' + } + } + ndk { + // noinspection ChromeOsAbiSupport + //abiFilters 'armeabi-v7a', 'arm64-v8a' //, 'x86_64' + abiFilters 'arm64-v8a' //, 'x86_64' + } + vectorDrawables.useSupportLibrary = true + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = '17' + } + splits { + abi { + reset() + //noinspection ChromeOsAbiSupport + //include 'armeabi-v7a', 'arm64-v8a' + include 'arm64-v8a' + } + } + buildTypes { + release { + // minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), + 'proguard-rules.pro' + } + } + buildFeatures { + viewBinding true + dataBinding true + buildConfig true + } + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + externalNativeBuild { + cmake { + path 'src/main/cpp/CMakeLists.txt' + } + } + namespace 'com.tutpro.baresip.plus' +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation 'com.google.android.material:material:1.12.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" + implementation "androidx.preference:preference-ktx:1.2.1" + implementation "androidx.exifinterface:exifinterface:1.3.7" + implementation "androidx.core:core-ktx:1.15.0" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0' + implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" + implementation "androidx.activity:activity-ktx:1.9.3" + implementation "androidx.fragment:fragment-ktx:1.8.5" + implementation 'androidx.media:media:1.7.0' +} + diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..a014757 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,18 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/gfan/dev/sdk_current/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: +-keepattributes LineNumberTable,SourceFile + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..440a7eb --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/accounts b/app/src/main/assets/accounts new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/assets/config.static b/app/src/main/assets/config.static new file mode 100644 index 0000000..1a71cde --- /dev/null +++ b/app/src/main/assets/config.static @@ -0,0 +1,49 @@ +poll_method epoll +call_local_timeout 120 +call_max_calls 4 +call_hold_other_calls yes +audio_player aaudio,nil +audio_source aaudio,nil +audio_alert aaudio,nil +audio_level no +ausrc_format s16 +auplay_format s16 +auenc_format s16 +audec_format s16 +audio_buffer 20-300 +audio_buffer_mode adaptive +audio_silence -35.0 +audio_telev_pt 101 +video_source avformat,android_camera,1 +videnc_format yuv420p +audio_jitter_buffer_type adaptive +audio_jitter_buffer_delay 0-20 +video_jitter_buffer_type adaptive +video_jitter_buffer_delay 1-100 +rtp_stats yes +rtp_timeout 60 +rtp_rxmode thread +module avcodec.so +module aaudio.so +module vp8.so +module vp9.so +module av1.so +module snapshot.so +module stun.so +module turn.so +module ice.so +module srtp.so +module dtls_srtp.so +module gzrtp.so +module uuid.so +module_app account.so +module_app debug_cmd.so +module_app mwi.so +evdev_device /dev/input/event0 +opus_samplerate 48000 +opus_stereo no +opus_sprop_stereo no +opus_cbr no +opus_inbandfec yes +opus_application voip +dtls_srtp_use_ec prime256v1 diff --git a/app/src/main/assets/contacts b/app/src/main/assets/contacts new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app/src/main/assets/contacts @@ -0,0 +1 @@ + diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000..f249320 --- /dev/null +++ b/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,169 @@ +project(baresip+) + +cmake_minimum_required(VERSION 3.4.1) + +set(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../distribution.video) + +add_library(lib_crypto STATIC IMPORTED) +set_target_properties(lib_crypto PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/openssl/lib/${ANDROID_ABI}/libcrypto.a) + +add_library(lib_ssl STATIC IMPORTED) +set_target_properties(lib_ssl PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/openssl/lib/${ANDROID_ABI}/libssl.a) + +add_library(lib_re STATIC IMPORTED) +set_target_properties(lib_re PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/re/lib/${ANDROID_ABI}/libre.a) + +add_library(lib_opus STATIC IMPORTED) +set_target_properties(lib_opus PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/opus/lib/${ANDROID_ABI}/libopus.a) + +add_library(lib_vpx STATIC IMPORTED) +set_target_properties(lib_vpx PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/vpx/lib/${ANDROID_ABI}/libvpx.a) + +add_library(lib_x264 STATIC IMPORTED) +set_target_properties(lib_x264 PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/x264/lib/${ANDROID_ABI}/libx264.a) + +add_library(lib_aom STATIC IMPORTED) +set_target_properties(lib_aom PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/aom/lib/${ANDROID_ABI}/libaom.a) + +add_library(lib_png STATIC IMPORTED) +set_target_properties(lib_png PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/png/lib/${ANDROID_ABI}/libpng.a) + +add_library(lib_cpu_features STATIC IMPORTED) +set_target_properties(lib_cpu_features PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/cpu_features/lib/${ANDROID_ABI}/libcpu_features.a) + +add_library(lib_ndk_compat STATIC IMPORTED) +set_target_properties(lib_ndk_compat PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/cpu_features/lib/${ANDROID_ABI}/libndk_compat.a) + +add_library(lib_avcodec SHARED IMPORTED) +set_target_properties(lib_avcodec PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libavcodec.so) + +add_library(lib_avutil SHARED IMPORTED) +set_target_properties(lib_avutil PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libavutil.so) + +add_library(lib_swresample SHARED IMPORTED) +set_target_properties(lib_swresample PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libswresample.so) + +add_library(lib_avdevice SHARED IMPORTED) +set_target_properties(lib_avdevice PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libavdevice.so) + +add_library(lib_avfilter SHARED IMPORTED) +set_target_properties(lib_avfilter PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libavfilter.so) + +add_library(lib_swscale SHARED IMPORTED) +set_target_properties(lib_swscale PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libswscale.so) + +add_library(lib_avformat SHARED IMPORTED) +set_target_properties(lib_avformat PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/ffmpeg/lib/${ANDROID_ABI}/libavformat.so) + +add_library(lib_spandsp STATIC IMPORTED) +set_target_properties(lib_spandsp PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/spandsp/lib/${ANDROID_ABI}/libspandsp.a) + +add_library(lib_g722_1 STATIC IMPORTED) +set_target_properties(lib_g722_1 PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/g7221/lib/${ANDROID_ABI}/libg722_1.a) + +add_library(lib_g729 STATIC IMPORTED) +set_target_properties(lib_g729 PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/g729/lib/${ANDROID_ABI}/libbcg729.a) + +add_library(lib_codec2 STATIC IMPORTED) +set_target_properties(lib_codec2 PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/codec2/lib/${ANDROID_ABI}/libcodec2.a) + +add_library(lib_amrnb STATIC IMPORTED) +set_target_properties(lib_amrnb PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/amr/lib/${ANDROID_ABI}/libamrnb.a) + +add_library(lib_amrwb STATIC IMPORTED) +set_target_properties(lib_amrwb PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/amr/lib/${ANDROID_ABI}/libamrwb.a) + +add_library(lib_amrwbenc STATIC IMPORTED) +set_target_properties(lib_amrwbenc PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/amr/lib/${ANDROID_ABI}/libamrwbenc.a) + +add_library(lib_webrtc STATIC IMPORTED) +set_target_properties(lib_webrtc PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/webrtc/lib/${ANDROID_ABI}/libwebrtc.a) + +add_library(lib_zrtpcppcore STATIC IMPORTED) +set_target_properties(lib_zrtpcppcore PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/gzrtp/lib/${ANDROID_ABI}/libzrtpcppcore.a) + +add_library(lib_sndfile STATIC IMPORTED) +set_target_properties(lib_sndfile PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/sndfile/lib/${ANDROID_ABI}/libsndfile.a) + +add_library(lib_baresip STATIC IMPORTED) +set_target_properties(lib_baresip PROPERTIES IMPORTED_LOCATION + ${distribution_DIR}/baresip/lib/${ANDROID_ABI}/libbaresip.a) + +add_library(baresip SHARED baresip.c vidisp.c) + +#set(CMAKE_SHARED_LINKER_FLAGS +# "${CMAKE_SHARED_LINKER_FLAGS} -u AImageReader_new") + +target_include_directories(baresip PRIVATE + ${distribution_DIR}/openssl/include + ${distribution_DIR}/ffmpeg/include + ${distribution_DIR}/re/include + ${distribution_DIR}/baresip/include) + +add_definitions(-DHAVE_PTHREAD) + +target_link_libraries(baresip + android + EGL + GLESv2 + GLESv1_CM + aaudio + lib_baresip + lib_re + lib_ssl + lib_crypto + lib_opus + lib_avdevice + lib_avfilter + lib_swscale + lib_avformat + lib_avcodec + lib_x264 + lib_aom + lib_png + lib_vpx + lib_avutil + lib_swresample + lib_spandsp + lib_g722_1 + lib_g729 + lib_codec2 + lib_amrnb + lib_amrwb + lib_amrwbenc + lib_webrtc + lib_zrtpcppcore + lib_sndfile + z + log + camera2ndk + lib_cpu_features + lib_ndk_compat + mediandk) diff --git a/app/src/main/cpp/baresip.c b/app/src/main/cpp/baresip.c new file mode 100644 index 0000000..ebd4808 --- /dev/null +++ b/app/src/main/cpp/baresip.c @@ -0,0 +1,2041 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "logger.h" +#include "vidisp.h" + +enum +{ + ASYNC_WORKERS = 4 +}; + +typedef struct baresip_context +{ + JavaVM *javaVM; + jclass mainActivityClz; + jobject mainActivityObj; + +} BaresipContext; + +BaresipContext g_ctx; + +static int vprintf_null(const char *p, size_t size, void *arg) +{ + (void)p; + (void)size; + (void)arg; + return 0; +} + +static void net_debug_log() +{ + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", net_debug, baresip_network()); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void net_dns_debug_log() +{ + char debug_buf[2048]; + int l; + LOGD("net_dns_debug_log\n"); + l = re_snprintf(&(debug_buf[0]), 2047, "%H", net_dns_debug, baresip_network()); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void ua_debug_log(struct ua *ua) +{ + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", ua_debug, ua); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void account_debug_log(struct account *acc) +{ + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", account_debug, acc); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void sdp_media_debug_log(const struct sdp_media *m) +{ + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", sdp_media_debug, m); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + LOGD("local media dir %d\n", sdp_media_ldir(m)); + LOGD("remote media dir %d\n", sdp_media_rdir(m)); + } +} + +#if 0 +static void ua_print_status_log(struct ua *ua) +{ + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", ua_print_status, ua); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void call_video_debug_log(struct call *call) { + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", video_debug, call_video(call)); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} + +static void stream_debug_log(const struct stream *s) { + char debug_buf[2048]; + int l; + l = re_snprintf(&(debug_buf[0]), 2047, "%H", stream_debug, s); + if (l != -1) { + debug_buf[l] = '\0'; + LOGD("%s\n", debug_buf); + } +} +#endif + +static struct re_printf pf_null = {vprintf_null, 0}; + +static void signal_handler(int sig) +{ + static bool term = false; + + if (term) { + module_app_unload(); + mod_close(); + exit(0); + } + + term = true; + LOGI("terminated by signal (%d)\n", sig); + ua_stop_all(false); +} + +static void ua_exit_handler(void *arg) +{ + (void)arg; + LOGD("ua exited -- stopping main runloop\n"); + re_cancel(); +} + +static const char *ua_event_reg_str(enum ua_event ev) +{ + switch (ev) { + case UA_EVENT_REGISTERING: + return "registering"; + case UA_EVENT_REGISTER_OK: + case UA_EVENT_FALLBACK_OK: + return "registered"; + case UA_EVENT_REGISTER_FAIL: + case UA_EVENT_FALLBACK_FAIL: + return "registering failed"; + case UA_EVENT_UNREGISTERING: + return "unregistering"; + default: + return "?"; + } +} + +static const char *translate_errorcode(uint16_t scode) +{ + switch (scode) { + case 404: + return ""; /* ignore */ + case 486: + case 603: + return "busy"; + case 487: + return ""; /* ignore */ + default: + return "error"; + } +} + +static void event_handler(enum ua_event ev, struct bevent *event, void *arg) +{ + (void)arg; + const char *prm = bevent_get_text(event); + struct call *call = bevent_get_call(event); + struct ua *ua = bevent_get_ua(event); + const struct sip_msg *msg = bevent_get_msg(event); + struct account *acc = ua_account(bevent_get_ua(event)); + const char *tone; + char event_buf[256]; + enum sdp_dir ardir; + int len, ldir, rdir, err; + struct pl module, module_event, data; + struct sdp_media *media; + int remote_has_video; + + LOGD("ua event (%s) %s\n", uag_event_str(ev), prm); + + switch (ev) { + case UA_EVENT_CREATE: + len = re_snprintf(event_buf, sizeof event_buf, "create", ""); + break; + case UA_EVENT_REGISTERING: + case UA_EVENT_UNREGISTERING: + case UA_EVENT_REGISTER_OK: + case UA_EVENT_FALLBACK_OK: + len = re_snprintf(event_buf, sizeof event_buf, "%s", ua_event_reg_str(ev)); + break; + case UA_EVENT_REGISTER_FAIL: + case UA_EVENT_FALLBACK_FAIL: + len = re_snprintf(event_buf, sizeof event_buf, "registering failed,%s", prm); + break; + case UA_EVENT_SIPSESS_CONN: + ua = uag_find_msg(msg); + // There is no call yet and call is thus used to hold SIP message + call = (struct call *)msg; + len = re_snprintf(event_buf, sizeof event_buf, "%s,%r,%ld", prm, &msg->from.auri, (long)event); + break; + case UA_EVENT_CALL_INCOMING: + len = re_snprintf(event_buf, sizeof event_buf, "call incoming,%s", prm); + break; + case UA_EVENT_CALL_OUTGOING: + len = re_snprintf(event_buf, sizeof event_buf, "call outgoing", ""); + break; + case UA_EVENT_CALL_ANSWERED: + len = re_snprintf(event_buf, sizeof event_buf, "call answered", ""); + break; + case UA_EVENT_CALL_REDIRECT: + if (sdp_media_ldir(stream_sdpmedia(video_strm(call_video(call)))) != SDP_INACTIVE) + len = re_snprintf(event_buf, sizeof event_buf, "video call redirect,%s", prm + 4); + else + len = re_snprintf(event_buf, sizeof event_buf, "call redirect,%s", prm + 4); + break; + case UA_EVENT_CALL_LOCAL_SDP: + if (strcmp(prm, "offer") == 0) + return; + len = re_snprintf(event_buf, sizeof event_buf, "call %sed", prm); + break; + case UA_EVENT_CALL_REMOTE_SDP: + media = stream_sdpmedia(video_strm(call_video(call))); + remote_has_video = sdp_media_rport(media) != 0 + && list_head(sdp_media_format_lst(media, false)) != NULL; + ldir = sdp_media_ldir(media); + rdir = sdp_media_rdir(media); + sdp_media_debug_log(media); + //stream_debug_log(video_strm(call_video(call))); + //call_video_debug_log(call); + ardir = sdp_media_rdir(stream_sdpmedia(audio_strm(call_audio(call)))); + len = re_snprintf(event_buf, sizeof event_buf, "remote call %sed,%d,%d,%d,%d,%d", prm, + call_has_video(call), remote_has_video, ldir, rdir, ardir); + break; + case UA_EVENT_CALL_RINGING: + len = re_snprintf(event_buf, sizeof event_buf, "call ringing", ""); + break; + case UA_EVENT_CALL_PROGRESS: + ardir = sdp_media_rdir(stream_sdpmedia(audio_strm(call_audio(call)))); + len = re_snprintf(event_buf, sizeof event_buf, "call progress,%d", ardir); + break; + case UA_EVENT_CALL_ESTABLISHED: + len = re_snprintf(event_buf, sizeof event_buf, "call established", ""); + break; + case UA_EVENT_CALL_MENC: + if (prm[0] == '0') + len = re_snprintf(event_buf, sizeof event_buf, "call secure", ""); + else if (prm[0] == '1') + len = re_snprintf(event_buf, sizeof event_buf, "call verify,%s", prm + 2); + else if (prm[0] == '2') + len = re_snprintf(event_buf, sizeof event_buf, "call verified,%s", prm + 2); + else + len = re_snprintf(event_buf, sizeof event_buf, "unknown menc event", ""); + break; + case UA_EVENT_CALL_TRANSFER: + len = re_snprintf(event_buf, sizeof event_buf, "call transfer,%s", prm); + break; + case UA_EVENT_CALL_TRANSFER_FAILED: + call_hold(call, false); + len = re_snprintf(event_buf, sizeof event_buf, "transfer failed,%s", prm); + break; + case UA_EVENT_CALL_CLOSED: + tone = call_scode(call) ? translate_errorcode(call_scode(call)) : ""; + len = re_snprintf(event_buf, sizeof event_buf, "call closed,%s,%s", prm, tone); + break; + case UA_EVENT_MWI_NOTIFY: + len = re_snprintf(event_buf, sizeof event_buf, "mwi notify,%s", prm); + break; + case UA_EVENT_MODULE: + err = re_regex(prm, strlen(prm), "[^,]*,[^,]*,[~]*", &module, &module_event, &data); + if (err) + return; + if (!pl_strcmp(&module_event, "dump")) { + len = re_snprintf(event_buf, sizeof event_buf, "sndfile dump,%r", &data); + break; + } else { + len = re_snprintf(event_buf, sizeof event_buf, "%s", prm); + } + if (!pl_strcmp(&module_event, "player: sessionid")) { + len = re_snprintf(event_buf, sizeof event_buf, "player sessionid,%r", &data); + break; + } + if (!pl_strcmp(&module_event, "recorder sessionid")) { + len = re_snprintf(event_buf, sizeof event_buf, "recorder sessionid,%r", &data); + break; + } + default: + return; + } + + if (len == -1) { + LOGE("failed to print event to buffer\n"); + return; + } + + JavaVM *javaVM = g_ctx.javaVM; + JNIEnv *env; + jint res = (*javaVM)->GetEnv(javaVM, (void**)&env, JNI_VERSION_1_6); + if (res != JNI_OK) { + LOGD("failed to get javaVM environment, ErrorCode = %d\n", res); + res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL); + if (JNI_OK != res) { + LOGE("failed to AttachCurrentThread, ErrorCode = %d\n", res); + return; + } + } + + jmethodID methodId = + (*env)->GetMethodID(env, g_ctx.mainActivityClz, "uaEvent", "(Ljava/lang/String;JJ)V"); + jstring jEvent = (*env)->NewStringUTF(env, event_buf); + LOGD("sending ua/call %ld/%ld event %s\n", (long)ua, (long)call, event_buf); + (*env)->CallVoidMethod(env, g_ctx.mainActivityObj, methodId, jEvent, (jlong)ua, (jlong)call); + (*env)->DeleteLocalRef(env, jEvent); + +} + +static void message_handler( + struct ua *ua, const struct pl *peer, const struct pl *ctype, struct mbuf *body, void *arg) +{ + (void)arg; + char ctype_buf[128]; + char peer_buf[256]; + size_t size; + + if (snprintf(peer_buf, 256, "%.*s", (int)peer->l, peer->p) >= 256) { + LOGE("message peer is too long (max 255 characters)\n"); + return; + } + + JavaVM *javaVM = g_ctx.javaVM; + JNIEnv *env; + jint res = (*javaVM)->GetEnv(javaVM, (void **)&env, JNI_VERSION_1_6); + if (res != JNI_OK) { + res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL); + if (JNI_OK != res) { + LOGE("failed to AttachCurrentThread, ErrorCode = %d\n", res); + return; + } + } + + jmethodID methodId = (*env)->GetMethodID(env, g_ctx.mainActivityClz, "messageEvent", + "(JLjava/lang/String;Ljava/lang/String;[B)V"); + jstring jPeer = (*env)->NewStringUTF(env, peer_buf); + pl_strcpy(ctype, ctype_buf, 256); + jstring jCtype = (*env)->NewStringUTF(env, ctype_buf); + jbyteArray jMsg; + size = mbuf_get_left(body); + jMsg = (*env)->NewByteArray(env, (jsize)size); + if ((*env)->GetArrayLength(env, jMsg) != size) { + (*env)->DeleteLocalRef(env, jMsg); + jMsg = (*env)->NewByteArray(env, (jsize)size); + } + void *temp = (*env)->GetPrimitiveArrayCritical(env, (jarray)jMsg, 0); + memcpy(temp, mbuf_buf(body), size); + (*env)->ReleasePrimitiveArrayCritical(env, jMsg, temp, 0); + LOGD("sending message %ld/%s/%s/%.*s\n", (long)ua, peer_buf, ctype_buf, (int)size, + mbuf_buf(body)); + (*env)->CallVoidMethod(env, g_ctx.mainActivityObj, methodId, (jlong)ua, jPeer, jCtype, jMsg); + (*env)->DeleteLocalRef(env, jCtype); + (*env)->DeleteLocalRef(env, jPeer); + (*env)->DeleteLocalRef(env, jMsg); + +} + +static void send_resp_handler(int err, const struct sip_msg *msg, void *arg) +{ + (void)arg; + char reason_buf[64]; + + if (err) { + LOGD("send_response_handler received error %d\n", err); + return; + } + + pl_strcpy(&(msg->reason), reason_buf, 64); + LOGD("send_response_handler received response '%u %s' at %s\n", msg->scode, reason_buf, + (char *)arg); + + JavaVM *javaVM = g_ctx.javaVM; + JNIEnv *env; + jint res = (*javaVM)->GetEnv(javaVM, (void **)&env, JNI_VERSION_1_6); + if (res != JNI_OK) { + res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL); + if (JNI_OK != res) { + LOGE("failed to AttachCurrentThread, ErrorCode = %d\n", res); + return; + } + } + + jmethodID methodId = (*env)->GetMethodID(env, g_ctx.mainActivityClz, "messageResponse", + "(ILjava/lang/String;Ljava/lang/String;)V"); + jstring javaReason = (*env)->NewStringUTF(env, reason_buf); + jstring javaTime = (*env)->NewStringUTF(env, (char *)arg); + (*env)->CallVoidMethod(env, g_ctx.mainActivityObj, methodId, msg->scode, javaReason, javaTime); + (*env)->DeleteLocalRef(env, javaReason); + (*env)->DeleteLocalRef(env, javaTime); + +} + +enum +{ + ID_UA_STOP_ALL +}; + +static struct mqueue *mq; + +static void mqueue_handler(int id, void *data, void *arg) +{ + (void)arg; + if (id == ID_UA_STOP_ALL) { + LOGD("calling ua_stop_all with force %u\n", (unsigned)(uintptr_t)data); + ua_stop_all((bool)(uintptr_t)data); + } +} + +static int pfd[2]; +static pthread_t loggingThread; + +static void *loggingFunction(void *arg) +{ + (void)arg; + ssize_t readSize; + char buf[128]; + + while ((readSize = read(pfd[0], buf, sizeof buf - 1)) > 0) { + if (buf[readSize - 1] == '\n') { + --readSize; + } + buf[readSize] = 0; + LOGD("%s", buf); + } + + return 0; +} + +static int runLoggingThread() +{ + setvbuf(stdout, 0, _IOLBF, 0); + setvbuf(stderr, 0, _IONBF, 0); + + pipe(pfd); + dup2(pfd[1], 1); + dup2(pfd[1], 2); + + int ret = pthread_create(&loggingThread, NULL, loggingFunction, NULL); + if (ret != 0) + return ret; + + pthread_detach(loggingThread); + + return 0; +} + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) +{ + (void)reserved; + + LOGW("JNI_OnLoad on thread %li\n", (long)pthread_self()); + + memset(&g_ctx, 0, sizeof(g_ctx)); + + g_ctx.javaVM = vm; + g_ctx.mainActivityClz = NULL; + g_ctx.mainActivityObj = NULL; + + av_jni_set_java_vm(vm, NULL); + + return JNI_VERSION_1_6; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_BaresipService_baresipStart( + JNIEnv *env, jobject instance, jstring jPath, jstring jAddrs, jint jLogLevel, + jstring jSoftware) +{ + LOGI("starting RitoSip\n"); + + char start_error[64] = ""; + + JavaVM *javaVM = g_ctx.javaVM; + + jclass clz = (*env)->GetObjectClass(env, instance); + g_ctx.mainActivityClz = (*env)->NewGlobalRef(env, clz); + g_ctx.mainActivityObj = (*env)->NewGlobalRef(env, instance); + + int err; + const char *path = (*env)->GetStringUTFChars(env, jPath, 0); + const char *addrs = (*env)->GetStringUTFChars(env, jAddrs, 0); + const char *software = (*env)->GetStringUTFChars(env, jSoftware, 0); + + runLoggingThread(); + + err = libre_init(); + if (err) + goto out; + + if (re_thread_check(true) == 0) { + LOGI("attaching to re thread\n"); + jint res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL); + if (JNI_OK != res) { + LOGE("failed to AttachCurrentThread: %d\n", res); + goto out; + } + } else { + LOGE("not on re thread\n"); + goto out; + } + + conf_path_set(path); + + log_level_set((enum log_level)jLogLevel); + + err = conf_configure(); + if (err) { + LOGW("conf_configure() failed: (%d)\n", err); + strcpy(start_error, "conf_configure"); + goto out; + } + + re_thread_async_init(ASYNC_WORKERS); + + err = baresip_init(conf_config()); + if (err) { + LOGW("baresip_init() failed (%d)\n", err); + strcpy(start_error, "baresip_init"); + goto out; + } + + // Turn off DNS client cache (should be OK with async workers, but it not) + dnsc_cache_max(net_dnsc(baresip_network()), 0); + + if (strlen(addrs) > 0) { + char *addr_list = (char *)malloc(strlen(addrs) + 1); + struct sa temp_sa; + char buf[256]; + net_flush_addresses(baresip_network()); + strcpy(addr_list, addrs); + char *ptr = strtok(addr_list, ";"); + while (ptr != NULL) { + if (0 == sa_set_str(&temp_sa, ptr, 0)) { + sa_ntop(&temp_sa, buf, 256); + ptr = strtok(NULL, ";"); + net_add_address_ifname(baresip_network(), &temp_sa, ptr); + } else { + LOGE("invalid ip address (%s)\n", ptr); + ptr = strtok(NULL, ";"); + } + *(ptr - 1) = ';'; + ptr = strtok(NULL, ";"); + } + free(addr_list); + } + + // net_debug_log(); + + err = ua_init(software, true, true, true); + if (err) { + LOGE("ua_init() failed (%d)\n", err); + strcpy(start_error, "ua_init"); + goto out; + } + + uag_set_exit_handler(ua_exit_handler, NULL); + + err = bevent_register(event_handler, NULL); + if (err) { + LOGE("bevent_register() failed (%d)\n", err); + strcpy(start_error, "bevent_register"); + goto out; + } + + err = message_listen(baresip_message(), message_handler, NULL); + if (err) { + LOGE("message_listen() failed (%d)\n", err); + strcpy(start_error, "message_listen"); + goto out; + } + + err = vidisp_register( + &vid, baresip_vidispl(), "opengles", opengles_alloc, NULL, opengles_display, NULL); + if (err) { + LOGW("vidisp_register failed (%d)\n", err); + goto out; + } + + err = vidisp_register( + &vid_self, baresip_vidispl(), "Selfview", opengles_alloc_self, NULL, opengles_display_self, NULL); + if (err) { + LOGW("vidisp_selfView_register failed (%d)\n", err); + goto out; + } + + err = conf_modules(); + if (err) { + LOGW("conf_modules() failed (%d)\n", err); + strcpy(start_error, "conf_modules"); + goto out; + } + + err = mqueue_alloc(&mq, mqueue_handler, NULL); + if (err) { + LOGW("mqueue_alloc failed (%d)\n", err); + strcpy(start_error, "mqueue_alloc"); + goto out; + } + + // no need to call re_leave/enter since main is not running yet + jmethodID startedId = (*env)->GetMethodID(env, g_ctx.mainActivityClz, "started", "()V"); + (*env)->CallVoidMethod(env, g_ctx.mainActivityObj, startedId); + + LOGI("running main loop ...\n"); + err = re_main(signal_handler); + +out: + if (err) { + LOGE("stopping UAs due to error: (%d)\n", err); + ua_stop_all(true); + } else { + LOGI("main loop exit\n"); + } + + mq = mem_deref(mq); + + LOGD("closing ..."); + ua_close(); + module_app_unload(); + conf_close(); + baresip_close(); + + bevent_unregister(event_handler); + + LOGD("unloading modules ..."); + mod_close(); + + vid = mem_deref(vid); + + LOGD("closing re thread\n"); + re_thread_async_close(); + + LOGD("closing libre\n"); + libre_close(); + + // tmr_debug(); + // mem_debug(); + + LOGD("tell main that baresip has stopped"); + jstring javaError = (*env)->NewStringUTF(env, start_error); + jmethodID stoppedId = + (*env)->GetMethodID(env, g_ctx.mainActivityClz, "stopped", "(Ljava/lang/String;)V"); + (*env)->CallVoidMethod(env, g_ctx.mainActivityObj, stoppedId, javaError); + (*env)->DeleteLocalRef(env, javaError); + + (*env)->ReleaseStringUTFChars(env, jPath, path); + (*env)->ReleaseStringUTFChars(env, jAddrs, addrs); + (*env)->ReleaseStringUTFChars(env, jSoftware, software); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_BaresipService_baresipStop( + JNIEnv *env, jobject obj, jboolean force) +{ + (void)env; + (void)obj; + LOGD("ua_stop_all upon baresipStop"); + mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force)); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1display_1name( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *dn = account_display_name((struct account *)acc); + if (dn) + return (*env)->NewStringUTF(env, dn); + else + return (*env)->NewStringUTF(env, ""); + } else + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1display_1name( + JNIEnv *env, jobject obj, jlong acc, jstring jDn) +{ + (void)obj; + const char *dn = (*env)->GetStringUTFChars(env, jDn, 0); + int res; + if (strlen(dn) > 0) + res = account_set_display_name((struct account *)acc, dn); + else + res = account_set_display_name((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jDn, dn); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1aor( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) + return (*env)->NewStringUTF(env, account_aor((struct account *)acc)); + else + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1luri( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + const struct uri *uri = account_luri((struct account *)acc); + char uri_buf[512]; + int l; + l = re_snprintf(&(uri_buf[0]), 511, "%H", uri_encode, uri); + if (l != -1) + uri_buf[l] = '\0'; + else + uri_buf[0] = '\0'; + return (*env)->NewStringUTF(env, uri_buf); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1auth_1user( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *au = account_auth_user((struct account *)acc); + if (au) + return (*env)->NewStringUTF(env, au); + else + return (*env)->NewStringUTF(env, ""); + } else + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1auth_1user( + JNIEnv *env, jobject obj, jlong acc, jstring jUser) +{ + (void)obj; + const char *user = (*env)->GetStringUTFChars(env, jUser, 0); + int res; + if (strlen(user) > 0) + res = account_set_auth_user((struct account *)acc, user); + else + res = account_set_auth_user((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jUser, user); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1auth_1pass( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *ap = account_auth_pass((struct account *)acc); + if (ap) + return (*env)->NewStringUTF(env, ap); + else + return (*env)->NewStringUTF(env, ""); + } else + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1auth_1pass( + JNIEnv *env, jobject obj, jlong acc, jstring jPass) +{ + (void)obj; + const char *pass = (*env)->GetStringUTFChars(env, jPass, 0); + int res; + if (strlen(pass) > 0) + res = account_set_auth_pass((struct account *)acc, pass); + else + res = account_set_auth_pass((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jPass, pass); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1outbound( + JNIEnv *env, jobject obj, jlong acc, jint jIx) +{ + (void)obj; + const uint16_t native_ix = jIx; + const char *outbound; + if (acc) { + outbound = account_outbound((struct account *)acc, native_ix); + if (outbound) + return (*env)->NewStringUTF(env, outbound); + else + return (*env)->NewStringUTF(env, ""); + } else { + return (*env)->NewStringUTF(env, ""); + } +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1outbound( + JNIEnv *env, jobject obj, jlong acc, jstring jOb, jint jIx) +{ + (void)obj; + const char *ob = (*env)->GetStringUTFChars(env, jOb, 0); + const uint16_t ix = jIx; + int res; + if (strlen(ob) > 0) + res = account_set_outbound((struct account *)acc, ob, ix); + else + res = account_set_outbound((struct account *)acc, NULL, ix); + (*env)->ReleaseStringUTFChars(env, jOb, ob); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1audio_1codec( + JNIEnv *env, jobject obj, jlong acc, jint ix) +{ + (void)obj; + const struct list *codecl; + char codec_buf[32]; + int len; + struct le *le; + codec_buf[0] = '\0'; + if (acc) { + codecl = account_aucodecl((struct account *)acc); + if (!list_isempty(codecl)) { + int i = -1; + for (le = list_head(codecl); le != NULL; le = le->next) { + i++; + if (i == ix) { + const struct aucodec *ac = le->data; + len = re_snprintf( + codec_buf, sizeof codec_buf, "%s/%u/%u", ac->name, ac->srate, ac->ch); + if (len == -1) { + LOGE("failed to print audio codec to buffer\n"); + codec_buf[0] = '\0'; + } + break; + } + } + } + } + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1audio_1codecs( + JNIEnv *env, jobject obj, jlong acc, jstring jCodecs) +{ + (void)obj; + const char *codecs = (*env)->GetStringUTFChars(env, jCodecs, 0); + int res = account_set_audio_codecs((struct account *)acc, codecs); + (*env)->ReleaseStringUTFChars(env, jCodecs, codecs); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1video_1codec( + JNIEnv *env, jobject obj, jlong acc, jint ix) +{ + (void)obj; + const struct list *codecl; + char codec_buf[32]; + int len; + struct le *le; + codec_buf[0] = '\0'; + if (acc) { + codecl = account_vidcodecl((struct account *)acc); + if (!list_isempty(codecl)) { + int i = -1; + for (le = list_head(codecl); le != NULL; le = le->next) { + i++; + if (i == ix) { + const struct vidcodec *vc = le->data; + len = re_snprintf(codec_buf, sizeof codec_buf, "%s", vc->name); + if (len == -1) { + LOGE("failed to print video codec to buffer\n"); + codec_buf[0] = '\0'; + } + break; + } + } + } + } + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1video_1codecs( + JNIEnv *env, jobject obj, jlong acc, jstring jCodecs) +{ + (void)obj; + const char *codecs = (*env)->GetStringUTFChars(env, jCodecs, 0); + int res = account_set_video_codecs((struct account *)acc, codecs); + (*env)->ReleaseStringUTFChars(env, jCodecs, codecs); + return res; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1regint( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + if (acc) + return (jint)account_regint((struct account *)acc); + else + return 0; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1regint( + JNIEnv *env, jobject obj, jlong acc, jint jRegint) +{ + (void)env; + (void)obj; + const uint32_t regint = (uint32_t)jRegint; + return account_set_regint((struct account *)acc, regint); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1mediaenc( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *mediaenc = account_mediaenc((struct account *)acc); + if (mediaenc) + return (*env)->NewStringUTF(env, mediaenc); + } + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1mediaenc( + JNIEnv *env, jobject obj, jlong acc, jstring jMencid) +{ + (void)obj; + const char *mencid = (*env)->GetStringUTFChars(env, jMencid, 0); + int res; + if (strlen(mencid) > 0) + res = account_set_mediaenc((struct account *)acc, mencid); + else + res = account_set_mediaenc((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jMencid, mencid); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1medianat( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *medianat = account_medianat((struct account *)acc); + if (medianat) + return (*env)->NewStringUTF(env, medianat); + } + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1medianat( + JNIEnv *env, jobject obj, jlong acc, jstring jMedNat) +{ + (void)obj; + const char *mednat = (*env)->GetStringUTFChars(env, jMedNat, 0); + int res; + if (strlen(mednat) > 0) + res = account_set_medianat((struct account *)acc, mednat); + else + res = account_set_medianat((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jMedNat, mednat); + return res; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1sipnat( + JNIEnv *env, jobject obj, jlong acc, jstring jSipNat) +{ + (void)obj; + const char *sipnat = (*env)->GetStringUTFChars(env, jSipNat, 0); + int res; + if (strlen(sipnat) > 0) + res = account_set_sipnat((struct account *)acc, sipnat); + else + res = account_set_sipnat((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jSipNat, sipnat); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1stun_1uri( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const struct stun_uri *stun_uri = account_stun_uri((struct account *)acc); + if (stun_uri) { + char uri_str[256]; + if (stun_uri->port != 0) { + if (stun_uri->proto == IPPROTO_TCP) + sprintf(uri_str, "%s:%s:%d?transport=tcp", + stunuri_scheme_name(stun_uri->scheme), stun_uri->host, stun_uri->port); + else + sprintf(uri_str, "%s:%s:%d", stunuri_scheme_name(stun_uri->scheme), + stun_uri->host, stun_uri->port); + } else { + if (stun_uri->proto == IPPROTO_TCP) + sprintf(uri_str, "%s:%s?transport=tcp", stunuri_scheme_name(stun_uri->scheme), + stun_uri->host); + else + sprintf(uri_str, "%s:%s", stunuri_scheme_name(stun_uri->scheme), + stun_uri->host); + } + return (*env)->NewStringUTF(env, uri_str); + } + } + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1stun_1uri( + JNIEnv *env, jobject obj, jlong acc, jstring jUri) +{ + (void)obj; + const char *uri = (*env)->GetStringUTFChars(env, jUri, 0); + int res; + if (strlen(uri) > 0) + res = account_set_stun_uri((struct account *)acc, uri); + else + res = account_set_stun_uri((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jUri, uri); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1stun_1user( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *stun_user = account_stun_user((struct account *)acc); + if (stun_user) + return (*env)->NewStringUTF(env, stun_user); + } + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1stun_1user( + JNIEnv *env, jobject obj, jlong acc, jstring jUser) +{ + (void)obj; + const char *user = (*env)->GetStringUTFChars(env, jUser, 0); + int res; + if (strlen(user) > 0) + res = account_set_stun_user((struct account *)acc, user); + else + res = account_set_stun_user((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jUser, user); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1stun_1pass( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *stun_pass = account_stun_pass((struct account *)acc); + if (stun_pass) + return (*env)->NewStringUTF(env, stun_pass); + } + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1stun_1pass( + JNIEnv *env, jobject obj, jlong acc, jstring jPass) +{ + (void)obj; + const char *pass = (*env)->GetStringUTFChars(env, jPass, 0); + int res; + if (strlen(pass) > 0) + res = account_set_stun_pass((struct account *)acc, pass); + else + res = account_set_stun_pass((struct account *)acc, NULL); + (*env)->ReleaseStringUTFChars(env, jPass, pass); + return res; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1mwi( + JNIEnv *env, jobject obj, jlong acc, jboolean value) +{ + (void)env; + (void)obj; + return account_set_mwi((struct account *)acc, value); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1vm_1uri( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + char uri_buf[256]; + if (acc) { + struct pl pl; + const struct sip_addr *addr = account_laddr((struct account *)acc); + int err = msg_param_decode(&(addr->params), "vm_uri", &pl); + if (err) { + return (*env)->NewStringUTF(env, ""); + } else { + pl_strcpy(&pl, uri_buf, 256); + return (*env)->NewStringUTF(env, uri_buf); + } + } else + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1answermode( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + return account_answermode((struct account *)acc); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1answermode( + JNIEnv *env, jobject obj, jlong acc, jint jMode) +{ + (void)env; + (void)obj; + const uint32_t mode = (uint32_t)jMode; + return account_set_answermode((struct account *)acc, mode); +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_account_1sip_1autoredirect( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + return account_sip_autoredirect((struct account *)acc); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1sip_1autoredirect( + JNIEnv *env, jobject obj, jlong acc, jboolean allow) +{ + (void)env; + (void)obj; + return account_set_sip_autoredirect((struct account *)acc, allow); +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_account_1rtcp_1mux( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + return account_rtcp_mux((struct account *)acc); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1rtcp_1mux( + JNIEnv *env, jobject obj, jlong acc, jboolean value) +{ + (void)env; + (void)obj; + return account_set_rtcp_mux((struct account *)acc, value); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1rel100_1mode( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + return account_rel100_mode((struct account *)acc); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1rel100_1mode( + JNIEnv *env, jobject obj, jlong acc, jint jMode) +{ + (void)env; + (void)obj; + const uint32_t mode = (uint32_t)jMode; + return account_set_rel100_mode((struct account *)acc, mode); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1dtmfmode( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + return account_dtmfmode((struct account *)acc); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_account_1set_1dtmfmode( + JNIEnv *env, jobject obj, jlong acc, jint jMode) +{ + (void)env; + (void)obj; + const uint32_t mode = (uint32_t)jMode; + return account_set_dtmfmode((struct account *)acc, mode); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_account_1extra( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)obj; + if (acc) { + const char *extra = account_extra((struct account *)acc); + if (extra) + return (*env)->NewStringUTF(env, extra); + } + return (*env)->NewStringUTF(env, ""); +} +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_account_1debug( + JNIEnv *env, jobject obj, jlong acc) +{ + (void)env; + (void)obj; + account_debug_log((struct account *)acc); +} + +JNIEXPORT jlong JNICALL Java_com_tutpro_baresip_plus_Api_ua_1alloc( + JNIEnv *env, jobject obj, jstring jUri) +{ + (void)obj; + const char *uri = (*env)->GetStringUTFChars(env, jUri, 0); + struct ua *ua; + LOGD("allocating UA '%s'\n", uri); + re_thread_enter(); + int res = ua_alloc(&ua, uri); + re_thread_leave(); + if (res == 0) { + LOGD("allocated ua '%ld'\n", (long)ua); + } else { + LOGE("failed to allocate ua '%s'\n", uri); + } + (*env)->ReleaseStringUTFChars(env, jUri, uri); + return (jlong)ua; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_ua_1register( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + LOGD("registering UA '%ld'\n", (long)ua); + re_thread_enter(); + int res = ua_register((struct ua *)ua); + re_thread_leave(); + return res; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1unregister( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + re_thread_enter(); + ua_unregister((struct ua *)ua); + re_thread_leave(); +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_ua_1isregistered( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + return ua_isregistered((struct ua *)ua) ? true : false; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1destroy( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + LOGD("destroying ua %ld\n", (long)ua); + re_thread_enter(); + (void)ua_destroy((struct ua *)ua); + re_thread_leave(); +} + +JNIEXPORT jlong JNICALL Java_com_tutpro_baresip_plus_Api_ua_1account( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + struct account *acc = 0; + if (ua) + acc = ua_account((struct ua *)ua); + return (jlong)acc; +} + +JNIEXPORT jlong JNICALL Java_com_tutpro_baresip_plus_Api_ua_1update_1account( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + LOGD("updating account of ua %ld\n", (long)ua); + return ua_update_account((struct ua *)ua); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1hangup( + JNIEnv *env, jobject obj, jlong ua, jlong call, jint code, jstring reason) +{ + (void)obj; + const uint16_t native_code = code; + const char *native_reason = (*env)->GetStringUTFChars(env, reason, 0); + LOGD("hanging up call %ld/%ld\n", (long)ua, (long)call); + re_thread_enter(); + if (strlen(native_reason) == 0) + ua_hangup((struct ua *)ua, (struct call *)call, native_code, NULL); + else + ua_hangup((struct ua *)ua, (struct call *)call, native_code, native_reason); + re_thread_leave(); + (*env)->ReleaseStringUTFChars(env, reason, native_reason); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1accept( + JNIEnv *env, jobject obj, jlong ua, jlong msg) +{ + (void)env; + (void)obj; + int err; + char *from_uri; + pl_strdup(&from_uri, &((struct sip_msg *)msg)->from.auri); + LOGD("accepting incoming call for ua %ld from %s\n", (long)ua, from_uri); + mem_deref(from_uri); + re_thread_enter(); + err = ua_accept((struct ua *)ua, (struct sip_msg *)msg); + re_thread_leave(); + if (err) + LOGW("accepting incoming call for ua %ld failed with error %d\n", (long)ua, err); +} + +JNIEXPORT jlong JNICALL Java_com_tutpro_baresip_plus_Api_ua_1call_1alloc( + JNIEnv *env, jobject obj, jlong ua, jlong xCall, jint vidMode) +{ + (void)env; + (void)obj; + struct call *call = NULL; + int err; + LOGD("allocating new call for ua %ld xcall %ld\n", (long)ua, (long)xCall); + re_thread_enter(); + err = ua_call_alloc(&call, (struct ua *)ua, (enum vidmode)vidMode, NULL, (struct call *)xCall, + call_localuri((struct call *)xCall), true); + re_thread_leave(); + if (err) + LOGW("call allocation for ua %ld failed with error %d\n", (long)ua, err); + return (jlong)call; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1answer( + JNIEnv *env, jobject obj, jlong ua, jlong call, jint vidMode) +{ + (void)env; + (void)obj; + LOGD("answering ua/call %ld/%ld with video mode %d\n", (long)ua, (long)call, vidMode); + re_thread_enter(); + ua_answer((struct ua *)ua, (struct call *)call, (enum vidmode)vidMode); + re_thread_leave(); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1add_1custom_1header( + JNIEnv *env, jobject obj, jlong ua, jstring jname, jstring jbody) +{ + (void)obj; + const char *name = (*env)->GetStringUTFChars(env, jname, 0); + const char *body = (*env)->GetStringUTFChars(env, jbody, 0); + LOGD("adding header to %ld with name/body %s/%s\n", (long)ua, name, body); + re_thread_enter(); + struct pl pl_name, pl_body; + pl_set_str(&pl_name, name); + pl_set_str(&pl_body, body); + int err = ua_add_custom_hdr((struct ua *)ua, &pl_name, &pl_body); + re_thread_leave(); + if (err) + LOGW("adding custom header to ua %ld failed with error %d\n", (long)ua, err); + (*env)->ReleaseStringUTFChars(env, jname, name); + (*env)->ReleaseStringUTFChars(env, jbody, body); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_ua_1debug( + JNIEnv *env, jobject obj, jlong ua) +{ + (void)env; + (void)obj; + ua_debug_log((struct ua *)ua); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_sip_1treply( + JNIEnv *env, jobject obj, jlong msg, jint code, jstring reason) +{ + (void)obj; + const uint16_t native_code = code; + const char *native_reason = (*env)->GetStringUTFChars(env, reason, 0); + LOGD("replying with %d/%s\n", native_code, native_reason); + re_thread_enter(); + (void)sip_treply(NULL, uag_sip(), (const struct sip_msg *)(struct msg *)msg, + native_code, native_reason); + re_thread_leave(); + (*env)->ReleaseStringUTFChars(env, reason, native_reason); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_bevent_1stop( + JNIEnv *env, jobject obj, jlong event) +{ + (void)env; + (void)obj; + re_thread_enter(); + bevent_stop((struct bevent *)event); + re_thread_leave(); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_calls_1mute( + JNIEnv *env, jobject obj, jboolean mute) +{ + (void)env; + (void)obj; + struct le *ua_le; + struct le *call_le; + LOGD("muting calls %d\n", mute); + re_thread_enter(); + for (ua_le = list_head(uag_list()); ua_le != NULL; ua_le = ua_le->next) { + const struct ua *ua = ua_le->data; + for (call_le = list_head(ua_calls(ua)); call_le != NULL; call_le = call_le->next) { + const struct call *call = call_le->data; + audio_mute(call_audio(call), mute); + } + } + re_thread_leave(); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1connect( + JNIEnv *env, jobject obj, jlong call, jstring jPeer) +{ + (void)obj; + const char *native_peer = (*env)->GetStringUTFChars(env, jPeer, 0); + LOGD("connecting call %ld to %s\n", (long)call, native_peer); + re_thread_enter(); + struct pl pl; + pl_set_str(&pl, native_peer); + int err = call_connect((struct call *)call, &pl); + re_thread_leave(); + if (err) + LOGW("call_connect error: %d\n", err); + (*env)->ReleaseStringUTFChars(env, jPeer, native_peer); + return err; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1notify_1sipfrag( + JNIEnv *env, jobject obj, jlong call, jint code, jstring reason) +{ + (void)obj; + const uint16_t native_code = code; + const char *native_reason = (*env)->GetStringUTFChars(env, reason, 0); + LOGD("notifying call %ld/%s\n", (long)call, native_reason); + re_thread_enter(); + (void)call_notify_sipfrag((struct call *)call, native_code, native_reason); + re_thread_leave(); + (*env)->ReleaseStringUTFChars(env, reason, native_reason); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1hold( + JNIEnv *env, jobject obj, jlong call, jboolean hold) +{ + (void)env; + (void)obj; + int err; + if (hold) { + LOGD("holding call %ld\n", (long)call); + re_thread_enter(); + err = call_hold((struct call *)call, true); + re_thread_leave(); + } else { + LOGD("resuming call %ld\n", (long)call); + re_thread_enter(); + err = call_hold((struct call *)call, false); + re_thread_leave(); + } + if (err) + LOGW("call_hold error: %d\n", err); + return err; +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_call_1ismuted( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + return audio_ismuted(call_audio((struct call *)call)); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1transfer( + JNIEnv *env, jobject obj, jlong call, jstring jPeer) +{ + (void)obj; + const char *native_peer = (*env)->GetStringUTFChars(env, jPeer, 0); + LOGD("transfering call %ld to %s\n", (long)call, native_peer); + re_thread_enter(); + int err = call_transfer((struct call *)call, native_peer); + re_thread_leave(); + if (err) + LOGW("call_transfer error: %d\n", err); + (*env)->ReleaseStringUTFChars(env, jPeer, native_peer); + return err; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1send_1digit( + JNIEnv *env, jobject obj, jlong call, jchar digit) +{ + (void)env; + (void)obj; + const uint16_t native_digit = digit; + LOGD("sending DTMF digit '%c' to call %ld\n", (char)native_digit, (long)call); + re_thread_enter(); + int res = call_send_digit((struct call *)call, (char)native_digit); + if (!res) + res = call_send_digit((struct call *)call, KEYCODE_REL); + re_thread_leave(); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_call_1audio_1codecs( + JNIEnv *env, jobject obj, jlong call) +{ + (void)obj; + const struct aucodec *tx = audio_codec(call_audio((struct call *)call), true); + const struct aucodec *rx = audio_codec(call_audio((struct call *)call), false); + char codec_buf[256]; + char *start = &(codec_buf[0]); + unsigned int left = sizeof codec_buf; + int len = -1; + if (tx && rx) + len = re_snprintf(start, left, "%s/%u/%u,%s/%u/%u", tx->name, tx->srate, tx->ch, rx->name, + rx->srate, rx->ch); + if (len == -1) { + LOGE("failed to get audio codecs of call %ld\n", (long)call); + codec_buf[0] = '\0'; + } + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_call_1video_1codecs( + JNIEnv *env, jobject obj, jlong call) +{ + (void)obj; + const struct vidcodec *tx = video_codec(call_video((struct call *)call), true); + const struct vidcodec *rx = video_codec(call_video((struct call *)call), false); + char codec_buf[256]; + char *start = &(codec_buf[0]); + unsigned int left = sizeof codec_buf; + int len = -1; + if (tx && rx) + len = re_snprintf(start, left, "%s,%s", tx->name, rx->name); + if (len == -1) { + LOGE("failed to get video codecs of call %ld\n", (long)call); + codec_buf[0] = '\0'; + } + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1duration( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + return (jint)call_duration((struct call *)call); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_call_1stats( + JNIEnv *env, jobject obj, jlong call, jstring jStream) +{ + (void)obj; + const char *native_stream = (*env)->GetStringUTFChars(env, jStream, 0); + const struct stream *s; + if (strcmp(native_stream, "audio") == 0) + s = audio_strm(call_audio((struct call *)call)); + else + s = video_strm(call_video((struct call *)call)); + const struct rtcp_stats *stats = stream_rtcp_stats(s); + char stats_buf[256]; + int len; + if (stats) { + const double tx_rate = 1.0 * stream_metric_get_tx_bitrate(s) / 1000.0; + const double rx_rate = 1.0 * stream_metric_get_rx_bitrate(s) / 1000.0; + const double tx_avg_rate = 1.0 * stream_metric_get_tx_avg_bitrate(s) / 1000.0; + const double rx_avg_rate = 1.0 * stream_metric_get_rx_avg_bitrate(s) / 1000.0; + len = re_snprintf(&(stats_buf[0]), 256, "%.1f/%.1f,%.1f/%.1f,%u/%u,%d/%d,%.1f/%.1f", + tx_rate, rx_rate, tx_avg_rate, rx_avg_rate, stats->tx.sent, stats->rx.sent, + stats->tx.lost, stats->rx.lost, 1.0 * stats->tx.jit / 1000, + 1.0 * stats->rx.jit / 1000); + if (len == -1) { + LOGE("failed to get stats of call %ld %s stream\n", (long)call, native_stream); + stats_buf[0] = '\0'; + } + } + (*env)->ReleaseStringUTFChars(env, jStream, native_stream); + return (*env)->NewStringUTF(env, stats_buf); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1state( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + return call_state((struct call *)call); +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_call_1has_1video( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + return call_has_video((struct call *)call) ? true : false; +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_call_1replaces( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + return call_supported((struct call *)call, REPLACES) ? true : false; +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_call_1replace_1transfer( + JNIEnv *env, jobject obj, jlong xferCall, jlong call) +{ + (void)env; + (void)obj; + re_thread_enter(); + int res = call_replace_transfer((struct call *)xferCall, (struct call *)call); + re_thread_leave(); + return res == 0 ? true : false; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_call_1peer_1uri( + JNIEnv *env, jobject obj, jlong call) +{ + (void)obj; + const char *uri = call_peeruri((struct call *)call); + if (uri) + return (*env)->NewStringUTF(env, uri); + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_call_1diverter_1uri( + JNIEnv *env, jobject obj, jlong call) +{ + (void)obj; + const char *uri = call_diverteruri((struct call *)call); + if (uri) + return (*env)->NewStringUTF(env, uri); + return (*env)->NewStringUTF(env, ""); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_message_1send( + JNIEnv *env, jobject obj, jlong ua, jstring jPeer, jstring jMsg, jstring jTime) +{ + (void)obj; + const char *native_peer = (*env)->GetStringUTFChars(env, jPeer, 0); + const char *native_msg = (*env)->GetStringUTFChars(env, jMsg, 0); + const char *native_time = (*env)->GetStringUTFChars(env, jTime, 0); + LOGD("sending message from ua %ld to %s at %s\n", (long)ua, native_peer, native_time); + re_thread_enter(); + int err = message_send( + (struct ua *)ua, native_peer, native_msg, send_resp_handler, (void *)native_time); + re_thread_leave(); + if (err) { + LOGW("message_send failed with error %d\n", err); + } + (*env)->ReleaseStringUTFChars(env, jPeer, native_peer); + (*env)->ReleaseStringUTFChars(env, jMsg, native_msg); + return err; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1disable_1video_1stream( + JNIEnv *env, jobject obj, jlong call, jboolean disable) +{ + (void)env; + (void)obj; + re_thread_enter(); + sdp_media_set_disabled(stream_sdpmedia(video_strm(call_video((struct call *)call))), disable); + re_thread_leave(); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1set_1video_1direction( + JNIEnv *env, jobject obj, jlong call, jint dir) +{ + (void)env; + (void)obj; + re_thread_enter(); + call_set_video_dir((struct call *)call, (enum sdp_dir)dir); + re_thread_leave(); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1set_1media_1direction( + JNIEnv *env, jobject obj, jlong call, jint adir, jint vdir) +{ + (void)env; + (void)obj; + LOGD("call set audio/video media direction of call %ld to %d/%d\n", (long)call, adir, vdir); + re_thread_enter(); + call_set_media_direction((struct call *)call, (enum sdp_dir)adir, (enum sdp_dir)vdir); + re_thread_leave(); +} + +JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_plus_Api_call_1video_1enabled( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + int res; + re_thread_enter(); + res = call_has_video((struct call *)call) + && sdp_media_dir(stream_sdpmedia(video_strm(call_video((struct call *)call)))) + != SDP_INACTIVE; + re_thread_leave(); + return res; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1start_1video_1display( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + int err; + re_thread_enter(); + err = video_start_display(call_video((struct call *)call), NULL); + re_thread_leave(); + return err; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1stop_1video_1display( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + re_thread_enter(); + video_stop_display(call_video((struct call *)call)); + re_thread_leave(); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_call_1set_1video_1source( + JNIEnv *env, jobject obj, jlong call, jboolean front) +{ + (void)env; + (void)obj; + int err; + re_thread_enter(); + char *dev = front ? "android_camera,1" : "android_camera,0"; + err = video_set_source(call_video((struct call *)call), "avformat", dev); + re_thread_leave(); + return err; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_call_1destroy( + JNIEnv *env, jobject obj, jlong call) +{ + (void)env; + (void)obj; + re_thread_enter(); + mem_deref((struct call *)call); + re_thread_leave(); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_cmd_1exec( + JNIEnv *env, jobject obj, jstring javaCmd) +{ + (void)obj; + const char *native_cmd = (*env)->GetStringUTFChars(env, javaCmd, 0); + LOGD("processing command '%s'\n", native_cmd); + re_thread_enter(); + int res = cmd_process_long(baresip_commands(), native_cmd, strlen(native_cmd), &pf_null, NULL); + re_thread_leave(); + (*env)->ReleaseStringUTFChars(env, javaCmd, native_cmd); + return res; +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_audio_1codecs(JNIEnv *env, jobject obj) +{ + (void)obj; + struct list *aucodecl = baresip_aucodecl(); + struct le *le; + char codec_buf[256]; + char *start = &(codec_buf[0]); + unsigned int left = sizeof codec_buf; + int len; + for (le = list_head(aucodecl); le != NULL; le = le->next) { + const struct aucodec *ac = le->data; + if (start == &(codec_buf[0])) + len = re_snprintf(start, left, "%s/%u/%u", ac->name, ac->srate, ac->ch); + else + len = re_snprintf(start, left, ",%s/%u/%u", ac->name, ac->srate, ac->ch); + if (len == -1) { + LOGE("failed to print codec to buffer\n"); + codec_buf[0] = '\0'; + return (*env)->NewStringUTF(env, codec_buf); + } + start = start + len; + left = left - len; + } + *start = '\0'; + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_plus_Api_video_1codecs(JNIEnv *env, jobject obj) +{ + (void)obj; + struct list *vidcodecl = baresip_vidcodecl(); + struct le *le; + char codec_buf[256]; + char *start = &(codec_buf[0]); + unsigned int left = sizeof codec_buf; + int len; + for (le = list_head(vidcodecl); le != NULL; le = le->next) { + const struct vidcodec *vc = le->data; + if (start == &(codec_buf[0])) + len = re_snprintf(start, left, "%s", vc->name); + else + len = re_snprintf(start, left, ",%s", vc->name); + if (len == -1) { + LOGE("failed to print codec to buffer\n"); + codec_buf[0] = '\0'; + return (*env)->NewStringUTF(env, codec_buf); + } + start = start + len; + left = left - len; + } + *start = '\0'; + return (*env)->NewStringUTF(env, codec_buf); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_net_1add_1address_1ifname( + JNIEnv *env, jobject obj, jstring jAddr, jstring jIfName) +{ + (void)obj; + const char *addr = (*env)->GetStringUTFChars(env, jAddr, 0); + const char *name = (*env)->GetStringUTFChars(env, jIfName, 0); + int res; + struct sa temp_sa; + char buf[256]; + LOGD("adding address/ifname '%s/%s'\n", addr, name); + if (0 == sa_set_str(&temp_sa, addr, 0)) { + sa_ntop(&temp_sa, buf, 256); + re_thread_enter(); + res = net_add_address_ifname(baresip_network(), &temp_sa, name); + re_thread_leave(); + } else { + LOGE("invalid ip address %s\n", addr); + res = EAFNOSUPPORT; + } + (*env)->ReleaseStringUTFChars(env, jAddr, addr); + (*env)->ReleaseStringUTFChars(env, jIfName, name); + return res; +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_net_1rm_1address( + JNIEnv *env, jobject obj, jstring jIp) +{ + (void)obj; + const char *native_ip = (*env)->GetStringUTFChars(env, jIp, 0); + int res; + struct sa temp_sa; + char buf[256]; + LOGD("removing address '%s'\n", native_ip); + if (str_len(native_ip) == 0) { + (*env)->ReleaseStringUTFChars(env, jIp, native_ip); + return 0; + } + if (0 == sa_set_str(&temp_sa, native_ip, 0)) { + sa_ntop(&temp_sa, buf, 256); + re_thread_enter(); + res = net_rm_address(baresip_network(), &temp_sa); + re_thread_leave(); + } else { + LOGE("invalid ip address %s\n", native_ip); + res = EAFNOSUPPORT; + } + (*env)->ReleaseStringUTFChars(env, jIp, native_ip); + return res; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_log_1level_1set( + JNIEnv *env, jobject obj, jint level) +{ + (void)env; + (void)obj; + const enum log_level native_level = (enum log_level)level; + LOGD("setting log level to '%u'\n", native_level); + log_level_set(native_level); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_net_1use_1nameserver( + JNIEnv *env, jobject obj, jstring javaServers) +{ + (void)obj; + const char *native_servers = (*env)->GetStringUTFChars(env, javaServers, 0); + char servers[256]; + char *server; + struct sa nsv[NET_MAX_NS]; + uint32_t count = 0; + char *comma; + int err; + LOGD("setting dns servers '%s'\n", native_servers); + if (str_len(native_servers) > 255) { + LOGW("net_use_nameserver: too long servers list (%s)\n", native_servers); + return 1; + } + str_ncpy(servers, native_servers, 256); + (*env)->ReleaseStringUTFChars(env, javaServers, native_servers); + server = &(servers[0]); + while ((count < NET_MAX_NS) && ((comma = strchr(server, ',')) != NULL)) { + *comma = '\0'; + err = sa_decode(&(nsv[count]), server, str_len(server)); + if (err) { + LOGW("net_use_nameserver: could not decode '%s' (%u)\n", server, err); + return err; + } + server = ++comma; + count++; + } + if ((count < NET_MAX_NS) && (str_len(server) > 0)) { + err = sa_decode(&(nsv[count]), server, str_len(server)); + if (err) { + LOGW("net_use_nameserver: could not decode `%s' (%u)\n", server, err); + return err; + } + count++; + } + return net_use_nameserver(baresip_network(), nsv, count); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_uag_1reset_1transp( + JNIEnv *env, jobject obj, jboolean reg, jboolean reinvite) +{ + (void)env; + (void)obj; + LOGD("resetting transports (%d, %d)\n", reg, reinvite); + re_thread_enter(); + (void)uag_reset_transp(reg, reinvite); + re_thread_leave(); +} + + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_uag_1enable_1sip_1trace( + JNIEnv *env, jobject obj, jboolean enable) +{ + (void)env; + (void)obj; + LOGD("enabling sip trace (%d)\n", enable); + uag_enable_sip_trace(enable); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_config_1video_1frame_1size_1set( + JNIEnv *env, jobject obj, jint width, jint height) +{ + (void)env; + (void)obj; + struct config *conf = conf_config(); + LOGD("setting video_frame_size (%dx%d)\n", width, height); + conf->video.width = width; + conf->video.height = height; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_config_1video_1fps_1set( + JNIEnv *env, jobject obj, jint fps) +{ + (void)env; + (void)obj; + struct config *conf = conf_config(); + LOGD("setting video_fps (%d)\n", fps); + conf->video.fps = (double)fps; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_config_1verify_1server_1set( + JNIEnv *env, jobject obj, jboolean verify) +{ + (void)env; + (void)obj; + struct config *conf = conf_config(); + LOGD("setting verify_server (%d)\n", verify); + conf->sip.verify_server = verify; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_config_1transport_1server_1set( + JNIEnv *env, jobject obj, jstring transport) +{ + (void)env; + (void)obj; + const char *native_transport = (*env)->GetStringUTFChars(env, transport, 0); + LOGW("setting transport_server (%s)\n", native_transport); + if(strcmp(native_transport, "tcp") == 0) { + uag_enable_transport(SIP_TRANSP_UDP, false); + uag_enable_transport(SIP_TRANSP_TCP, true); + } else if(strcmp(native_transport, "tls") == 0) { + uag_enable_transport(SIP_TRANSP_UDP, false); + uag_enable_transport(SIP_TRANSP_TCP, false); + uag_enable_transport(SIP_TRANSP_TLS, true); + } else { + uag_enable_transport(SIP_TRANSP_UDP, true); + uag_enable_transport(SIP_TRANSP_TCP, true); + } + (*env)->ReleaseStringUTFChars(env, transport, native_transport); +} + + + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_net_1debug(JNIEnv *env, jobject obj) +{ + (void)env; + (void)obj; + re_thread_enter(); + net_debug_log(); + re_thread_leave(); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_net_1dns_1debug(JNIEnv *env, jobject obj) +{ + (void)env; + (void)obj; + re_thread_enter(); + net_dns_debug_log(); + re_thread_leave(); +} + +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_Api_module_1load( + JNIEnv *env, jobject obj, jstring javaModule) +{ + (void)obj; + const char *native_module = (*env)->GetStringUTFChars(env, javaModule, 0); + int result = module_load(".", native_module); + (*env)->ReleaseStringUTFChars(env, javaModule, native_module); + return result; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_Api_module_1unload( + JNIEnv *env, jobject obj, jstring javaModule) +{ + (void)obj; + const char *native_module = (*env)->GetStringUTFChars(env, javaModule, 0); + module_unload(native_module); + LOGD("unloaded module %s\n", native_module); + (*env)->ReleaseStringUTFChars(env, javaModule, native_module); +} diff --git a/app/src/main/cpp/logger.h b/app/src/main/cpp/logger.h new file mode 100644 index 0000000..3b25b7f --- /dev/null +++ b/app/src/main/cpp/logger.h @@ -0,0 +1,25 @@ +#include +#include + +#ifndef BARESIP_LOGGER_H + #define BARESIP_LOGGER_H + + #define LOG_TAG "RitoSip JNI" + + #define LOGD(...) \ + if (log_level_get() < LEVEL_INFO) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) + + #define LOGI(...) \ + if (log_level_get() < LEVEL_WARN) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) + + #define LOGW(...) \ + if (log_level_get() < LEVEL_ERROR) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) + + #define LOGE(...) \ + if (log_level_get() <= LEVEL_ERROR) \ + ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) + +#endif //BARESIP_LOGGER_H diff --git a/app/src/main/cpp/vidisp.c b/app/src/main/cpp/vidisp.c new file mode 100644 index 0000000..db51b59 --- /dev/null +++ b/app/src/main/cpp/vidisp.c @@ -0,0 +1,833 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "logger.h" +#include "vidisp.h" + +const char *egl_error(EGLint const err) +{ + switch (err) { + case EGL_FALSE: + return "EGL_FALSE"; + case EGL_TRUE: + return "EGL_TRUE"; + case EGL_BAD_DISPLAY: + return "EGL_BAD_DISPLAY"; + case EGL_NOT_INITIALIZED: + return "EGL_NOT_INITIALIZED"; + case EGL_BAD_SURFACE: + return "EGL_BAD_SURFACE"; + case EGL_BAD_ALLOC: + return "EGL_BAD_ALLOC"; + case EGL_CONTEXT_LOST: + return "EGL_CONTEXT_LOST"; + default: + break; + } + return "UNKNOWN_ERROR"; +} + +static ANativeWindow *window = NULL; +static ANativeWindow *window_self = NULL; // for self_view - by ritoseo + +/* Size of window (rendering buffer) */ +static int window_width = 0, window_height = 0; +static int window_width_self = 0, window_height_self = 0; + +/* Size of video frames */ +static int frame_width, frame_height; +static int frame_width_self, frame_height_self; + +static bool resize = false; +static bool resize_self = false; + +struct vidisp *vid; +struct vidisp *vid_self; + +struct vidisp_st *gst = NULL; +struct vidisp_st *gst_self = NULL; + +static void renderer_destroy(struct vidisp_st *st) +{ + LOGD("At renderer_destroy() on thread %li\n", (long)pthread_self()); + + if (st->display != EGL_NO_DISPLAY) { + eglMakeCurrent(st->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (st->surface != EGL_NO_SURFACE) { + eglDestroySurface(st->display, st->surface); + st->surface = EGL_NO_SURFACE; + } + if (st->context != EGL_NO_CONTEXT) { + eglDestroyContext(st->display, st->context); + st->context = EGL_NO_CONTEXT; + } + eglTerminate(st->display); + st->display = EGL_NO_DISPLAY; + } + eglReleaseThread(); + gst = NULL; +} + +static void destructor(void *arg) +{ + struct vidisp_st *st = arg; + + renderer_destroy(st); + mem_deref(st->vf); +} + +static int context_initialize(struct vidisp_st *st) +{ + const EGLint attribs[] = {EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_BLUE_SIZE, 8, EGL_GREEN_SIZE, 8, + EGL_RED_SIZE, 8, EGL_NONE}; + + EGLDisplay display; + EGLConfig config; + EGLint numConfigs; + EGLint format; + EGLSurface surface; + EGLContext context; + + if ((display = eglGetDisplay(EGL_DEFAULT_DISPLAY)) == EGL_NO_DISPLAY) { + LOGW("eglGetDisplay() returned error %d\n", eglGetError()); + return eglGetError(); + } + if (!eglInitialize(display, NULL, NULL)) { + LOGW("eglInitialize() returned error %d\n", eglGetError()); + return eglGetError(); + } + + if (!eglChooseConfig(display, attribs, &config, 1, &numConfigs)) { + LOGW("eglChooseConfig() returned error %d\n", eglGetError()); + renderer_destroy(st); + return eglGetError(); + } + + if (!eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format)) { + LOGW("eglGetConfigAttrib() returned error %d\n", eglGetError()); + renderer_destroy(st); + return eglGetError(); + } + + ANativeWindow_setBuffersGeometry(st->window, 0, 0, format); + + if (!(surface = eglCreateWindowSurface(display, config, st->window, NULL))) { + LOGW("eglCreateWindowSurface() returned error %s\n", egl_error(eglGetError())); + renderer_destroy(st); + return eglGetError(); + } + + if (!eglBindAPI(EGL_OPENGL_ES_API)) { + LOGW("eglBindApi failed with error %s\n", egl_error(eglGetError())); + renderer_destroy(st); + return eglGetError(); + } + + if (!(context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL))) { + LOGW("eglCreateContext() returned error %d\n", eglGetError()); + renderer_destroy(st); + return eglGetError(); + } + + if (!eglMakeCurrent(display, surface, surface, context)) { + LOGW("eglMakeCurrent() returned error %d\n", eglGetError()); + renderer_destroy(st); + return eglGetError(); + } + + if (!eglQuerySurface(display, surface, EGL_WIDTH, &st->width) + || !eglQuerySurface(display, surface, EGL_HEIGHT, &st->height)) { + LOGW("eglQuerySurface() returned error %d\n", eglGetError()); + renderer_destroy(st); + return eglGetError(); + } + + LOGD("Render buffer w/h = %d/%d", st->width, st->height); + + st->display = display; + st->surface = surface; + st->context = context; + + glDisable(GL_DITHER); + glEnable(GL_DEPTH_TEST); + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + resize = false; + resize_self = false; + + LOGD("Rendered context initialized"); + + return 0; +} + +int opengles_alloc(struct vidisp_st **stp, const struct vidisp *vd, struct vidisp_prm *prm, + const char *dev, vidisp_resize_h *resizeh, void *arg) +{ + int err = 0; + + (void)prm; + (void)dev; + (void)resizeh; + (void)arg; + + LOGD("At opengles_alloc() on thread %li\n", (long)pthread_self()); + + if (gst) + renderer_destroy(gst); + + gst = mem_zalloc(sizeof(*gst), destructor); + if (!gst) + return ENOMEM; + + gst->vd = vd; + gst->window = window; + + if (gst->window == NULL) { + LOGW("Window is NULL\n"); + err = EINVAL; + } + + // context should be initialized here and not in opengles_display + // err = context_initialize(gst); + + if (err) + mem_deref(gst); + else + *stp = gst; + + return err; +} + +int opengles_alloc_self(struct vidisp_st **stp, const struct vidisp *vd, struct vidisp_prm *prm, + const char *dev, vidisp_resize_h *resizeh, void *arg) +{ + int err = 0; + + (void)prm; + (void)dev; + (void)resizeh; + (void)arg; + + LOGD("At opengles_alloc_self() on thread %li\n", (long)pthread_self()); + + if (gst_self) + renderer_destroy(gst_self); + + gst_self = mem_zalloc(sizeof(*gst_self), destructor); + if (!gst_self) + return ENOMEM; + + gst_self->vd = vd; + gst_self->window = window_self; + + if (gst_self->window == NULL) { + LOGW("WindowSelf is NULL\n"); + err = EINVAL; + } + + // context should be initialized here and not in opengles_display + // err = context_initialize(gst); + + if (err) + mem_deref(gst_self); + else + *stp = gst_self; + + return err; +} + +static int texture_init(struct vidisp_st *st) +{ + glGenTextures(1, &st->texture_id); + if (st->texture_id == 0) { + LOGW("glGenTextures generated texture_id 0 and error %d\n", glGetError()); + return 1; + } + + glBindTexture(GL_TEXTURE_2D, st->texture_id); + glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, st->vf->size.w, st->vf->size.h, 0, GL_RGB, + GL_UNSIGNED_SHORT_5_6_5, st->vf->data[0]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glBindTexture(GL_TEXTURE_2D, 0); + + return 0; +} + +static void dump_rgb565_file(struct vidframe *vf, char *pFilePath) { + if(access(pFilePath, R_OK) >= 0) + return; + + char finPath[128]; + sprintf(finPath, "%s.done", pFilePath); + remove(finPath); + + FILE *fp = fopen(pFilePath, "wb"); + if(fp) { + fwrite(vf->data[0], 1, vf->size.w * vf->size.h * 2, fp); + fclose(fp); + + fp = fopen(finPath, "wb"); + fclose(fp); + } +} + +static void texture_render(struct vidisp_st *st) +{ + static const GLfloat coords[4 * 2] = {0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0}; + + glBindTexture(GL_TEXTURE_2D, st->texture_id); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, st->vf->size.w, st->vf->size.h, 0, GL_RGB, + GL_UNSIGNED_SHORT_5_6_5, st->vf->data[0]); + + dump_rgb565_file(st->vf, "/mnt/obb/camera_far.rgb565"); + + glClientActiveTexture(GL_TEXTURE0); + + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(3, GL_FLOAT, 0, st->vertices); + + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexCoordPointer(2, GL_FLOAT, 0, coords); + + glBindTexture(GL_TEXTURE_2D, st->texture_id); + + glEnable(GL_TEXTURE_2D); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDisable(GL_TEXTURE_2D); + + //LOGW("[RITO2] video frame width/height changed = %d/%d\n", st->vf->size.w, st->vf->size.h); + if(st->vf->size.w != frame_width || st->vf->size.h != frame_height) { + LOGW("[RITO2] video frame width/height changed = %d/%d\n", st->vf->size.w, st->vf->size.h); + frame_width = st->vf->size.w; + frame_height = st->vf->size.h; +// window_width = frame_width; +// window_height = frame_height; + resize = true; + } +} + + +static void texture_render_self(struct vidisp_st *st) +{ + static const GLfloat coords[4 * 2] = {0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0}; + + glBindTexture(GL_TEXTURE_2D, st->texture_id); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, st->vf->size.w, st->vf->size.h, 0, GL_RGB, + GL_UNSIGNED_SHORT_5_6_5, st->vf->data[0]); + + dump_rgb565_file(st->vf, "/mnt/obb/camera_near.rgb565"); + + glClientActiveTexture(GL_TEXTURE0); + + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(3, GL_FLOAT, 0, st->vertices); + + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexCoordPointer(2, GL_FLOAT, 0, coords); + + glBindTexture(GL_TEXTURE_2D, st->texture_id); + + glEnable(GL_TEXTURE_2D); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDisable(GL_TEXTURE_2D); + + if(st->vf->size.w != frame_width_self || st->vf->size.h != frame_height_self) { + LOGW("[RITO2] videoSelf frame width/height changed = %d/%d\n", st->vf->size.w, st->vf->size.h); + frame_width_self = st->vf->size.w; + frame_height_self = st->vf->size.h; + resize_self = true; + } +} + +static void setup_vertices(struct vidisp_st *st) +{ + int i = 0; + + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = frame_width; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = frame_height; + st->vertices[i++] = 0; + st->vertices[i++] = frame_width; + st->vertices[i++] = frame_height; + st->vertices[i] = 0; +} + +static void setup_vertices_self(struct vidisp_st *st) +{ + int i = 0; + + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = frame_width_self; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = 0; + st->vertices[i++] = frame_height_self; + st->vertices[i++] = 0; + st->vertices[i++] = frame_width_self; + st->vertices[i++] = frame_height_self; + st->vertices[i] = 0; +} + +static void setup_layout(struct vidrect *ortho, struct vidrect *vp) +{ + int x, y; + + x = (window_width - frame_width) / 2; + y = (window_height - frame_height) / 2; + + if (x < 0) { + vp->x = 0; + ortho->x = -x; + } else { + vp->x = x; + ortho->x = 0; + } + + if (y < 0) { + vp->y = 0; + ortho->y = -y; + } else { + vp->y = y; + ortho->y = 0; + } + + vp->w = window_width - 2 * vp->x; + vp->h = window_height - 2 * vp->y; + + ortho->w = frame_width - ortho->x; + ortho->h = frame_height - ortho->y; + + // Same as by ritoseo + vp->x = 0; + vp->y = 0; + vp->w = window_width; + vp->h = window_height; + ortho->x = vp->x; + ortho->y = vp->y; + ortho->w = frame_width; + ortho->h = frame_height; + +} + +static void setup_layout_self(struct vidrect *ortho, struct vidrect *vp) +{ + int x, y; + + x = (window_width_self - frame_width_self) / 2; + y = (window_height_self - frame_height_self) / 2; + + if (x < 0) { + vp->x = 0; + ortho->x = -x; + } else { + vp->x = x; + ortho->x = 0; + } + + if (y < 0) { + vp->y = 0; + ortho->y = -y; + } else { + vp->y = y; + ortho->y = 0; + } + + vp->w = window_width_self - 2 * vp->x; + vp->h = window_height_self - 2 * vp->y; + + ortho->w = frame_width_self - ortho->x; + ortho->h = frame_height_self - ortho->y; + + // Same as by ritoseo + ortho->x = vp->x; + ortho->y = vp->y; + ortho->w = frame_width_self; + ortho->h = frame_height_self; + + vp->x = 0; + vp->y = 0; + vp->w = window_width_self; + vp->h = window_height_self; + ortho->x = vp->x; + ortho->y = vp->y; + ortho->w = frame_width_self; + ortho->h = frame_height_self; +} + + +static void window_resize() +{ + struct vidrect ortho, vp; + + LOGD("resizing window\n"); + + setup_layout(&ortho, &vp); + + // LOGD("glViewport x/y/w/h = %d/%d/%d/%d\n", vp.x, vp.y, vp.w, vp.h); + glViewport(vp.x, vp.y, vp.w, vp.h); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glViewport(vp.x, vp.y, vp.w, vp.h); + + // LOGD("glOrthof x/w/y/h = %d/%d/%d/%d\n", ortho.x, ortho.w, ortho.y, ortho.h); + glOrthof(ortho.x, ortho.w, ortho.y, ortho.h, 0.0f, 1.0f); + + glMatrixMode(GL_MODELVIEW); + + resize = false; +} + +static void window_resize_self() +{ + struct vidrect ortho, vp; + + LOGD("resizing window\n"); + + setup_layout_self(&ortho, &vp); + + // LOGD("glViewport x/y/w/h = %d/%d/%d/%d\n", vp.x, vp.y, vp.w, vp.h); + glViewport(vp.x, vp.y, vp.w, vp.h); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glViewport(vp.x, vp.y, vp.w, vp.h); + + // LOGD("glOrthof x/w/y/h = %d/%d/%d/%d\n", ortho.x, ortho.w, ortho.y, ortho.h); + glOrthof(ortho.x, ortho.w, ortho.y, ortho.h, 0.0f, 1.0f); + + glMatrixMode(GL_MODELVIEW); + + resize_self = false; +} + +static int opengles_render(struct vidisp_st *st) +{ + if (!st->texture_id) { + + struct vidrect ortho, vp; + int err; + + err = texture_init(st); + if (err) { + LOGW("opengles_render: failed to initialize texture\n"); + return err; + } + + LOGD("video frame width/height = %d/%d\n", st->vf->size.w, st->vf->size.h); + + LOGW("video frame width/height = %d/%d\n", st->vf->size.w, st->vf->size.h); + LOGW("video window_width width/height = %d/%d\n", window_width, window_height); + + +#if 1 // 원본 이미지 원본 크기를 View 에 매핑. 작으면 가운데로, 크면 Crop 발생 + frame_width = st->vf->size.w; + frame_height = st->vf->size.h; +#else // 원본 이미지 전체를 View 크기에 매핑 + frame_width = window_width; + frame_height = window_height; +#endif + + setup_vertices(st); + + setup_layout(&ortho, &vp); + + LOGW("video glViewport x/y/w/h = %d/%d/%d/%d\n", vp.x, vp.y, vp.w, vp.h); + LOGW("video glOrthof x/w/y/h = %d/%d/%d/%d\n", ortho.x, ortho.w, ortho.y, ortho.h); + + // LOGD("glViewport x/y/w/h = %d/%d/%d/%d\n", vp.x, vp.y, vp.w, vp.h); + glViewport(vp.x, vp.y, vp.w, vp.h); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + // LOGD("glOrthof x/w/y/h = %d/%d/%d/%d\n", ortho.x, ortho.w, ortho.y, ortho.h); + glOrthof(ortho.x, ortho.w, ortho.y, ortho.h, 0.0f, 1.0f); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glDisable(GL_DEPTH_TEST); + glDisableClientState(GL_COLOR_ARRAY); + + } else if (resize) { + LOGW("[RITO] video frame resize width/height = %d/%d\n", st->vf->size.w, st->vf->size.h); + window_resize(); + setup_vertices(st); + } + + texture_render(st); + + glDisable(GL_TEXTURE_2D); + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glBindTexture(GL_TEXTURE_2D, 0); + glEnable(GL_DEPTH_TEST); + + glFlush(); + + return 0; +} + + +static int opengles_render_self(struct vidisp_st *st) +{ + if (!st->texture_id) { + + struct vidrect ortho, vp; + int err; + + err = texture_init(st); + if (err) { + LOGW("opengles_render_self: failed to initialize texture\n"); + return err; + } + + LOGD("video frame width/height = %d/%d\n", st->vf->size.w, st->vf->size.h); + +#if 1 // 원본 이미지 원본 크기를 View 에 매핑. 작으면 가운데로, 크면 Crop 발생 + frame_width_self = st->vf->size.w; + frame_height_self = st->vf->size.h; +#else // 원본 이미지 전체를 View 크기에 매핑 + frame_width_self = window_width_self; + frame_height_self = window_height_self; +#endif + + setup_vertices_self(st); + + setup_layout_self(&ortho, &vp); + + // LOGD("glViewport x/y/w/h = %d/%d/%d/%d\n", vp.x, vp.y, vp.w, vp.h); + glViewport(vp.x, vp.y, vp.w, vp.h); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + // LOGD("glOrthof x/w/y/h = %d/%d/%d/%d\n", ortho.x, ortho.w, ortho.y, ortho.h); + glOrthof(ortho.x, ortho.w, ortho.y, ortho.h, 0.0f, 1.0f); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glDisable(GL_DEPTH_TEST); + glDisableClientState(GL_COLOR_ARRAY); + + } else if (resize_self) { + window_resize_self(); + } + + texture_render_self(st); + + glDisable(GL_TEXTURE_2D); + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glBindTexture(GL_TEXTURE_2D, 1); + glEnable(GL_DEPTH_TEST); + + glFlush(); + + return 0; +} + +int opengles_display( + struct vidisp_st *st, const char *title, const struct vidframe *frame, uint64_t timestamp) +{ + (void)title; + (void)timestamp; + int err; + + // LOGD("At opengles_display() on thread %li\n", (long)pthread_self()); + + /* This is hack to make sure that context is initialised on the same thread */ + if (!st->context) { + err = context_initialize(st); + if (err) { + LOGW("Renderer context init failed with error %d\n", err); + return err; + } + } + + if (!st->vf) { + if (frame->size.w & 3) { + LOGW("opengles_display: frame width must be multiple of 4\n"); + return EINVAL; + } + + err = vidframe_alloc(&st->vf, VID_FMT_RGB565, &frame->size); + if (err) { + LOGW("opengles_display: vidframe_alloc failed: %d\n", err); + return err; + } + } else { + if(st->vf->size.w != frame->size.w || st->vf->size.h != frame->size.h) { + err = vidframe_alloc(&st->vf, VID_FMT_RGB565, &frame->size); + if (err) { + LOGW("opengles_display: vidframe_alloc failed: %d\n", err); + return err; + } + resize = true; + } + } + + vidconv(st->vf, frame, NULL); + + opengles_render(st); + + err = eglSwapBuffers(st->display, st->surface); + if (!err) + LOGW("eglSwapBuffers() returned error %s\n", egl_error(eglGetError())); + + return err; +} + + +int opengles_display_self( + struct vidisp_st *st, const char *title, const struct vidframe *frame, uint64_t timestamp) +{ + (void)title; + (void)timestamp; + int err; + + // LOGD("At opengles_display() on thread %li\n", (long)pthread_self()); + + /* This is hack to make sure that context is initialised on the same thread */ + if (!st->context) { + err = context_initialize(st); + if (err) { + LOGW("Renderer context init failed with error %d\n", err); + return err; + } + } + + if (!st->vf) { + if (frame->size.w & 3) { + LOGW("opengles_display: frame width must be multiple of 4\n"); + return EINVAL; + } + + err = vidframe_alloc(&st->vf, VID_FMT_RGB565, &frame->size); + if (err) { + LOGW("opengles_display: vidframe_alloc failed: %d\n", err); + return err; + } + } + + vidconv(st->vf, frame, NULL); + + opengles_render_self(st); + + err = eglSwapBuffers(st->display, st->surface); + if (!err) + LOGW("eglSwapBuffers() returned error %s\n", egl_error(eglGetError())); + + return err; +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_on_1start(JNIEnv *env, jclass thiz) +{ + LOGI("VideoView on_start"); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_on_1resume(JNIEnv *env, jclass thiz) +{ + LOGI("VideoView on_resume"); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_on_1pause(JNIEnv *env, jclass thiz) +{ + LOGI("VideoView on_pause"); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_on_1stop(JNIEnv *env, jclass thiz) +{ + LOGI("VideoView on_stop"); +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_set_1surface( + JNIEnv *env, jclass thiz, jobject surface) +{ + int w, h; + + LOGD("At set_surface() on thread %li\n", (long)pthread_self()); + + if (surface != 0) { + window = ANativeWindow_fromSurface(env, surface); + w = ANativeWindow_getWidth(window); + h = ANativeWindow_getHeight(window); + if ((w != window_width) || (h != window_height)) { + LOGI("Got new window %p with w/h = %d/%d", window, w, h); + window_width = w; + window_height = h; + resize = true; + } + } else { + LOGI("Releasing window"); + ANativeWindow_release(window); + } +} + +JNIEXPORT void JNICALL Java_com_tutpro_baresip_plus_VideoView_set_1surfaceSelf( + JNIEnv *env, jclass thiz, jobject surface) +{ + int w, h; + + LOGD("At set_surface() on thread %li\n", (long)pthread_self()); + + if (surface != 0) { + window_self = ANativeWindow_fromSurface(env, surface); + w = ANativeWindow_getWidth(window_self); + h = ANativeWindow_getHeight(window_self); + if ((w != window_width_self) || (h != window_height_self)) { + LOGI("Got new windowSelf %p with w/h = %d/%d", window_self, w, h); + window_width_self = w; + window_height_self = h; + resize_self = true; + } + } else { + LOGI("Releasing windowSelf"); + ANativeWindow_release(window_self); + } +} + +/* Added by ritoseo */ +JNIEXPORT jint JNICALL Java_com_tutpro_baresip_plus_VideoView_get_1frameFormat(JNIEnv *env, jclass thiz) +{ + return frame_height; +} \ No newline at end of file diff --git a/app/src/main/cpp/vidisp.h b/app/src/main/cpp/vidisp.h new file mode 100644 index 0000000..f2a14a8 --- /dev/null +++ b/app/src/main/cpp/vidisp.h @@ -0,0 +1,40 @@ +#ifndef BARESIP_VIDISP_H +#define BARESIP_VIDISP_H + +#include +#include +#include + +struct vidisp_st +{ + const struct vidisp *vd; + struct vidframe *vf; + + GLuint texture_id; + GLfloat vertices[4 * 3]; + + ANativeWindow *window; + + EGLDisplay display; + EGLSurface surface; + EGLContext context; + EGLint width; + EGLint height; +}; + +extern struct vidisp *vid; +extern struct vidisp *vid_self; + +extern int opengles_alloc(struct vidisp_st **stp, const struct vidisp *vd, struct vidisp_prm *prm, + const char *dev, vidisp_resize_h *resizeh, void *arg); + +extern int opengles_alloc_self(struct vidisp_st **stp, const struct vidisp *vd, struct vidisp_prm *prm, + const char *dev, vidisp_resize_h *resizeh, void *arg); + +extern int opengles_display( + struct vidisp_st *st, const char *title, const struct vidframe *frame, uint64_t timestamp); + +extern int opengles_display_self( + struct vidisp_st *st, const char *title, const struct vidframe *frame, uint64_t timestamp); + +#endif //BARESIP_VIDISP_H diff --git a/app/src/main/java/kr/co/rito/ritosip/StartActivity.kt b/app/src/main/java/kr/co/rito/ritosip/StartActivity.kt new file mode 100644 index 0000000..fc65fe2 --- /dev/null +++ b/app/src/main/java/kr/co/rito/ritosip/StartActivity.kt @@ -0,0 +1,12 @@ +package kr.co.rito.ritosip + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.tutpro.baresip.plus.R + +class StartActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_start) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AboutActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AboutActivity.kt new file mode 100644 index 0000000..f28c4db --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AboutActivity.kt @@ -0,0 +1,75 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Intent +import android.os.Build +import android.os.Bundle +import androidx.core.text.HtmlCompat +import androidx.appcompat.app.AppCompatActivity +import android.text.method.LinkMovementMethod +import android.view.MenuItem +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.tutpro.baresip.plus.databinding.ActivityAboutBinding + +class AboutActivity : AppCompatActivity() { + + private lateinit var binding: ActivityAboutBinding + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + binding = ActivityAboutBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.aboutText.updatePadding(top = 172) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + Utils.addActivity("about") + + val text = String.format(getString(R.string.about_text_plus), + BuildConfig.VERSION_NAME) + binding.aboutText.text = HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY) + binding.aboutText.movementMethod = LinkMovementMethod.getInstance() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + when (item.itemId) { + android.R.id.home -> + goBack() + } + + return true + } + + private fun goBack() { + BaresipService.activities.remove("about") + setResult(Activity.RESULT_CANCELED, Intent()) + finish() + } + +} + diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Account.kt new file mode 100644 index 0000000..2658243 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Account.kt @@ -0,0 +1,296 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import java.util.* +import kotlin.collections.ArrayList +import java.net.URLEncoder +import java.net.URLDecoder + +class Account(val accp: Long) { + + var nickName = "" + var displayName = Api.account_display_name(accp) + val aor = Api.account_aor(accp) + var luri = Api.account_luri(accp) + var authUser = Api.account_auth_user(accp) + var authPass = Api.account_auth_pass(accp) + var outbound = ArrayList() + var mediaNat = Api.account_medianat(accp) + var stunServer = Api.account_stun_uri(accp) + var stunUser = Api.account_stun_user(accp) + var stunPass = Api.account_stun_pass(accp) + var audioCodec = ArrayList() + var videoCodec = ArrayList() + var regint = Api.account_regint(accp) + var configuredRegInt = REGISTRATION_INTERVAL + var mediaEnc = Api.account_mediaenc(accp) + var rtcpMux = Api.account_rtcp_mux(accp) + var rel100Mode = Api.account_rel100_mode(accp) + var dtmfMode = Api.account_dtmfmode(accp) + var answerMode = Api.account_answermode(accp) + var autoRedirect = Api.account_sip_autoredirect(accp) + var vmUri = Api.account_vm_uri(accp) + var vmNew = 0 + var vmOld = 0 + var missedCalls = false + var unreadMessages = false + var callHistory = true + var countryCode = "" + var telProvider = Utils.aorDomain(aor) + var resumeUri = "" + + init { + + if (authPass == "") + authPass = NO_AUTH_PASS + + var i = 0 + while (true) { + val ob = Api.account_outbound(accp, i) + if (ob != "") { + outbound.add(ob) + i++ + } else { + break + } + } + + i = 0 + while (true) { + val ac = Api.account_audio_codec(accp, i) + if (ac != "") { + audioCodec.add(ac) + i++ + } else { + break + } + } + + i = 0 + while (true) { + val vc = Api.account_video_codec(accp, i) + if (vc != "") { + if (!videoCodec.contains(vc) && vc != "H265") + videoCodec.add(vc) + i++ + } else { + break + } + } + + val extra = Api.account_extra(accp) + if (Utils.paramExists(extra, "nickname")) + nickName = Utils.paramValue(extra,"nickname") + if (Utils.paramExists(extra, "regint")) + configuredRegInt = Utils.paramValue(extra,"regint").toInt() + callHistory = Utils.paramValue(extra,"call_history") == "" + if (Utils.paramExists(extra, "country_code")) + countryCode = Utils.paramValue(extra,"country_code") + if (Utils.paramExists(extra, "tel_provider")) + telProvider = URLDecoder.decode(Utils.paramValue(extra,"tel_provider"), "UTF-8") + } + + fun print() : String { + + var res = if (displayName != "") + "\"${displayName}\" " + else + "" + + res = "$res<$luri>" + + if (authUser != "") res += ";auth_user=\"${authUser}\"" + + if ((authPass != "") && !BaresipService.aorPasswords.containsKey(aor)) + res += ";auth_pass=\"${authPass}\"" + + if (outbound.size > 0) { + res += ";outbound=\"${outbound[0]}\"" + if (outbound.size > 1) res += ";outbound2=\"${outbound[1]}\"" + res = "$res;sipnat=outbound" + } + + if (mediaNat != "") res += ";medianat=${mediaNat}" + + if (stunServer != "") + res += ";stunserver=\"${stunServer}\"" + + if (stunUser != "") + res += ";stunuser=\"${stunUser}\"" + + if (stunPass != "") + res += ";stunpass=\"${stunPass}\"" + + if (audioCodec.size > 0) { + var first = true + res = "$res;audio_codecs=" + for (c in audioCodec) + if (first) { + res += c + first = false + } else { + res = "$res,$c" + } + } + + if (videoCodec.size > 0) { + var first = true + res = "$res;video_codecs=" + for (c in videoCodec) + if (first) { + res += c + first = false + } else { + res = "$res,$c" + } + } + + if (mediaEnc != "") res += ";mediaenc=${mediaEnc}" + + if (rtcpMux) + res += ";rtcp_mux=yes" + + res += if (rel100Mode == Api.REL100_ENABLED) + ";100rel=yes" + else + ";100rel=no" + + if (dtmfMode == Api.DTMFMODE_SIP_INFO) + res += ";dtmfmode=info" + else if (dtmfMode == Api.DTMFMODE_AUTO) + res += ";dtmfmode=auto" + + res = if (vmUri == "") + "$res;mwi=no" + else + "$res;mwi=yes;vm_uri=\"$vmUri\"" + + if (answerMode == Api.ANSWERMODE_AUTO) + res += ";answermode=auto" + + if (autoRedirect) + res += ";sip_autoredirect=yes" + + res += ";ptime=20;regint=${regint};regq=0.5;pubint=0;inreq_allowed=yes;call_transfer=yes" + + var extra = "" + + if (nickName != "") + extra += ";nickname=$nickName" + + if (!callHistory) + extra += ";call_history=no" + + extra += ";tel_provider=${URLEncoder.encode(telProvider, "UTF-8")}" + + if (countryCode != "") + extra += ";country_code=$countryCode" + + if (configuredRegInt != REGISTRATION_INTERVAL) + extra += ";regint=$configuredRegInt" + + if (extra !="") + res += ";extra=\"" + extra.substringAfter(";") + "\"" + + return res + } + + fun vmMessages(cxt: Context) : String { + + val new = if (vmNew > 0) { + if (vmNew == 1) + cxt.getString(R.string.one_new_message) + else + "$vmNew ${cxt.getString(R.string.new_messages)}" + } else + "" + + val old = if (vmOld > 0) { + if (vmOld == 1) + cxt.getString(R.string.one_old_message) + else + "$vmOld ${cxt.getString(R.string.old_messages)}" + } else + "" + + var msg = cxt.getString(R.string.you_have) + if (new != "") { + msg = "$msg $new" + if (old != "") msg = "$msg ${cxt.getString(R.string.and)} $old" + } else { + msg = if (old != "") + "$msg $old" + else + cxt.getString(R.string.no_messages) + } + + return "$msg." + } + + fun host() : String { + return aor.split("@")[1] + } + + private fun removeAudioCodecsStartingWith(prefix: String) { + val newCodecs = ArrayList() + for (acSpec in audioCodec) + if (!acSpec.lowercase(Locale.ROOT).startsWith(prefix)) newCodecs.add(acSpec) + audioCodec = newCodecs + } + + fun removeAudioCodecs(codecModule: String) { + when (codecModule) { + "g711" -> + removeAudioCodecsStartingWith("pcm") + "g722" -> + removeAudioCodecsStartingWith("g722/") + else -> + removeAudioCodecsStartingWith(codecModule) + } + } + + companion object { + + fun accounts(): ArrayList { + val res = ArrayList() + for (ua in BaresipService.uas) { + res.add(ua.account) + } + return res + } + + fun ofAor(aor: String): Account? { + for (ua in BaresipService.uas) + if (ua.account.aor == aor) return ua.account + return null + } + + fun checkDisplayName(dn: String): Boolean { + if (dn == "") return true + val dnRegex = Regex("^([* .!%_`'~]|[+]|[-a-zA-Z0-9]){1,64}\$") + return dnRegex.matches(dn) + } + + fun checkAuthUser(au: String): Boolean { + if (au == "") return true + val ud = au.split("@") + return when (ud.size) { + 1 -> Utils.checkUriUser(au) + 2 -> Utils.checkUriUser(ud[0]) && Utils.checkDomain(ud[1]) + else -> false + } + } + + fun checkAuthPass(ap: String): Boolean { + return (ap.isNotEmpty()) && (ap.length <= 64) && + Regex("^[ -~]*\$").matches(ap) && !ap.contains('"') + } + + fun uniqueNickName(nickName: String): Boolean { + for (ua in BaresipService.uas) + if (ua.account.nickName == nickName) + return false + return true + } + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountActivity.kt new file mode 100644 index 0000000..19fbdc4 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountActivity.kt @@ -0,0 +1,911 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.View.GONE +import android.view.View.VISIBLE +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.tutpro.baresip.plus.databinding.ActivityAccountBinding +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import org.xmlpull.v1.XmlPullParser +import org.xmlpull.v1.XmlPullParserFactory +import java.io.StringReader +import java.net.URL +import java.util.* + +class AccountActivity : AppCompatActivity() { + + private lateinit var binding: ActivityAccountBinding + private lateinit var acc: Account + private lateinit var ua: UserAgent + private lateinit var uri: TextView + private lateinit var nickName: EditText + private lateinit var displayName: EditText + private lateinit var aor: String + private lateinit var authUser: EditText + private lateinit var authPass: EditText + private lateinit var outbound: Array + private lateinit var mediaNat: String + private lateinit var stun: LinearLayout + private lateinit var stunServer: EditText + private lateinit var stunUser: EditText + private lateinit var stunPass: EditText + private lateinit var regCheck: CheckBox + private lateinit var regInt: EditText + private lateinit var mediaNatSpinner: Spinner + private lateinit var mediaEnc: String + private lateinit var mediaEncSpinner: Spinner + private lateinit var rtcpCheck: CheckBox + private lateinit var rel100Check: CheckBox + private var dtmfMode = Api.DTMFMODE_RTP_EVENT + private lateinit var dtmfModeSpinner: Spinner + private var answerMode = Api.ANSWERMODE_MANUAL + private lateinit var answerModeSpinner: Spinner + private var autoRedirect = false + private lateinit var redirectModeSpinner: Spinner + private lateinit var vmUri: EditText + private lateinit var countryCode: EditText + private lateinit var telProvider: EditText + private lateinit var defaultCheck: CheckBox + + private val mediaEncKeys = arrayListOf("zrtp", "dtls_srtp", "srtp-mandf", "srtp-mand", "srtp", "") + private val mediaEncVals = arrayListOf("ZRTP", "DTLS-SRTPF", "SRTP-MANDF", "SRTP-MAND", "SRTP", "-") + private val mediaNatKeys = arrayListOf("stun", "turn", "ice", "") + private val mediaNatVals = arrayListOf("STUN", "TURN", "ICE", "-") + + private var reRegister = false + private var uaIndex= -1 + + private val scope = CoroutineScope(Job() + Dispatchers.Main) + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityAccountBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.AccountView.updatePadding(top = 172) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + uri = binding.Uri + nickName = binding.NickName + displayName = binding.DisplayName + authUser = binding.AuthUser + authPass = binding.AuthPass + outbound = arrayOf(binding.Outbound1, binding.Outbound2) + regCheck = binding.Register + regInt = binding.RegInt + mediaNatSpinner = binding.mediaNatSpinner + stun = binding.Stun + stunServer = binding.StunServer + stunUser = binding.StunUser + stunPass = binding.StunPass + mediaEncSpinner = binding.mediaEncSpinner + rtcpCheck = binding.RtcpMux + rel100Check = binding.Rel100 + dtmfModeSpinner = binding.dtmfModeSpinner + answerModeSpinner = binding.answerModeSpinner + redirectModeSpinner = binding.redirectModeSpinner + vmUri = binding.voicemailUri + countryCode = binding.countryCode + telProvider = binding.telephonyProvider + defaultCheck = binding.Default + + aor = intent.getStringExtra("aor")!! + ua = UserAgent.ofAor(aor)!! + acc = ua.account + uaIndex = UserAgent.findAorIndex(aor)!! + + Utils.addActivity("account,$aor") + + if (intent.getBooleanExtra("new", false)) + initAccountFromConfig(this) + + title = if (acc.nickName != "") + acc.nickName + else + aor.split(":")[1] + + initLayoutFromAccount(acc) + + bindTitles() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + // Api.account_debug(acc.accp) + + } + + private fun initAccountFromConfig(ctx: AccountActivity) { + scope.launch(Dispatchers.IO) { + val url = "https://${Utils.uriHostPart(aor)}/baresip/account_config.xml" + val config = try { + URL(url).readText() + } catch (e: java.lang.Exception) { + Log.d(TAG, "Failed to get account configuration from network") + null + } + if (config != null && !ctx.isFinishing) { + Log.d(TAG, "Got account config '$config'") + val acc = Account(acc.accp) + val parserFactory: XmlPullParserFactory = XmlPullParserFactory.newInstance() + val parser: XmlPullParser = parserFactory.newPullParser() + parser.setInput(StringReader(config)) + var tag: String? + var text = "" + var event = parser.eventType + val audioCodecs = ArrayList(Api.audio_codecs().split(",")) + val videoCodecs = ArrayList(Api.video_codecs().split(",")) + while (event != XmlPullParser.END_DOCUMENT) { + tag = parser.name + when (event) { + XmlPullParser.TEXT -> + text = parser.text + XmlPullParser.START_TAG -> { + if (tag == "audio-codecs") + acc.audioCodec.clear() + if (tag == "video-codecs") + acc.videoCodec.clear() + } + XmlPullParser.END_TAG -> + when (tag) { + "outbound-proxy-1" -> + if (text.isNotEmpty()) + acc.outbound.add(text) + "outbound-proxy-2" -> + if (text.isNotEmpty()) + acc.outbound.add(text) + "registration-interval" -> + acc.configuredRegInt = text.toInt() + "register" -> + acc.regint = if (text == "yes") acc.configuredRegInt else 0 + "audio-codec" -> + if (text in audioCodecs) + acc.audioCodec.add(text) + "video-codec" -> + if (text in videoCodecs) + acc.videoCodec.add(text) + "media-encoding" -> { + val enc = text.lowercase(Locale.ROOT) + if (enc in mediaEncKeys && enc.isNotEmpty()) + acc.mediaEnc = enc + } + "media-nat" -> { + val nat = text.lowercase(Locale.ROOT) + if (nat in mediaNatKeys && nat.isNotEmpty()) + acc.mediaNat = nat + } + "stun-turn-server" -> + if (text.isNotEmpty()) + acc.stunServer = text + "rtcp-mux" -> + acc.rtcpMux = text == "yes" + "100rel-mode" -> + acc.rel100Mode = if (text == "yes") + Api.REL100_ENABLED + else + Api.REL100_DISABLED + "dtmf-mode" -> + if (text in arrayOf("rtp-event", "sip-info", "auto")) + acc.dtmfMode = when (text) { + "rtp-event" -> Api.DTMFMODE_RTP_EVENT + "sip-info" -> Api.DTMFMODE_SIP_INFO + else -> Api.DTMFMODE_AUTO + } + "answer-mode" -> + if (text in arrayOf("manual", "auto")) + acc.answerMode = if (text == "manual") + Api.ANSWERMODE_MANUAL + else + Api.ANSWERMODE_AUTO + "redirect-mode" -> + acc.autoRedirect = text == "yes" + "voicemail-uri" -> + if (text.isNotEmpty()) + acc.vmUri = text + "country-code" -> + acc.countryCode = text + "tel-provider" -> + acc.telProvider = text + } + } + event = parser.next() + } + runOnUiThread { + initLayoutFromAccount(acc) + } + } + } + } + + private fun initLayoutFromAccount(acc: Account) { + + uri.text = acc.luri + nickName.setText(acc.nickName) + displayName.setText(acc.displayName) + authUser.setText(acc.authUser) + + if (BaresipService.aorPasswords[aor] != null || acc.authPass == NO_AUTH_PASS) + authPass.setText("") + else + authPass.setText(acc.authPass) + + if (acc.outbound.size > 0) { + outbound[0].setText(acc.outbound[0]) + if (acc.outbound.size > 1) + outbound[1].setText(acc.outbound[1]) + } + + regCheck.isChecked = acc.regint > 0 + regInt.setText(acc.configuredRegInt.toString()) + + this.acc.audioCodec = acc.audioCodec + this.acc.videoCodec = acc.videoCodec + + mediaNat = acc.mediaNat + var keyIx = mediaNatKeys.indexOf(acc.mediaNat) + var keyVal = mediaNatVals.elementAt(keyIx) + mediaNatKeys.removeAt(keyIx) + mediaNatVals.removeAt(keyIx) + mediaNatKeys.add(0, acc.mediaNat) + mediaNatVals.add(0, keyVal) + val mediaNatAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, + mediaNatVals) + mediaNatAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + mediaNatSpinner.adapter = mediaNatAdapter + mediaNatSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + mediaNat = mediaNatKeys[mediaNatVals.indexOf(parent.selectedItem.toString())] + if ((mediaNat == "turn") && stunServer.text.startsWith("stun")) + stunServer.setText("") + else if ((mediaNat == "stun") && + (stunServer.text.startsWith("turn") || (stunServer.text.toString() == ""))) + stunServer.setText(resources.getString(R.string.stun_server_default)) + else if ((mediaNat == "ice") && (stunServer.text.toString() == "")) + stunServer.setText(resources.getString(R.string.stun_server_default)) + if (mediaNat == "") { + stun.visibility = GONE + stunServer.setText("") + stunUser.setText("") + stunPass.setText("") + } else + stun.visibility = VISIBLE + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + stunServer.setText(acc.stunServer) + stunUser.setText(acc.stunUser) + stunPass.setText(acc.stunPass) + + mediaEnc = acc.mediaEnc + keyIx = mediaEncKeys.indexOf(mediaEnc) + keyVal = mediaEncVals.elementAt(keyIx) + mediaEncKeys.removeAt(keyIx) + mediaEncVals.removeAt(keyIx) + mediaEncKeys.add(0, mediaEnc) + mediaEncVals.add(0, keyVal) + val mediaEncAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + mediaEncVals) + mediaEncAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + mediaEncSpinner.adapter = mediaEncAdapter + mediaEncSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + mediaEnc = mediaEncKeys[mediaEncVals.indexOf(parent.selectedItem.toString())] + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + rtcpCheck.isChecked = acc.rtcpMux + + rel100Check.isChecked = acc.rel100Mode == Api.REL100_ENABLED + + dtmfMode = acc.dtmfMode + val dtmfModeKeys = arrayListOf(Api.DTMFMODE_RTP_EVENT, Api.DTMFMODE_SIP_INFO, Api.DTMFMODE_AUTO) + val dtmfModeVals = arrayListOf(getString(R.string.dtmf_inband), getString(R.string.dtmf_info), getString(R.string.dtmf_auto)) + keyIx = dtmfModeKeys.indexOf(acc.dtmfMode) + keyVal = dtmfModeVals.elementAt(keyIx) + dtmfModeKeys.removeAt(keyIx) + dtmfModeVals.removeAt(keyIx) + dtmfModeKeys.add(0, acc.dtmfMode) + dtmfModeVals.add(0, keyVal) + val dtmfModeAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + dtmfModeVals) + dtmfModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + dtmfModeSpinner.adapter = dtmfModeAdapter + dtmfModeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + dtmfMode = dtmfModeKeys[dtmfModeVals.indexOf(parent.selectedItem.toString())] + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + answerMode = acc.answerMode + val answerModeKeys = arrayListOf(Api.ANSWERMODE_MANUAL, Api.ANSWERMODE_AUTO) + val answerModeVals = arrayListOf(getString(R.string.manual), getString(R.string.auto)) + keyIx = answerModeKeys.indexOf(acc.answerMode) + keyVal = answerModeVals.elementAt(keyIx) + answerModeKeys.removeAt(keyIx) + answerModeVals.removeAt(keyIx) + answerModeKeys.add(0, acc.answerMode) + answerModeVals.add(0, keyVal) + val answerModeAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + answerModeVals) + answerModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + answerModeSpinner.adapter = answerModeAdapter + answerModeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + answerMode = answerModeKeys[answerModeVals.indexOf(parent.selectedItem.toString())] + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + autoRedirect = acc.autoRedirect + val redirectModeKeys = arrayListOf(false, true) + val redirectModeVals = arrayListOf(getString(R.string.manual), getString(R.string.auto)) + keyIx = redirectModeKeys.indexOf(acc.autoRedirect) + keyVal = redirectModeVals.elementAt(keyIx) + redirectModeKeys.removeAt(keyIx) + redirectModeVals.removeAt(keyIx) + redirectModeKeys.add(0, acc.autoRedirect) + redirectModeVals.add(0, keyVal) + val redirectModeAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + redirectModeVals) + redirectModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + redirectModeSpinner.adapter = redirectModeAdapter + redirectModeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + autoRedirect = redirectModeKeys[redirectModeVals.indexOf(parent.selectedItem.toString())] + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + if (acc.countryCode != "") + countryCode.setText(acc.countryCode) + + telProvider.setText(acc.telProvider) + + vmUri.setText(acc.vmUri) + + defaultCheck.isChecked = uaIndex == 0 + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + + super.onCreateOptionsMenu(menu) + val inflater = menuInflater + inflater.inflate(R.menu.check_icon, menu) + return true + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("account,$aor") == -1) + return true + + when (item.itemId) { + + R.id.checkIcon -> { + + val nn = nickName.text.toString().trim() + if (nn != acc.nickName) { + if (Account.checkDisplayName(nn)) { + if (nn == "" || Account.uniqueNickName(nn)) { + acc.nickName = nn + Log.d(TAG, "New nickname is ${acc.nickName}") + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.non_unique_account_nickname), nn)) + return false + } + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_account_nickname), nn)) + return false + } + } + + val dn = displayName.text.toString().trim() + if (dn != acc.displayName) { + if (Account.checkDisplayName(dn)) { + if (Api.account_set_display_name(acc.accp, dn) == 0) { + acc.displayName = Api.account_display_name(acc.accp) + Log.d(TAG, "New display name is ${acc.displayName}") + } else { + Log.e(TAG, "Setting of display name failed") + } + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_display_name), dn)) + return false + } + } + + val au = authUser.text.toString().trim() + val ap = authPass.text.toString().trim() + + if (au != acc.authUser) { + if (Account.checkAuthUser(au)) { + if (Api.account_set_auth_user(acc.accp, au) == 0) { + acc.authUser = Api.account_auth_user(acc.accp) + Log.d(TAG, "New auth user is ${acc.authUser}") + if (acc.regint > 0) + reRegister = true + } else { + Log.e(TAG, "Setting of auth user failed") + } + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_authentication_username), au)) + return false + } + } + + if (ap != "") { + if (ap != acc.authPass) { + if (Account.checkAuthPass(ap)) { + if (Api.account_set_auth_pass(acc.accp, ap) == 0) { + acc.authPass = Api.account_auth_pass(acc.accp) + if (acc.regint > 0) + reRegister = true + } else { + Log.e(TAG, "Setting of auth pass failed") + } + BaresipService.aorPasswords.remove(acc.aor) + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_authentication_password), ap)) + return false + } + } else { + BaresipService.aorPasswords.remove(acc.aor) + } + } else { // ap == "" + if (acc.authPass != NO_AUTH_PASS && + acc.authPass != BaresipService.aorPasswords[acc.aor]) + if (Api.account_set_auth_pass(acc.accp, "") == 0) { + acc.authPass = NO_AUTH_PASS + BaresipService.aorPasswords[aor] = NO_AUTH_PASS + } + } + + val ob = ArrayList() + for (i in 0..1) { + var uri: String + if (outbound[i].text.toString().trim() != "") { + uri = outbound[i].text.toString().trim().replace(" ", "") + if (!uri.startsWith("sip:")) + uri = "sip:$uri" + if (checkOutboundUri(uri)) { + ob.add(uri) + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_proxy_server_uri), uri)) + return false + } + } + } + if (ob != acc.outbound) { + for (i in 0..1) { + val uri = if (ob.size > i) + ob[i] + else + "" + if (Api.account_set_outbound(acc.accp, uri, i) != 0) + Log.e(TAG, "Setting of outbound proxy $i uri '$uri' failed") + } + Log.d(TAG, "New outbound proxies are $ob") + acc.outbound = ob + if (ob.isEmpty()) + Api.account_set_sipnat(acc.accp, "") + else + Api.account_set_sipnat(acc.accp, "outbound") + if (acc.regint > 0) + reRegister = true + } + + val newConfiguredRegInt = regInt.text.toString().trim().toInt() + if (newConfiguredRegInt < 60 || newConfiguredRegInt > 3600) { + Utils.alertView( + this, getString(R.string.notice), + String.format(getString(R.string.invalid_reg_int), "$newConfiguredRegInt") + ) + return false + } + val reReg = (regCheck.isChecked != acc.regint > 0) || + (regCheck.isChecked && newConfiguredRegInt != acc.configuredRegInt) + if (reReg) { + if (Api.account_set_regint(acc.accp, + if (regCheck.isChecked) newConfiguredRegInt else 0) != 0) { + Log.e(TAG, "Setting of regint failed") + } else { + acc.regint = Api.account_regint(acc.accp) + acc.configuredRegInt = newConfiguredRegInt + Log.d(TAG, "New regint is ${acc.regint}") + reRegister = true + } + } else { + if (newConfiguredRegInt != acc.configuredRegInt) { + acc.configuredRegInt = newConfiguredRegInt + } + } + + if (mediaNat != acc.mediaNat) { + if (Api.account_set_medianat(acc.accp, mediaNat) == 0) { + acc.mediaNat = Api.account_medianat(acc.accp) + Log.d(TAG, "New medianat is ${acc.mediaNat}") + } else { + Log.e(TAG, "Setting of medianat failed") + } + } + + var newStunServer = stunServer.text.toString().trim() + if (mediaNat != "") { + if (((mediaNat == "stun") || (mediaNat == "ice")) && (newStunServer == "")) + newStunServer = resources.getString(R.string.stun_server_default) + if (!Utils.checkStunUri(newStunServer) || + (mediaNat == "turn" && + newStunServer.substringBefore(":") !in setOf("turn", "turns"))) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_stun_server), newStunServer)) + return false + } + } + + if (acc.stunServer != newStunServer) { + if (Api.account_set_stun_uri(acc.accp, newStunServer) == 0) { + acc.stunServer = Api.account_stun_uri(acc.accp) + Log.d(TAG, "New STUN/TURN server URI is '${acc.stunServer}'") + } else { + Log.e(TAG, "Setting of STUN/TURN URI server failed") + } + } + + val newStunUser = stunUser.text.toString().trim() + if (acc.stunUser != newStunUser) { + if (Account.checkAuthUser(newStunUser)) { + if (Api.account_set_stun_user(acc.accp, newStunUser) == 0) { + acc.stunUser = Api.account_stun_user(acc.accp) + Log.d(TAG, "New STUN/TURN user is ${acc.stunUser}") + } else { + Log.e(TAG, "Setting of STUN/TURN user failed") + } + } else { + Utils.alertView(this, getString(R.string.notice), String.format(getString(R.string.invalid_stun_username), + newStunUser)) + return false + } + } + + val newStunPass = stunPass.text.toString().trim() + if (acc.stunPass != newStunPass) { + if (newStunPass.isEmpty() || Account.checkAuthPass(newStunPass)) { + if (Api.account_set_stun_pass(acc.accp, newStunPass) == 0) { + acc.stunPass = Api.account_stun_pass(acc.accp) + } else { + Log.e(TAG, "Setting of stun pass failed") + } + } else { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_stun_password), newStunPass)) + return false + } + } + + if (mediaEnc != acc.mediaEnc) { + if (Api.account_set_mediaenc(acc.accp, mediaEnc) == 0) { + acc.mediaEnc = Api.account_mediaenc(acc.accp) + Log.d(TAG, "New mediaenc is ${acc.mediaEnc}") + } else { + Log.e(TAG, "Setting of mediaenc $mediaEnc failed") + } + } + + if (rtcpCheck.isChecked != acc.rtcpMux) + if (Api.account_set_rtcp_mux(acc.accp, rtcpCheck.isChecked) == 0) { + acc.rtcpMux = Api.account_rtcp_mux(acc.accp) + Log.d(TAG, "New rtcpMux is ${acc.rtcpMux}") + } else { + Log.e(TAG, "Setting of account_rtc_mux failed") + } + + if (rel100Check.isChecked != (acc.rel100Mode == Api.REL100_ENABLED)) { + val mode = if (rel100Check.isChecked) Api.REL100_ENABLED else Api.REL100_DISABLED + if (Api.account_set_rel100_mode(acc.accp, mode) == 0) { + acc.rel100Mode = Api.account_rel100_mode(acc.accp) + Api.ua_update_account(ua.uap) + Log.d(TAG, "New rel100Mode is ${acc.rel100Mode}") + } else { + Log.e(TAG, "Setting of account_rel100Mode failed") + } + } + + if (dtmfMode != acc.dtmfMode) { + if (Api.account_set_dtmfmode(acc.accp, dtmfMode) == 0) { + acc.dtmfMode = Api.account_dtmfmode(acc.accp) + Log.d(TAG, "New dtmfmode is ${acc.dtmfMode}") + } else { + Log.e(TAG, "Setting of dtmfmode $dtmfMode failed") + } + } + + if (answerMode != acc.answerMode) { + if (Api.account_set_answermode(acc.accp, answerMode) == 0) { + acc.answerMode = Api.account_answermode(acc.accp) + Log.d(TAG, "New answermode is ${acc.answerMode}") + } else { + Log.e(TAG, "Setting of answermode $answerMode failed") + } + } + + if (autoRedirect != acc.autoRedirect) { + Api.account_set_sip_autoredirect(acc.accp, autoRedirect) + acc.autoRedirect = autoRedirect + Log.d(TAG, "New autoRedirect is ${acc.autoRedirect}") + } + + var tVmUri = vmUri.text.toString().trim() + if (tVmUri != acc.vmUri) { + if (tVmUri != "") { + if (!tVmUri.startsWith("sip:")) tVmUri = "sip:$tVmUri" + if (!tVmUri.contains("@")) tVmUri = "$tVmUri@${acc.host()}" + if (!Utils.checkUri(tVmUri)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_or_tel_uri), tVmUri)) + return false + } + Api.account_set_mwi(acc.accp, true) + } else { + Api.account_set_mwi(acc.accp, false) + } + acc.vmUri = tVmUri + } + + val newCountryCode = countryCode.text.toString().trim() + if (newCountryCode != acc.countryCode) { + if (newCountryCode != "" && !Utils.checkCountryCode(newCountryCode)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_country_code), newCountryCode)) + return false + } + acc.countryCode = newCountryCode + } + + val hostPart = telProvider.text.toString().trim() + if (hostPart != acc.telProvider) { + if (hostPart != "" && !Utils.checkHostPortParams(hostPart)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_uri_hostpart), hostPart)) + return false + } + acc.telProvider = hostPart + } + + if (defaultCheck.isChecked && (uaIndex > 0)) { + BaresipService.uas.add(0, BaresipService.uas[uaIndex]) + BaresipService.uas.removeAt(uaIndex + 1) + } + + AccountsActivity.saveAccounts() + + if (reRegister) { + ua.status = R.drawable.circle_yellow + if (acc.regint == 0) + Api.ua_unregister(ua.uap) + else + Api.ua_register(ua.uap) + } + + BaresipService.activities.remove("account,$aor") + returnResult(Activity.RESULT_OK) + return true + } + + android.R.id.home -> { + goBack() + return true + } + + } + + return super.onOptionsItemSelected(item) + + } + + private fun goBack() { + BaresipService.activities.remove("account,$aor") + returnResult(Activity.RESULT_CANCELED) + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + + private fun bindTitles() { + binding.NickNameTitle.setOnClickListener{ + Utils.alertView(this, getString(R.string.nickname), + getString(R.string.account_nickname_help)) + } + binding.DisplayNameTitle.setOnClickListener{ + Utils.alertView(this, getString(R.string.display_name), + getString(R.string.display_name_help)) + } + binding.AuthUserTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.authentication_username), + getString(R.string.authentication_username_help) + ) + } + binding.AuthPassTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.authentication_password), + getString(R.string.authentication_password_help) + ) + } + binding.OutboundProxyTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.outbound_proxies), + getString(R.string.outbound_proxies_help) + ) + } + binding.RegTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.register), + getString(R.string.register_help) + ) + } + binding.RegIntTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.reg_int), + getString(R.string.reg_int_help) + ) + } + binding.AudioCodecsTitle.setOnClickListener { + val i = Intent(this, CodecsActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putString("media", "audio") + i.putExtras(b) + startActivity(i) + } + binding.VideoCodecsTitle.setOnClickListener { + val i = Intent(this, CodecsActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putString("media", "video") + i.putExtras(b) + startActivity(i) + } + binding.MediaNatTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.media_nat), + getString(R.string.media_nat_help) + ) + } + binding.StunServerTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.stun_server), + getString(R.string.stun_server_help) + ) + } + binding.StunUserTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.stun_username), + getString(R.string.stun_username_help) + ) + } + binding.StunPassTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.stun_password), + getString(R.string.stun_password_help) + ) + } + binding.MediaEncTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.media_encryption), + getString(R.string.media_encryption_help) + ) + } + binding.Rel100Title.setOnClickListener { + Utils.alertView( + this, getString(R.string.rel_100), + getString(R.string.rel_100_help) + ) + } + binding.DtmfModeTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.dtmf_mode), + getString(R.string.dtmf_mode_help) + ) + } + binding.AnswerModeTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.answer_mode), + getString(R.string.answer_mode_help) + ) + } + binding.RedirectModeTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.redirect_mode), + getString(R.string.redirect_mode_help) + ) + } + binding.VoicemailUriTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.voicemail_uri), + getString(R.string.voicemain_uri_help) + ) + } + binding.CountryCodeTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.country_code), + getString(R.string.country_code_help) + ) + } + binding.TelephonyProviderTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.telephony_provider), + getString(R.string.telephony_provider_help) + ) + } + binding.DefaultTitle.setOnClickListener { + Utils.alertView( + this, getString(R.string.default_account), + getString(R.string.default_account_help) + ) + } + } + + private fun returnResult(code: Int) { + val i = Intent() + if (code == Activity.RESULT_OK) + i.putExtra("aor", aor) + setResult(code, i) + finish() + } + + private fun checkOutboundUri(uri: String): Boolean { + if (!uri.startsWith("sip:")) return false + return Utils.checkHostPortParams(uri.substring(4)) + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AccountListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountListAdapter.kt new file mode 100644 index 0000000..9a0f8c7 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountListAdapter.kt @@ -0,0 +1,78 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageButton +import android.widget.TextView +import com.google.android.material.dialog.MaterialAlertDialogBuilder + +class AccountListAdapter(private val cxt: Context, private val rows: ArrayList) : + ArrayAdapter(cxt, R.layout.account_row, rows) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val aorView: TextView = view?.findViewById(R.id.aor)!! + val actionView: ImageButton = view?.findViewById(R.id.action)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + val ua = BaresipService.uas[position] + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.account_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val row = rows[position] + viewHolder.aorView.text = row.aor.split(":")[0] + viewHolder.aorView.textSize = 20f + viewHolder.aorView.setPadding(6, 6, 0, 6) + viewHolder.actionView.setImageResource(row.action) + + viewHolder.aorView.setOnClickListener { + val i = Intent(cxt, AccountActivity::class.java) + val b = Bundle() + b.putString("aor", BaresipService.uas[position].account.aor) + i.putExtras(b) + MainActivity.accountRequest!!.launch(i) + } + + viewHolder.actionView.setOnClickListener { + with (MaterialAlertDialogBuilder(cxt, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(String.format(cxt.getString(R.string.delete_account), + viewHolder.aorView.text)) + setPositiveButton(cxt.getText(R.string.delete)) { dialog, _ -> + Api.ua_destroy(ua.uap) + CallHistoryNew.clear(ua.account.aor) + Message.clear(ua.account.aor) + ua.remove() + AccountsActivity.generateAccounts() + AccountsActivity.saveAccounts() + this@AccountListAdapter.notifyDataSetChanged() + dialog.dismiss() + } + setNeutralButton(cxt.getText(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + + return rowView + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AccountRow.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountRow.kt new file mode 100644 index 0000000..48a0dc8 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountRow.kt @@ -0,0 +1,3 @@ +package com.tutpro.baresip.plus + +class AccountRow(val aor: String, val action: Int) diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AccountsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountsActivity.kt new file mode 100644 index 0000000..6f0bbd5 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AccountsActivity.kt @@ -0,0 +1,163 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.tutpro.baresip.plus.databinding.ActivityAccountsBinding + +class AccountsActivity : AppCompatActivity() { + + private lateinit var binding: ActivityAccountsBinding + private lateinit var alAdapter: AccountListAdapter + internal lateinit var aor: String + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + public override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + binding = ActivityAccountsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.AccountsView.updatePadding(top = 172) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + aor = intent.getStringExtra("aor")!! + Utils.addActivity("accounts,$aor") + + val listView = binding.accounts + generateAccounts() + alAdapter = AccountListAdapter(this, accounts) + listView.adapter = alAdapter + + val accountRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {} + + val addAccountButton = binding.addAccount + val newAorView = binding.newAor + addAccountButton.setOnClickListener { + val aor = newAorView.text.toString().trim() + if (!Utils.checkAor("sip:$aor")) { + Log.d(TAG, "Invalid Address of Record $aor") + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_aor), aor)) + return@setOnClickListener + } + if (Account.ofAor("sip:$aor") != null) { + Log.d(TAG, "Account $aor already exists") + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.account_exists), aor.split(":")[0])) + return@setOnClickListener + } + val laddr = "sip:$aor" + val ua = UserAgent.uaAlloc("<$laddr>;stunserver=\"stun:stun.l.google.com:19302\";regq=0.5;pubint=0;regint=0;mwi=no") + if (ua == null) { + Log.e(TAG, "Failed to allocate UA for $aor") + Utils.alertView(this, getString(R.string.notice), + getString(R.string.account_allocation_failure)) + return@setOnClickListener + } + // Api.account_debug(ua.account.accp) + Log.d(TAG, "Allocated UA ${ua.uap} for ${Api.account_luri(ua.account.accp)}") + newAorView.setText("") + newAorView.hint = getString(R.string.user_domain) + newAorView.clearFocus() + generateAccounts() + alAdapter.notifyDataSetChanged() + saveAccounts() + val i = Intent(this, AccountActivity::class.java) + val b = Bundle() + b.putString("aor", ua.account.aor) + b.putBoolean("new", true) + i.putExtras(b) + accountRequest.launch(i) + } + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("accounts,$aor") == -1) + return true + + when (item.itemId) { + + R.id.help -> { + Utils.alertView(this@AccountsActivity, getString(R.string.new_account), + getString(R.string.accounts_help)) + return true + } + + android.R.id.home -> { + goBack() + return true + } + } + + return super.onOptionsItemSelected(item) + + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.accounts_menu, menu) + return true + } + + private fun goBack() { + BaresipService.activities.remove("accounts,$aor") + setResult(Activity.RESULT_CANCELED, Intent()) + finish() + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + + companion object { + + var accounts = ArrayList() + + fun generateAccounts() { + accounts.clear() + for (ua in BaresipService.uas) + accounts.add(AccountRow(ua.account.aor.replace("sip:", ""), + R.drawable.delete)) + } + + fun saveAccounts() { + var accounts = "" + for (a in Account.accounts()) accounts = accounts + a.print() + "\n" + Utils.putFileContents(BaresipService.filesPath + "/accounts", accounts.toByteArray(Charsets.UTF_8)) + // Log.d(TAG, "Saved accounts '${accounts}' to '${BaresipService.filesPath}/accounts'") + } + + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidContactActivity.kt new file mode 100644 index 0000000..a8ee330 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidContactActivity.kt @@ -0,0 +1,106 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.view.MenuItem +import android.view.View +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.cardview.widget.CardView +import com.tutpro.baresip.plus.databinding.ActivityAndroidContactBinding + +class AndroidContactActivity : AppCompatActivity() { + + private lateinit var binding: ActivityAndroidContactBinding + private lateinit var layout: LinearLayout + private lateinit var textAvatarView: TextView + private lateinit var cardAvatarView: CardView + private lateinit var cardImageAvatarView: ImageView + private lateinit var nameView: TextView + private lateinit var ulAdapter: AndroidUriListAdapter + private lateinit var aor: String + + private var index = 0 + private var color = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + binding = ActivityAndroidContactBinding.inflate(layoutInflater) + setContentView(binding.root) + layout = binding.ContactView + + aor = intent.getStringExtra("aor")!! + index = intent.getIntExtra("index", 0) + + textAvatarView = binding.TextAvatar + cardAvatarView = binding.CardAvatar + cardImageAvatarView = binding.ImageAvatar + nameView = binding.Name + + val contact = Contact.contacts()[index] as Contact.AndroidContact + val name = contact.name + color = contact.color + val thumbnailUri = contact.thumbnailUri + if (thumbnailUri != null) + showImageAvatar(thumbnailUri) + else + showTextAvatar(name, color) + title = name + nameView.text = name + + val listView = binding.uris + ulAdapter = AndroidUriListAdapter(this, contact.uris, aor) + listView.adapter = ulAdapter + + Utils.addActivity("android contact,$aor,$index") + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("android contact,$aor,$index") == -1) + return true + + when (item.itemId) { + android.R.id.home -> + goBack() + } + + return true + + } + + private fun goBack() { + BaresipService.activities.remove("android contact,$index") + setResult(Activity.RESULT_CANCELED, Intent(this, MainActivity::class.java)) + finish() + } + + private fun showTextAvatar(name: String, color: Int) { + textAvatarView.visibility = View.VISIBLE + cardAvatarView.visibility = View.GONE + textAvatarView.background.setTint(color) + textAvatarView.text = "${name[0]}" + } + + private fun showImageAvatar(thumbNailUri: Uri) { + textAvatarView.visibility = View.GONE + cardAvatarView.visibility = View.VISIBLE + cardImageAvatarView.setImageURI(thumbNailUri) + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidUriListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidUriListAdapter.kt new file mode 100644 index 0000000..e83a8b5 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AndroidUriListAdapter.kt @@ -0,0 +1,76 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageButton +import android.widget.TextView + +class AndroidUriListAdapter(private val ctx: Context, private val rows: ArrayList, val aor: String) : + ArrayAdapter(ctx, R.layout.android_uri_row, rows) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val uriView: TextView = view?.findViewById(R.id.uri)!! + val messageView: ImageButton = view?.findViewById(R.id.message)!! + val callView: ImageButton = view?.findViewById(R.id.call)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.android_uri_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val uri = rows[position] + + viewHolder.uriView.text = uri.substringAfter(":") + + viewHolder.messageView.setOnClickListener { + val i = Intent(ctx, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + i.putExtra("action", "message") + val ua = UserAgent.ofAor(aor) + if (ua == null) { + Log.w(TAG, "onClickListener did not find AoR $aor") + } else { + BaresipService.activities.clear() + i.putExtra("uap", ua.uap) + i.putExtra("peer", uri) + (ctx as Activity).startActivity(i) + } + } + + viewHolder.callView.setOnClickListener { + val i = Intent(ctx, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + i.putExtra("action", "call") + val ua = UserAgent.ofAor(aor) + if (ua == null) { + Log.w(TAG, "onClickListener did not find AoR $aor") + } else { + BaresipService.activities.clear() + i.putExtra("uap", ua.uap) + i.putExtra("peer", uri) + (ctx as Activity).startActivity(i) + } + } + + return rowView + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Api.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Api.kt new file mode 100644 index 0000000..2502eb1 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Api.kt @@ -0,0 +1,136 @@ +package com.tutpro.baresip.plus + +object Api { + + const val VIDMODE_OFF = 0 + const val VIDMODE_ON = 1 + const val ANSWERMODE_MANUAL = 0 + const val ANSWERMODE_AUTO = 2 + const val DTMFMODE_RTP_EVENT = 0 + const val DTMFMODE_SIP_INFO = 1 + const val DTMFMODE_AUTO = 2 + const val REL100_DISABLED = 0 + const val REL100_ENABLED = 1 + // const cal REL100_REQUIRED = 2 + + const val SDP_INACTIVE = 0 + const val SDP_RECVONLY = 1 + // const val SDP_SENDONLY = 2 + const val SDP_SENDRECV = 3 + + const val CALL_STATE_EARLY = 4 + + external fun account_set_display_name(acc: Long, dn: String): Int + external fun account_display_name(acc: Long): String + external fun account_aor(acc: Long): String + external fun account_luri(acc: Long): String + external fun account_auth_user(acc: Long): String + external fun account_set_auth_user(acc: Long, user: String): Int + external fun account_auth_pass(acc: Long): String + external fun account_set_auth_pass(acc: Long, pass: String): Int + external fun account_outbound(acc: Long, ix: Int): String + external fun account_set_outbound(acc: Long, ob: String, ix: Int): Int + external fun account_set_sipnat(acc: Long, sipnat: String): Int + external fun account_audio_codec(acc: Long, ix: Int): String + external fun account_video_codec(acc: Long, ix: Int): String + external fun account_regint(acc: Long): Int + external fun account_set_regint(acc: Long, regint: Int): Int + external fun account_stun_uri(acc: Long): String + external fun account_set_stun_uri(acc: Long, uri: String): Int + external fun account_stun_user(acc: Long): String + external fun account_set_stun_user(acc: Long, user: String): Int + external fun account_stun_pass(acc: Long): String + external fun account_set_stun_pass(acc: Long, pass: String): Int + external fun account_mediaenc(acc: Long): String + external fun account_set_mediaenc(acc: Long, mediaenc: String): Int + external fun account_medianat(acc: Long): String + external fun account_set_medianat(acc: Long, medianat: String): Int + external fun account_set_audio_codecs(acc: Long, codecs: String): Int + external fun account_set_video_codecs(acc: Long, codecs: String): Int + external fun account_set_mwi(acc: Long, value: Boolean): Int + external fun account_vm_uri(acc: Long): String + external fun account_answermode(acc: Long): Int + external fun account_set_answermode(acc: Long, mode: Int): Int + external fun account_sip_autoredirect(acc: Long): Boolean + external fun account_set_sip_autoredirect(acc: Long, allow: Boolean) + external fun account_rel100_mode(acc: Long): Int + external fun account_set_rel100_mode(acc: Long, mode: Int): Int + external fun account_rtcp_mux(acc: Long): Boolean + external fun account_set_rtcp_mux(acc: Long, value: Boolean): Int + external fun account_dtmfmode(acc: Long): Int + external fun account_set_dtmfmode(acc: Long, mode: Int): Int + external fun account_extra(acc: Long): String + external fun account_debug(acc: Long) + + external fun uag_reset_transp(register: Boolean, reinvite: Boolean) + external fun uag_enable_sip_trace(enable: Boolean) + + external fun ua_account(uap: Long): Long + external fun ua_update_account(uap: Long): Long + external fun ua_alloc(uri: String): Long + external fun ua_destroy(uap: Long) + external fun ua_register(uap: Long): Int + external fun ua_isregistered(uap: Long): Boolean + external fun ua_unregister(uap: Long) + external fun ua_accept(uap: Long, msg: Long) + external fun ua_hangup(uap: Long, callp: Long, code: Int, reason: String) + external fun ua_call_alloc(uap: Long, xcallp: Long, video: Int): Long + external fun ua_answer(uap: Long, callp: Long, vmode: Int) + external fun ua_add_custom_header(uap: Long, name: String, body: String) + external fun ua_debug(uap: Long) + + external fun sip_treply(msg: Long, code: Int, reason: String) + + external fun bevent_stop(event: Long) + + external fun call_connect(callp: Long, peer_uri: String): Int + external fun call_hold(callp: Long, hold: Boolean): Int + external fun call_ismuted(callp: Long): Boolean + external fun call_transfer(callp: Long, peer_uri: String): Int + external fun call_send_digit(callp: Long, digit: Char): Int + external fun call_notify_sipfrag(callp: Long, code: Int, reason: String) + external fun call_start_video_display(callp: Long): Int + external fun call_stop_video_display(callp: Long) + external fun call_audio_codecs(callp: Long): String + external fun call_video_codecs(callp: Long): String + external fun call_duration(callp: Long): Int + external fun call_stats(callp: Long, stream: String): String + external fun call_state(callp: Long): Int + external fun call_has_video(callp: Long): Boolean + external fun call_set_video_source(callp: Long, front: Boolean): Int + external fun call_set_video_direction(callp: Long, dir: Int) + external fun call_set_media_direction(callp: Long, adir: Int, vdir: Int) + external fun call_disable_video_stream(callp: Long, disable: Boolean) + external fun call_video_enabled(callp: Long): Boolean + external fun call_replaces(callp: Long): Boolean + external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean + external fun call_peer_uri(callp: Long): String + external fun call_diverter_uri(callp: Long): String + external fun call_destroy(callp: Long) + + external fun calls_mute(mute: Boolean) + + external fun message_send(uap: Long, peer_uri: String, message: String, time: String): Int + + external fun audio_codecs(): String + external fun video_codecs(): String + + external fun log_level_set(level: Int) + + external fun net_use_nameserver(servers: String): Int + external fun net_add_address_ifname(ip_addr: String, if_name: String): Int + external fun net_rm_address(ip_addr: String): Int + external fun net_debug() + external fun net_dns_debug() + + external fun config_video_fps_set(fps: Int) + external fun config_video_frame_size_set(width: Int, height: Int) + external fun config_verify_server_set(verify: Boolean) + external fun config_transport_server_set(verify: String) // by ritoseo + + external fun cmd_exec(cmd: String): Int + + external fun module_load(module: String): Int + external fun module_unload(module: String) + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/AudioActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/AudioActivity.kt new file mode 100644 index 0000000..71b1707 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/AudioActivity.kt @@ -0,0 +1,437 @@ +package com.tutpro.baresip.plus + +import android.os.Build +import android.os.Bundle +import android.util.TypedValue +import android.view.Gravity +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.tutpro.baresip.plus.databinding.ActivityAudioBinding + +class AudioActivity : AppCompatActivity() { + + private lateinit var binding: ActivityAudioBinding + private lateinit var micGain: EditText + private lateinit var opusBitRate: EditText + private lateinit var opusPacketLoss: EditText + private lateinit var aec: CheckBox + private lateinit var speakerPhone: CheckBox + private lateinit var audioDelay: EditText + + private var save = false + private var restart = false + private var callVolume = BaresipService.callVolume + private var oldMicGain = "" + private var oldAudioModules = mutableMapOf() + private var oldOpusBitrate = "" + private var oldOpusPacketLoss = "" + private var oldAec = false + private var toneCountry = BaresipService.toneCountry + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + binding = ActivityAudioBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.AudioView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + Utils.addActivity("audio") + + val callVolSpinner = binding.VolumeSpinner + val volKeys = arrayListOf("None", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10") + val volVals = arrayListOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + val curVal = callVolume + val curKey = volKeys[curVal] + volKeys.removeAt(curVal) + volVals.removeAt(curVal) + volKeys.add(0, curKey) + volVals.add(0, curVal) + val callVolAdapter = ArrayAdapter( + this, android.R.layout.simple_spinner_item, + volKeys + ) + callVolAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + callVolSpinner.adapter = callVolAdapter + callVolSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>, + view: View?, + position: Int, + id: Long + ) { + callVolume = volVals[volKeys.indexOf(parent.selectedItem.toString())] + } + + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + if (!BaresipService.agcAvailable) { + micGain = binding.MicGain + oldMicGain = Config.variable("augain") + micGain.setText(oldMicGain) + } else { + binding.MicGainLayout.visibility = View.GONE + } + + speakerPhone = binding.SpeakerPhone + speakerPhone.isChecked = BaresipService.speakerPhone + + val modules = Config.variables("module") + + val audioModulesList = binding.AudioModulesList + var id = 1000 + for (module in audioModules) { + val rl = RelativeLayout(this) + val rlParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + rlParams.marginStart = 16 + rl.layoutParams = rlParams + val tv = TextView(this) + tv.id = id++ + val tvParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + tvParams.addRule(RelativeLayout.ALIGN_PARENT_START) + tvParams.addRule(RelativeLayout.CENTER_VERTICAL) + tvParams.addRule(RelativeLayout.START_OF, id) + tv.layoutParams = tvParams + tv.text = String.format(getString(R.string.bullet_item), module) + tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f) + tv.setTextColor(ContextCompat.getColor(this, R.color.colorItemText)) + rl.addView(tv) + val cb = CheckBox(this) + cb.id = id++ + val cbParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + cbParams.addRule(RelativeLayout.ALIGN_PARENT_END) + cbParams.addRule(RelativeLayout.CENTER_VERTICAL) + cb.layoutParams = cbParams + cb.gravity = Gravity.END + cb.isChecked = modules.contains("${module}.so") + oldAudioModules[module] = cb.isChecked + rl.addView(cb) + audioModulesList.addView(rl) + } + + opusBitRate = binding.OpusBitRate + oldOpusBitrate = Config.variable("opus_bitrate") + opusBitRate.setText(oldOpusBitrate) + + opusPacketLoss = binding.OpusPacketLoss + oldOpusPacketLoss = Config.variable("opus_packet_loss") + opusPacketLoss.setText(oldOpusPacketLoss) + + aec = binding.Aec + oldAec = modules.contains("webrtc_aecm.so") + aec.isChecked = oldAec + + audioDelay = binding.AudioDelay + audioDelay.setText("${BaresipService.audioDelay}") + + val toneCountrySpinner = binding.ToneCountrySpinner + val toneCountryKeys = arrayListOf("bg", "br", "de", "cz", "es", "fi", "fr", "uk", "jp", "no", "nz", "se", "ru", "us") + val toneCountryVals = arrayListOf("BG", "BR", "DE", "CZ", "ES", "FI", "FR", "GB", "JP", "NO", "NZ", "SE", "RU", "US") + val keyIx = toneCountryKeys.indexOf(toneCountry) + val keyVal = toneCountryVals.elementAt(keyIx) + toneCountryKeys.removeAt(keyIx) + toneCountryVals.removeAt(keyIx) + toneCountryKeys.add(0, toneCountry) + toneCountryVals.add(0, keyVal) + val toneCountryAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + toneCountryVals) + toneCountryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + toneCountrySpinner.adapter = toneCountryAdapter + toneCountrySpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + toneCountry = toneCountryKeys[toneCountryVals.indexOf(parent.selectedItem.toString())] + } + override fun onNothingSelected(parent: AdapterView<*>) { + } + } + + bindTitles() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + + super.onCreateOptionsMenu(menu) + val inflater = menuInflater + inflater.inflate(R.menu.check_icon, menu) + return true + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("audio") == -1) + return true + + when (item.itemId) { + + R.id.checkIcon -> { + + if (BaresipService.callVolume != callVolume) { + BaresipService.callVolume = callVolume + Config.replaceVariable("call_volume", callVolume.toString()) + save = true + } + + var gain = "1.0" + if (!BaresipService.agcAvailable) { + gain = micGain.text.toString().trim() + if (!gain.contains(".")) + gain = "$gain.0" + if (gain != oldMicGain) { + if (!checkMicGain(gain)) { + Utils.alertView( + this, getString(R.string.notice), + "${getString(R.string.invalid_microphone_gain)}: $gain." + ) + micGain.setText(oldMicGain) + return false + } + if (gain == "1.0") { + Api.module_unload("augain") + Config.removeVariableValue("module", "augain.so") + Config.replaceVariable("augain", "1.0") + } else { + if (oldMicGain == "1.0") { + if (Api.module_load("augain") != 0) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.failed_to_load_module) + ) + micGain.setText(oldMicGain) + return false + } + Config.addVariable("module", "augain.so") + } + Config.replaceVariable("augain", gain) + Api.cmd_exec("augain $gain") + } + save = true + } + } + + if (speakerPhone.isChecked != BaresipService.speakerPhone) { + BaresipService.speakerPhone = speakerPhone.isChecked + Config.replaceVariable("speaker_phone", + if (BaresipService.speakerPhone) "yes" else "no") + save = true + } + + var id = 1001 + for (module in audioModules) { + val box = findViewById(id++) + if (box.isChecked && !oldAudioModules[module]!!) { + if (Api.module_load("${module}.so") != 0) { + Utils.alertView(this, getString(R.string.error), + "${getString(R.string.failed_to_load_module)}: ${module}.so") + return false + } + Config.addVariable("module", "${module}.so") + save = true + } + if (!box.isChecked && oldAudioModules[module]!!) { + Api.module_unload("${module}.so") + Config.removeVariableValue("module", "${module}.so") + for (ua in BaresipService.uas) + ua.account.removeAudioCodecs(module) + AccountsActivity.saveAccounts() + save = true + } + id++ + } + + val opusBitRate = opusBitRate.text.toString().trim() + if (opusBitRate != oldOpusBitrate) { + if (!checkOpusBitRate(opusBitRate)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_opus_bitrate)}: $opusBitRate.") + return false + } + Config.replaceVariable("opus_bitrate", opusBitRate) + restart = true + save = true + } + + val opusPacketLoss = opusPacketLoss.text.toString().trim() + if (opusPacketLoss != oldOpusPacketLoss) { + if (!checkOpusPacketLoss(opusPacketLoss)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_opus_packet_loss)}: $opusPacketLoss") + return false + } + Config.replaceVariable("opus_packet_loss", opusPacketLoss) + restart = true + save = true + } + + if (aec.isChecked != oldAec) { + if (aec.isChecked) { + Config.addVariable("module", "webrtc_aecm.so") + if (gain != "1.0") { + restart = true + } else { + if (Api.module_load("webrtc_aecm.so") != 0) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.failed_to_load_module) + ) + aec.isChecked = false + return false + } + } + BaresipService.webrtcAec = true + } else { + Api.module_unload("webrtc_aecm.so") + Config.removeVariableValue("module", "webrtc_aecm.so") + BaresipService.webrtcAec = false + } + save = true + } + + val audioDelay = audioDelay.text.toString().trim() + if (audioDelay != BaresipService.audioDelay.toString()) { + if (!checkAudioDelay(audioDelay)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_audio_delay), audioDelay)) + return false + } + Config.replaceVariable("audio_delay", audioDelay) + BaresipService.audioDelay = audioDelay.toLong() + save = true + } + + if (BaresipService.toneCountry != toneCountry) { + BaresipService.toneCountry = toneCountry + Config.replaceVariable("tone_country", toneCountry) + save = true + } + + if (save) + Config.save() + + setResult(if (restart) RESULT_OK else RESULT_CANCELED) + + BaresipService.activities.remove("audio") + finish() + return true + } + + android.R.id.home -> { + goBack() + return true + } + + } + + return super.onOptionsItemSelected(item) + + } + + private fun goBack() { + BaresipService.activities.remove("audio") + finish() + } + + private fun bindTitles() { + binding.VolumeTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.default_call_volume), + getString(R.string.default_call_volume_help)) + } + binding.MicGainTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.microphone_gain), + getString(R.string.microphone_gain_help) + ) + } + binding.SpeakerPhoneTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.speaker_phone), + getString(R.string.speaker_phone_help)) + } + binding.AudioModulesTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.audio_modules_title), + getString(R.string.audio_modules_help)) + } + binding.OpusBitRateTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.opus_bit_rate), + getString(R.string.opus_bit_rate_help)) + } + binding.OpusPacketLossTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.opus_packet_loss), + getString(R.string.opus_packet_loss_help)) + } + binding.AecTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.aec), + getString(R.string.aec_help)) + } + binding.AudioDelayTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.audio_delay), + getString(R.string.audio_delay_help)) + } + binding.ToneCountryTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.tone_country), + getString(R.string.tone_country_help)) + } + } + + private fun checkMicGain(micGain: String): Boolean { + val number = + try { + micGain.toDouble() + } catch (e: NumberFormatException) { + return false + } + return number >= 1.0 + } + + private fun checkOpusBitRate(opusBitRate: String): Boolean { + val number = opusBitRate.toIntOrNull() ?: return false + return (number >= 6000) && (number <= 510000) + } + + private fun checkOpusPacketLoss(opusPacketLoss: String): Boolean { + val number = opusPacketLoss.toIntOrNull() ?: return false + return (number >= 0) && (number <= 100) + } + + private fun checkAudioDelay(audioDelay: String): Boolean { + val number = audioDelay.toIntOrNull() ?: return false + return (number >= 100) && (number <= 3000) + } + + companion object { + val audioModules = listOf("opus", "amr", "g722", "g7221", "g726", "g729", "codec2", "g711") + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/BaresipService.kt new file mode 100644 index 0000000..69065f1 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/BaresipService.kt @@ -0,0 +1,2447 @@ +package com.tutpro.baresip.plus + +import android.Manifest +import android.annotation.SuppressLint +import android.app.* +import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothHeadset +import android.bluetooth.BluetoothManager +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.pm.PackageManager +import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA +import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE +import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL +import android.database.ContentObserver +import android.graphics.BitmapFactory +import android.graphics.Rect +import android.hardware.display.DisplayManager +import android.media.* +import android.media.AudioManager.MODE_IN_COMMUNICATION +import android.media.AudioManager.MODE_NORMAL +import android.media.AudioManager.RINGER_MODE_SILENT +import android.media.audiofx.AcousticEchoCanceler +import android.media.audiofx.AutomaticGainControl +import android.media.audiofx.NoiseSuppressor +import android.net.* +import android.net.wifi.WifiManager +import android.os.* +import android.os.Build.VERSION +import android.provider.ContactsContract +import android.provider.Settings +import android.telecom.TelecomManager +import android.text.Spannable +import android.text.SpannableString +import android.text.style.ForegroundColorSpan +import android.util.JsonReader +import android.util.Size +import android.view.LayoutInflater +import android.view.View +import android.widget.RemoteViews +import android.widget.TextView +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.ColorRes +import androidx.annotation.Keep +import androidx.annotation.StringRes +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.core.app.NotificationCompat +import androidx.core.content.ContextCompat +import androidx.lifecycle.MutableLiveData +import androidx.media.AudioAttributesCompat +import androidx.media.AudioFocusRequestCompat +import androidx.media.AudioManagerCompat +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import org.json.JSONArray +import org.json.JSONObject +import java.io.File +import java.io.IOException +import java.net.InetAddress +import java.nio.ByteBuffer +import java.nio.charset.Charset +import java.nio.charset.StandardCharsets +import java.time.Clock +import java.time.LocalDate +import java.time.LocalDateTime +import java.util.* +import kotlin.concurrent.schedule +import kotlin.math.roundToInt + +class BaresipService: Service() { + + internal lateinit var intent: Intent + private lateinit var am: AudioManager + private lateinit var rt: Ringtone + private lateinit var nt: Ringtone + private lateinit var nm: NotificationManager + private lateinit var snb: NotificationCompat.Builder + private lateinit var cm: ConnectivityManager + private lateinit var pm: PowerManager + private lateinit var wm: WifiManager + private lateinit var tm: TelecomManager + private lateinit var btm: BluetoothManager + private lateinit var vibrator: Vibrator + private lateinit var partialWakeLock: PowerManager.WakeLock + private lateinit var proximityWakeLock: PowerManager.WakeLock + private lateinit var wifiLock: WifiManager.WifiLock + private lateinit var bluetoothReceiver: BroadcastReceiver + private lateinit var hotSpotReceiver: BroadcastReceiver + private lateinit var androidContactsObserver: ContentObserver + private lateinit var stopState: String + private lateinit var quitTimer: CountDownTimer + + private var vbTimer: Timer? = null + private var origVolume = mutableMapOf() + private var linkAddresses = mutableMapOf() + private var activeNetwork: Network? = null + private var allNetworks = mutableSetOf() + private var hotSpotIsEnabled = false + private var hotSpotAddresses = mapOf() + private var mediaPlayer: MediaPlayer? = null + private var androidContactsObserverRegistered = false + private var isServiceClean = false + + private lateinit var sipReqeustReceiver: BroadcastReceiver + + @SuppressLint("WakelockTimeout") + override fun onCreate() { + super.onCreate() + + Log.d(TAG, "BaresipService onCreate") + + intent = Intent("com.tutpro.baresip.plus.EVENT") + intent.setPackage("com.tutpro.baresip.plus") + + filesPath = filesDir.absolutePath + pName = packageName + + + am = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager + + val ntUri = RingtoneManager.getActualDefaultRingtoneUri(applicationContext, + RingtoneManager.TYPE_NOTIFICATION) + nt = RingtoneManager.getRingtone(applicationContext, ntUri) + + val rtUri = RingtoneManager.getActualDefaultRingtoneUri(applicationContext, + RingtoneManager.TYPE_RINGTONE) + rt = RingtoneManager.getRingtone(applicationContext, rtUri) + + nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + createNotificationChannels() + snb = NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID) + + pm = getSystemService(Context.POWER_SERVICE) as PowerManager + + vibrator = if (VERSION.SDK_INT >= 31) { + val vibratorManager = applicationContext.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager + vibratorManager.defaultVibrator + } else { + @Suppress("DEPRECATION") + applicationContext.getSystemService(AppCompatActivity.VIBRATOR_SERVICE) as Vibrator + } + + // This is needed to keep service running also in Doze Mode + partialWakeLock = pm.run { + newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, + "com.tutpro.baresip:partial_wakelog" + ).apply { + acquire() + } + } + + cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val builder = NetworkRequest.Builder() + .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) + cm.registerNetworkCallback( + builder.build(), + object : ConnectivityManager.NetworkCallback() { + + override fun onAvailable(network: Network) { + super.onAvailable(network) + Log.d(TAG, "Network $network is available") + if (network !in allNetworks) + allNetworks.add(network) + + val netInfo = Utils.getEthernetInfo(applicationContext) + Utils.propertySet("sys.ritosip.ipv4.address", netInfo.get("ip")!!) + + val newIntent = Intent() + newIntent.setClassName("kr.co.rito.ritosip", "com.tutpro.baresip.plus.MainActivity") + newIntent.flags = + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", "network available") + newIntent.putExtra("address", netInfo.get("ip")) + deviceIpAddress = netInfo.get("ip")!! + startActivity(newIntent) + } + + override fun onLosing(network: Network, maxMsToLive: Int) { + super.onLosing(network, maxMsToLive) + Log.d(TAG, "Network $network is losing after $maxMsToLive ms") + } + + override fun onLost(network: Network) { + super.onLost(network) + Log.d(TAG, "Network $network is lost") + if (network in allNetworks) + allNetworks.remove(network) + if (isServiceRunning) + updateNetwork() + } + + override fun onCapabilitiesChanged(network: Network, caps: NetworkCapabilities) { + super.onCapabilitiesChanged(network, caps) + Log.d(TAG, "Network $network capabilities changed: $caps") + if (network !in allNetworks) + allNetworks.add(network) + if (isServiceRunning) + updateNetwork() + } + + override fun onLinkPropertiesChanged(network: Network, props: LinkProperties) { + super.onLinkPropertiesChanged(network, props) + Log.d(TAG, "Network $network link properties changed: $props") + if (network !in allNetworks) + allNetworks.add(network) + if (isServiceRunning) + updateNetwork() + } + + } + ) + + + fun aorGenerateHistory(aor: String) { + CallsActivity.uaHistory.clear() + for (i in BaresipService.callHistory.indices.reversed()) { + val h = BaresipService.callHistory[i] + if (h.aor == aor) { + val direction: Int = if (h.direction == "in") { + if (h.startTime != null) { + R.drawable.call_down_green + } else { + if (h.rejected) + R.drawable.call_down_red + else + R.drawable.call_missed_in + } + } else { + if (h.startTime != null) { + R.drawable.call_up_green + } else { + if (h.rejected) + R.drawable.call_up_red + else + R.drawable.call_missed_out + } + } + //println("[History] ${h.startTime?.toZonedDateTime()} ${h.peerUri} ${h.direction}") + CallsActivity.uaHistory.add( + CallRow( + h.aor, h.peerUri, direction, h.startTime, h.stopTime, + h.recording + ) + ) + } + } + } + + + sipReqeustReceiver = object : BroadcastReceiver() { + fun sendContactList() { + val resArr : JSONArray = JSONArray() + for(idx in 0..baresipContacts.size - 1) { + val res : JSONObject = JSONObject() + val row = baresipContacts[idx] + var directionStr : String + + res.put("id", row.id) + res.put("name", row.name) + res.put("favorite", row.favorite) + res.put("uri", row.uri) + + resArr.put(res) + } + + val responseIntent = Intent("kr.co.rito.ritosip.RESPONSE") + responseIntent.putExtra("req", "contact_list") + responseIntent.putExtra("data", resArr.toString()) + responseIntent.setPackage("kr.co.rito.sipsvc"); + sendBroadcast(responseIntent) + } + + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action == "kr.co.rito.ritosip.REQUEST") { + val req = intent?.getStringExtra("request") + println("[RITO] GOT Req : ${req}") + if(req == "call_history") { + if(uas.size > 0) { + aorGenerateHistory(BaresipService.uas[0].account.aor) + } + + val resArr : JSONArray = JSONArray() + for(idx in 0..CallsActivity.uaHistory.size - 1) { + val res : JSONObject = JSONObject() + val row = CallsActivity.uaHistory[idx] + var directionStr : String + + if(row.direction == R.drawable.call_down_green || row.direction == R.drawable.call_down_red || row.direction == R.drawable.call_missed_in) { + directionStr = "in" + } else { + directionStr = "out" + } + + res.put("peerUri", row.peerUri) + res.put("direction", directionStr) + res.put("stopTime", row.stopTime.toZonedDateTime()) + + resArr.put(res) + } + + val responseIntent = Intent("kr.co.rito.ritosip.RESPONSE") + responseIntent.putExtra("req", req) + responseIntent.putExtra("data", resArr.toString()) + responseIntent.setPackage("kr.co.rito.sipsvc"); + context?.sendBroadcast(responseIntent) + } else if(req == "contact_list") { + sendContactList() + } else if(req == "save_address") { + val param = intent?.getStringExtra("param") + var result = "failed" + if(param != null) { + val json = JSONObject(param) + val name = json.getString("name") + //val favorite = json.getString("favorite") + val uri = json.getString("uri") + + val contact = Contact.BaresipContact(name, uri, 0, SystemClock.elapsedRealtime(), false) + Contact.addBaresipContact(contact) + Contact.saveBaresipContacts() + result = "success" + } + + val responseIntent = Intent("kr.co.rito.ritosip.RESPONSE") + responseIntent.putExtra("req", req) + responseIntent.putExtra("data", result) + responseIntent.setPackage("kr.co.rito.sipsvc") + context?.sendBroadcast(responseIntent) + + sendContactList() + } else if(req == "remove_address") { + val param = intent?.getStringExtra("param") + var result = "failed" + if(param != null) { + val json = JSONObject(param) + val uri = json.getString("uri") + + val iterator = baresipContacts.iterator() + while (iterator.hasNext()) { + val it = iterator.next() + if(it.uri == uri) { + iterator.remove() + Contact.saveBaresipContacts() + result = "success" + } + } + } + + val responseIntent = Intent("kr.co.rito.ritosip.RESPONSE") + responseIntent.putExtra("req", req) + responseIntent.putExtra("data", result) + responseIntent.setPackage("kr.co.rito.sipsvc"); + context?.sendBroadcast(responseIntent) + + sendContactList() + } + + if(req == "start_call") { + if(uas.size > 0) { + val param = intent?.getStringExtra("param") + if (param != null) { + val json = JSONObject(param) + uas[0].account.resumeUri = json.getString("number") + } else { + uas[0].account.resumeUri = "7779" + } + println("resumeUri : ${uas[0].account.resumeUri}") + val newIntent = Intent(context, MainActivity::class.java) + newIntent.flags = + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", "video call") + newIntent.putExtra("peer", uas[0].account.resumeUri) + startActivity(newIntent) + } + } else if(req == "stop_call") { + if(uas.size > 0) { + val newIntent = Intent(context, MainActivity::class.java) + newIntent.flags = + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", "hangup") + startActivity(newIntent) + } + } else if(req == "audio_mute") { + Api.calls_mute(true) + isMicMuted = true + } else if(req == "audio_unmute") { + Api.calls_mute(false) + isMicMuted = false + } else if(req == "set_account") { + UserAgent.deleteAllUas() + val param = intent?.getStringExtra("param") + if(param != null) { + try { + val json = JSONObject(param) + val display_name = json.getString("display_name") + val account_name = json.getString("account_name") + val password = json.getString("password") + val server_address = json.getString("server_address") + val transport = json.getString("transport") + val media_encryption = json.getString("media_encryption") + //var param = "transport=tls" + val ua = UserAgent.uaAlloc("sip:${account_name}@${server_address}") + if (ua != null) { + val acc = ua.account + acc.nickName = display_name + acc.displayName = acc.nickName + + //acc.authUser = account_name + //acc.authPass = password + Api.account_set_display_name(acc.accp, display_name) + Api.account_set_auth_user(acc.accp, account_name) + acc.authUser = Api.account_auth_user(acc.accp) + Api.account_set_auth_pass(acc.accp, password) + acc.authPass = Api.account_auth_pass(acc.accp) + + Api.account_set_answermode(acc.accp, Api.ANSWERMODE_AUTO) + acc.answerMode = Api.ANSWERMODE_AUTO + + + /* + Api.log_level_set(0) + Log.logLevelSet(0) + Api.uag_enable_sip_trace(true) + */ + Api.ua_register(ua.uap) + + if (transport != null && transport.length > 0) { + Config.replaceVariable("prefer_transport", transport) + BaresipService.preferTransport = transport + Config.save() + } + applyTransportConfiguration() + + if (media_encryption != null && media_encryption.length > 0) { + var mediaEnc = "" + if(media_encryption == "srtpo") { + mediaEnc = "srtp" + } else if(media_encryption == "srtpm") { + mediaEnc = "srtp-mand" + } + + if (mediaEnc != acc.mediaEnc) { + if (Api.account_set_mediaenc(acc.accp, mediaEnc) == 0) { + acc.mediaEnc = Api.account_mediaenc(acc.accp) + println("[RITO] New mediaenc is ${acc.mediaEnc}") + } else { + Log.e(TAG, "Setting of mediaenc $mediaEnc failed") + } + } + } + + /* + Api.config_verify_server_set(false) + Api.config_transport_server_set("tls") + Api.uag_reset_transp(true, true) + */ + + Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL) + acc.regint = REGISTRATION_INTERVAL + + //UserAgent.apply { ua } + println("[RITO] set_account : ${ua.account.print()}") + BaresipService.uas[0] = ua + //Api.ua_register(ua.uap) + AccountsActivity.generateAccounts() + AccountsActivity.saveAccounts() + //UserAgent.register() + } + } catch(e : Exception) { + e.printStackTrace() + } + } + } else if(req == "layout_setting") { + val param = intent?.getStringExtra("param") + if(param != null) { + val json = JSONObject(param) + val layout = json.getString("layout") + + if(layout == "layout1") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_최대_근거리_우하단 + } else if(layout == "layout2") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_최대_근거리_우상단 + } else if(layout == "layout3") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌상단 + } else if(layout == "layout4") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌하단 + } else if(layout == "layout5") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_대상단_근거리_소하단 + } else if(layout == "layout6") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_대좌단_근거리_소우단 + } else if(layout == "layout7") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_대하단_근거리_소상단 + } else if(layout == "layout8") { + displaySplitMode = DISPLAY_SPLIT_MODE_원거리_반좌단_근거리_반우단 + } + + sendActivityAction("update layout") + } + } else if(req == "misc_setting") { + val param = intent?.getStringExtra("param") + if(param != null) { + val json = JSONObject(param) + val device_name = json.getString("device_name") + + Config.replaceVariable("device_name", device_name) + BaresipService.deviceName = device_name + Config.save() + + sendActivityAction("update info") + } + } + } + } + } + this.registerReceiver(sipReqeustReceiver, + IntentFilter("kr.co.rito.ritosip.REQUEST")) + + wm = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager + hotSpotIsEnabled = Utils.isHotSpotOn(wm) + + hotSpotReceiver = object : BroadcastReceiver() { + override fun onReceive(contxt: Context, intent: Intent) { + val action = intent.action + if ("android.net.wifi.WIFI_AP_STATE_CHANGED" == action) { + val state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0) + if (WifiManager.WIFI_STATE_ENABLED == state % 10) { + if (hotSpotIsEnabled) { + Log.d(TAG, "HotSpot is still enabled") + } else { + Log.d(TAG, "HotSpot is enabled") + hotSpotIsEnabled = true + Timer().schedule(1000) { + hotSpotAddresses = Utils.hotSpotAddresses() + Log.d(TAG, "HotSpot addresses $hotSpotAddresses") + if (hotSpotAddresses.isNotEmpty()) { + var reset = false + for ((k, v) in hotSpotAddresses) + if (afMatch(k)) + if (Api.net_add_address_ifname(k, v) != 0) + Log.e(TAG, "Failed to add $v address $k") + else + reset = true + if (reset) + Timer().schedule(2000) { + updateNetwork() + } + } else { + Log.w(TAG, "Could not get hotspot addresses") + } + } + } + } else { + if (!hotSpotIsEnabled) { + Log.d(TAG, "HotSpot is still disabled") + } else { + Log.d(TAG, "HotSpot is disabled") + hotSpotIsEnabled = false + if (hotSpotAddresses.isNotEmpty()) { + for ((k, _) in hotSpotAddresses) + if (Api.net_rm_address(k) != 0) + Log.e(TAG, "Failed to remove address $k") + hotSpotAddresses = mapOf() + updateNetwork() + } + } + } + } + } + } + + this.registerReceiver(hotSpotReceiver, + IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED")) + + tm = getSystemService(Context.TELECOM_SERVICE) as TelecomManager + + btm = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager + btAdapter = btm.adapter + + proximityWakeLock = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, + "com.tutpro.baresip.plus:proximity_wakelock") + + wifiLock = if (VERSION.SDK_INT < 29) + @Suppress("DEPRECATION") + wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "Baresip+") + else + wm.createWifiLock(WifiManager.WIFI_MODE_FULL_LOW_LATENCY, "Baresip+") + + wifiLock.setReferenceCounted(false) + + bluetoothReceiver = object : BroadcastReceiver() { + override fun onReceive(ctx: Context, intent: Intent) { + when (intent.action) { + BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED -> { + val state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, + BluetoothHeadset.STATE_DISCONNECTED) + when (state) { + BluetoothHeadset.STATE_CONNECTED -> { + Log.d(TAG, "Bluetooth headset is connected") + if (audioFocusRequest != null) + startBluetoothSco(applicationContext, 1000L, 3) + } + BluetoothHeadset.STATE_DISCONNECTED -> { + Log.d(TAG, "Bluetooth headset is disconnected") + if (audioFocusRequest != null) + stopBluetoothSco(applicationContext) + } + + } + } + BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED -> { + val state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, + BluetoothHeadset.STATE_AUDIO_DISCONNECTED) + when (state) { + BluetoothHeadset.STATE_AUDIO_CONNECTED -> { + Log.d(TAG, "Bluetooth headset audio is connected") + } + BluetoothHeadset.STATE_AUDIO_DISCONNECTED -> { + Log.d(TAG, "Bluetooth headset audio is disconnected") + } + } + } + AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED -> { + val state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, + AudioManager.SCO_AUDIO_STATE_DISCONNECTED) + when (state) { + AudioManager.SCO_AUDIO_STATE_CONNECTING -> { + Log.d(TAG, "Bluetooth headset SCO is connecting") + } + AudioManager.SCO_AUDIO_STATE_CONNECTED -> { + Log.d(TAG, "Bluetooth headset SCO is connected") + } + AudioManager.SCO_AUDIO_STATE_DISCONNECTED -> { + Log.d(TAG, "Bluetooth headset SCO is disconnected") + resetCallVolume() + } + AudioManager.SCO_AUDIO_STATE_ERROR -> { + Log.d(TAG, "Bluetooth headset SCO state ERROR") + } + } + } + } + } + } + + if (btAdapter != null) { + val filter = IntentFilter() + filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED) + filter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED) + filter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED) + this.registerReceiver(bluetoothReceiver, filter) + } + + androidContactsObserver = object : ContentObserver(null) { + override fun onChange(self: Boolean) { + Log.d(TAG, "Android contacts change") + if (contactsMode != "baresip") { + Contact.loadAndroidContacts(this@BaresipService.applicationContext) + Contact.contactsUpdate() + } + } + } + + stopState = "initial" + quitTimer = object : CountDownTimer(5000, 1000) { + override fun onTick(millisUntilFinished: Long) { + Log.d(TAG, "Seconds remaining: ${millisUntilFinished / 1000}") + } + override fun onFinish() { + when (stopState) { + "initial" -> { + if (isServiceRunning) + baresipStop(true) + stopState = "force" + quitTimer.start() + } + "force" -> { + cleanService() + isServiceRunning = false + postServiceEvent(ServiceEvent("stopped", arrayListOf(""), System.nanoTime())) + stopSelf() + // exitProcess(0) + } + } + } + } + + val scope = CoroutineScope(Dispatchers.Default) + var captureCount = 0 + var running = true + + val job = scope.launch { + println("camera capture manager is running...") + Utils.deleteFiles("/mnt/obb", "jpg") + var updateDate = LocalDateTime.now() + while (running) { + if(File("/mnt/obb/camera_near.rgb565.done").exists() && !File("/mnt/obb/camera_near.jpg").exists()) { + val nearBuf = Utils.readFileToByteBuffer("/mnt/obb/camera_near.rgb565") + Utils.saveRGB565AsJPG( + applicationContext, + nearBuf, + 1280, + 720, + "/mnt/obb/camera_near.jpg" + ) + } + if(File("/mnt/obb/camera_far.rgb565.done").exists() && !File("/mnt/obb/camera_far.jpg").exists()) { + val farBuf = Utils.readFileToByteBuffer("/mnt/obb/camera_far.rgb565") + Utils.saveRGB565AsJPG( + applicationContext, + farBuf, + 1280, + 720, + "/mnt/obb/camera_far.jpg" + ) + } + + //delay(800) // 1초마다 실행 + for(i in 1..8) { + var callExist = false + if(uas.size > 0) { + val ua = uas[0] + val call = ua.currentCall() + var sipaddr = ua.account.aor + sipaddr = sipaddr.removePrefix("sip:") + Utils.propertySet("sys.ritosip.sip.address", sipaddr) + if(ua.status == R.drawable.circle_yellow) { + Utils.propertySet("sys.ritosip.sip.status", "registering") + } else if(ua.status == R.drawable.circle_green) { + Utils.propertySet("sys.ritosip.sip.status", "registered") + } else if(ua.status == R.drawable.circle_red) { + Utils.propertySet("sys.ritosip.sip.status", "registering failed") + } else if(ua.status == R.drawable.circle_white) { + Utils.propertySet("sys.ritosip.sip.status", "unregistered") + } + + if (call != null) { + callExist = true + var audioMute = "unmute" + if(isMicMuted) + audioMute = "mute" + Utils.propertySet("sys.ritosip.call.mute.audio", audioMute) + + Utils.propertySet("sys.ritosip.call.status", "calling") + Utils.propertySet("sys.ritosip.call.number", call.peerUri) + var stats = call.stats("audio") + if (stats != "") { + //println("stats audio = ${stats}") + val parts = stats.split(",") as ArrayList + if (parts[2] == "0/0") { + parts[2] = "?/?" + parts[3] = "?/?" + parts[4] = "?/?" + } + + Utils.propertySet("sys.ritosip.call.audio.current_bitrate", parts[0]) + Utils.propertySet("sys.ritosip.call.audio.average_bitrate", parts[1]) + Utils.propertySet("sys.ritosip.call.audio.packets", parts[2]) + Utils.propertySet("sys.ritosip.call.audio.lost", parts[3]) + Utils.propertySet("sys.ritosip.call.audio.jitter", parts[4]) + } + + val duration = call.duration() + Utils.propertySet("sys.ritosip.call.duration", duration.toString()) + val codecs = call.audioCodecs() + if(codecs.length >= 2) { + val txCodec = codecs.split(',')[0].split("/") + val rxCodec = codecs.split(',')[1].split("/") + + Utils.propertySet("sys.ritosip.call.audio.txCodec", txCodec[0]) + Utils.propertySet("sys.ritosip.call.audio.rxCodec", rxCodec[0]) + + } + + stats = call.stats("video") + if (stats != "") { + //println("stats video = ${stats}") + val parts = stats.split(",") + Utils.propertySet("sys.ritosip.call.video.current_bitrate", parts[0]) + Utils.propertySet("sys.ritosip.call.video.average_bitrate", parts[1]) + Utils.propertySet("sys.ritosip.call.video.packets", parts[2]) + Utils.propertySet("sys.ritosip.call.video.lost", parts[3]) + Utils.propertySet("sys.ritosip.call.video.jitter", parts[4]) + + val codecs = call.videoCodecs().split(',') + + if(codecs.size >= 2) { + val txCodec = codecs[0] + val rxCodec = codecs[1] + + Utils.propertySet("sys.ritosip.call.video.txCodec", txCodec) + Utils.propertySet("sys.ritosip.call.video.rxCodec", rxCodec) + } + + if(MainActivity.videoView != null) { + Utils.propertySet( + "sys.ritosip.call.video.format", + "" + MainActivity.videoView.get_frameFormat() + ) + } + } + } else { + Utils.propertySet("sys.ritosip.call.status", "standby") + Utils.propertySet("sys.ritosip.call.number", "") + Utils.propertySet("sys.ritosip.call.duration", "") + Utils.propertySet("sys.ritosip.call.audio.txCodec", "") + Utils.propertySet("sys.ritosip.call.audio.rxCodec", "") + Utils.propertySet("sys.ritosip.call.video.txCodec", "") + Utils.propertySet("sys.ritosip.call.video.rxCodec", "") + } + } else { + Utils.propertySet("sys.ritosip.sip.address", "") + Utils.propertySet("sys.ritosip.sip.status", "unregistered") + } + + val display1 = Utils.checkDisplayConnection(0) + val display2 = Utils.checkDisplayConnection(1) + var connectedCount = 0 + if(display1 == "connected") + connectedCount++ + if(display2 == "connected") + connectedCount++ + + if(connectedDisplayCount != connectedCount) { + val displayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager + val displays = displayManager.displays + if(connectedCount == displays.size) { + connectedDisplayCount = connectedCount + + sendActivityAction("update display") + } + } + //connectedDisplayCount = connectedCount + Utils.propertySet("sys.ritosip.display1.status", display1) + Utils.propertySet("sys.ritosip.display2.status", display2) + + val camera1 = Utils.checkCameraConnection(0) + val camera2 = Utils.checkCameraConnection(1) + Utils.propertySet("sys.ritosip.camera1.status", camera1) + Utils.propertySet("sys.ritosip.camera2.status", camera2) + + delay(100) // 1초마다 실행 + + val now = LocalDateTime.now() + if(now.minute != updateDate.minute) { + sendActivityAction("update info") + updateDate = now + } + } + + + var nearFilePath = "/mnt/obb/near_$captureCount.jpg" + if(!Utils.copyFile("/mnt/obb/camera_near.jpg", nearFilePath)) { + nearFilePath = "" + } + var farFilePath = "/mnt/obb/far_$captureCount.jpg" + if(!Utils.copyFile("/mnt/obb/camera_far.jpg", farFilePath)) { + farFilePath = "" + } + + Utils.deleteFile(File("/mnt/obb/camera_near.rgb565")) + Utils.deleteFile(File("/mnt/obb/camera_near.rgb565.done")) + Utils.deleteFile(File("/mnt/obb/camera_near.jpg")) + Utils.deleteFile(File("/mnt/obb/camera_far.rgb565")) + Utils.deleteFile(File("/mnt/obb/camera_far.rgb565.done")) + Utils.deleteFile(File("/mnt/obb/camera_far.jpg")) + + for(i in captureCount - 10 .. captureCount - 5) { + var delFilePath = "/mnt/obb/near_$i.jpg" + Utils.deleteFile(File(delFilePath)) + delFilePath = "/mnt/obb/far_$i.jpg" + Utils.deleteFile(File(delFilePath)) + } + + if(uas.size > 0) { + val ua = uas[0] + val call = ua.currentCall() + if (call != null) { + if (nearFilePath.length > 0) + Utils.propertySet("sys.ritosip.near_screen_file", nearFilePath) + if (farFilePath.length > 0) + Utils.propertySet("sys.ritosip.far_screen_file", farFilePath) + } else { + Utils.propertySet("sys.ritosip.near_screen_file", "") + Utils.propertySet("sys.ritosip.far_screen_file", "") + } + } + + + + captureCount++ + delay(100) + + /* + delay(800) // 1초마다 실행 + File("/mnt/obb/camera_near.rgb565").delete() + File("/mnt/obb/camera_near.rgb565.done").delete() + File("/mnt/obb/camera_near.jpg").delete() + File("/mnt/obb/camera_far.rgb565").delete() + File("/mnt/obb/camera_far.rgb565.done").delete() + File("/mnt/obb/camera_far.jpg").delete() + delay(200) // 1초마다 실행 + */ + } + } + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + + val action: String + + if (intent == null) { + action = "Start" + Log.d(TAG, "Received onStartCommand with null intent") + } else { + // Utils.dumpIntent(intent) + action = intent.action!! + Log.d(TAG, "Received onStartCommand action $action") + } + + when (action) { + + "Start" -> { + + isStartReceived = true + + if (VERSION.SDK_INT < 31) { + @Suppress("DEPRECATION") + allNetworks = cm.allNetworks.toMutableSet() + } + + updateDnsServers() + + val assets = arrayOf("accounts", "config", "contacts") + var file = File(filesPath) + if (!file.exists()) { + Log.i(TAG, "Creating baresip directory") + try { + File(filesPath).mkdirs() + } catch (e: Error) { + Log.e(TAG, "Failed to create directory: $e") + } + } + for (a in assets) { + file = File("${filesPath}/$a") + if (!file.exists() && a != "config") { + Log.i(TAG, "Copying asset '$a'") + Utils.copyAssetToFile(applicationContext, a, "$filesPath/$a") + } else { + Log.d(TAG, "Asset '$a' already copied") + } + if (a == "config") + Config.initialize(applicationContext) + } + + if (!File(filesDir, "tmp").exists()) + File(filesDir, "tmp").mkdir() + + if (!File(filesDir, "recordings").exists()) + File(filesDir, "recordings").mkdir() + + if (contactsMode != "android") + Contact.restoreBaresipContacts() + if (contactsMode != "baresip") { + Contact.loadAndroidContacts(applicationContext) + registerAndroidContactsObserver() + } + Contact.contactsUpdate() + + val history = CallHistory.get() + if (history.isEmpty()) { + CallHistoryNew.restore() + } else { + for (old in history) { + val new = CallHistoryNew(old.aor, old.peerUri, old.direction) + new.stopTime = old.stopTime + new.startTime = old.startTime + new.recording = old.recording + callHistory.add(new) + } + CallHistoryNew.save() + } + + Message.restore() + + hotSpotAddresses = Utils.hotSpotAddresses() + linkAddresses = linkAddresses() + var addresses = "" + for (la in linkAddresses) + addresses = "$addresses;${la.key};${la.value}" + Log.i(TAG, "Link addresses: $addresses") + activeNetwork = cm.activeNetwork + Log.i(TAG, "Active network: $activeNetwork") + + Log.d(TAG, "AEC/AGC/NS available = " + + "$aecAvailable/$agcAvailable/$nsAvailable") + + val userAgent = Config.variable("user_agent") + Thread { + baresipStart( + filesPath, + addresses.removePrefix(";"), + logLevel, + if (userAgent != "") + userAgent + else + "ritosip v${BuildConfig.VERSION_NAME} " + + "(Android ${VERSION.RELEASE}/${System.getProperty("os.arch") ?: "?"})" + ) + }.start() + + isServiceRunning = true + + showStatusNotification() + sendActivityAction("update info") + + val accounts = Utils.getFileContents("$filesPath/accounts") + if ((accounts != null) && accounts.isNotEmpty()) { + Utils.putFileContents("$filesPath/accounts", + accounts.toString(Charsets.UTF_8).replace( + "pubint=0;call_transfer", + "pubint=0;inreq_allowed=yes;call_transfer" + ).toByteArray(Charsets.UTF_8) + ) + } + + if (linkAddresses.isEmpty()) { + val newIntent = Intent(this, MainActivity::class.java) + newIntent.flags = + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", "no network") + startActivity(newIntent) + } + + applyTransportConfiguration() + + } + + "Start Content Observer" -> { + registerAndroidContactsObserver() + } + + "Stop Content Observer" -> { + unRegisterAndroidContactsObserver() + } + + "Call Answer" -> { + val uap = intent!!.getLongExtra("uap", 0L) + val callp = intent.getLongExtra("callp", 0L) + stopRinging() + stopMediaPlayer() + setCallVolume() + proximitySensing(true) + Api.ua_answer(uap, callp, Api.VIDMODE_ON) + } + + "Call Reject" -> { + val callp = intent!!.getLongExtra("callp", 0L) + val call = Call.ofCallp(callp) + if (call == null) { + Log.w(TAG, "onStartCommand did not find call $callp") + } else { + val peerUri = call.peerUri + val aor = call.ua.account.aor + Log.d(TAG, "Aor $aor rejected incoming call $callp from $peerUri") + call.rejected = true + Api.ua_hangup(call.ua.uap, callp, 486, "Rejected") + } + } + + "Transfer Deny" -> { + val callp = intent!!.getLongExtra("callp", 0L) + val call = Call.ofCallp(callp) + if (call == null) + Log.w(TAG, "onStartCommand did not find call $callp") + else + call.notifySipfrag(603, "Decline") + nm.cancel(TRANSFER_NOTIFICATION_ID) + } + + "Message Save" -> { + val uap = intent!!.getLongExtra("uap", 0L) + val ua = UserAgent.ofUap(uap) + if (ua == null) + Log.w(TAG, "onStartCommand did not find UA $uap") + else + ChatsActivity.saveUaMessage( + ua.account.aor, + intent.getStringExtra("time")!!.toLong() + ) + nm.cancel(MESSAGE_NOTIFICATION_ID) + } + + "Message Delete" -> { + val uap = intent!!.getLongExtra("uap", 0L) + val ua = UserAgent.ofUap(uap) + if (ua == null) + Log.w(TAG, "onStartCommand did not find UA $uap") + else + ChatsActivity.deleteUaMessage( + ua.account.aor, + intent.getStringExtra("time")!!.toLong() + ) + nm.cancel(MESSAGE_NOTIFICATION_ID) + } + + "Update Notification" -> { + updateStatusNotification() + } + + "Stop" -> { + cleanService() + if (isServiceRunning) { + baresipStop(false) + quitTimer.start() + } + } + + else -> { + Log.e(TAG, "Unknown start action $action") + } + + } + + return START_STICKY + } + + override fun onBind(intent: Intent): IBinder? { + return null + } + + override fun onDestroy() { + super.onDestroy() + Log.d(TAG, "onDestroy at Baresip Service") + cleanService() + if (isServiceRunning) + sendBroadcast(Intent("com.tutpro.baresip.plus.Restart")) + } + + fun applyTransportConfiguration() { + Api.config_verify_server_set(false) + if(BaresipService.preferTransport == "udp") { + Api.config_transport_server_set("udp") + } else if(BaresipService.preferTransport == "tcp") { + Api.config_transport_server_set("tcp") + } else if(BaresipService.preferTransport == "tls") { + Api.config_transport_server_set("tls") + } + Api.uag_reset_transp(true, true) + } + + fun sendActivityAction(order : String) { + val newIntent = Intent() + newIntent.setClassName( + "kr.co.rito.ritosip", + "com.tutpro.baresip.plus.MainActivity" + ) + newIntent.flags = + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", order) + startActivity(newIntent) + } + + @SuppressLint("DiscouragedApi") + @Keep + fun uaEvent(event: String, uap: Long, callp: Long) { + + if (!isServiceRunning) return + + val ev = event.split(",") + + if (ev[0] == "create") { + val ua = UserAgent(uap) + ua.status = if (ua.account.regint == 0) + R.drawable.circle_white + else + R.drawable.circle_yellow + uas.add(ua) + + val acc = ua.account + if (acc.authUser != "" && acc.authPass == NO_AUTH_PASS) { + val password = aorPasswords[acc.aor] + if (password != null) { + Api.account_set_auth_pass(acc.accp, password) + acc.authPass = password + } else { + Api.account_set_auth_pass(acc.accp, NO_AUTH_PASS) + } + } + + Log.d(TAG, "got uaEvent $event/${acc.aor}") + return + } + + if (ev[0] == "sndfile dump") { + Log.d(TAG, "Got sndfile dump ${ev[1]}") + if (Call.inCall()) { + if (ev[1].endsWith("enc.wav")) + Call.calls()[0].dumpfiles[0] = ev[1] + else + Call.calls()[0].dumpfiles[1] = ev[1] + } + return + } + + if (ev[0] == "player sessionid") { + playerSessionId = ev[1].toInt() + Log.d(TAG, "got player sessionid $playerSessionId") + return + } + + if (ev[0] == "recorder sessionid") { + recorderSessionId = ev[1].toInt() + Log.d(TAG, "got recorder sessionid $recorderSessionId") + return + } + + val ua = UserAgent.ofUap(uap) + val aor = ua?.account?.aor + + Log.d(TAG, "got uaEvent $event/$aor/$callp") + + if (ua == null) { + when (ev[0]) { + "snapshot" -> { + val file = File(ev[2]) + if (file.length() > 0) { + val fileName = ev[2].split("/").last() + try { + val bitmap = BitmapFactory.decodeStream(file.inputStream()) + Utils.savePicture(this, bitmap, fileName) + Log.d(TAG, "Saved snapshot $fileName") + } catch (e: IOException) { + Log.d(TAG, "Failed to save snapshot $fileName") + } + } + file.delete() + } + else -> { + Log.w(TAG, "uaEvent did not find ua $uap") + } + } + return + } + + val call = Call.ofCallp(callp) + if (call == null && callp != 0L && + !setOf("incoming call", "call incoming", "call closed").contains(ev[0])) { + Log.w(TAG, "uaEvent $event did not find call $callp") + return + } + + var newEvent: String? = null + + for (accountIndex in uas.indices) { + if (uas[accountIndex].account.aor == aor) { + when (ev[0]) { + "registering", "unregistering" -> { + ua.status = R.drawable.circle_yellow + updateStatusNotification() + if (isMainVisible) + registrationUpdate.postValue(System.currentTimeMillis()) + return + } + "registered" -> { + ua.status = if (Api.account_regint(ua.account.accp) == 0) + R.drawable.circle_white + else + R.drawable.circle_green + updateStatusNotification() + if (isMainVisible) + registrationUpdate.postValue(System.currentTimeMillis()) + return + } + "registering failed" -> { + ua.status = if (Api.account_regint(ua.account.accp) == 0) + R.drawable.circle_white + else + R.drawable.circle_red + updateStatusNotification() + if (isMainVisible) + registrationUpdate.postValue(System.currentTimeMillis()) + if (Utils.isVisible()) { + val reason = if (ev.size > 1) { + if (ev[1] == "Invalid argument") // Likely due to DNS lookup failure + ": DNS lookup failed" + else + ": ${ev[1]}" + } else + "" + toast(String.format(getString(R.string.registering_failed), aor) + reason) + } + return + } + "call outgoing" -> { + if (call!!.status == "transferring") + break + stopMediaPlayer() + setCallVolume() + if (speakerPhone && !Utils.isSpeakerPhoneOn(am)) + Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(this), am) + proximitySensing(true) + return + } + "call ringing" -> { + playRingBack() + return + } + "call progress" -> { + if ((ev[1].toInt() and Api.SDP_RECVONLY) != 0) + stopMediaPlayer() + else + playRingBack() + return + } + "incoming call" -> { + val peerUri = ev[1] + val bevent = ev[2].toLong() + val toastMsg = if (!Utils.checkPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO))) + getString(R.string.no_calls) + else if (!requestAudioFocus(applicationContext)) + // request fails if there is an active telephony call + getString(R.string.audio_focus_denied) + else if (Call.inCall()) + String.format(getString(R.string.call_auto_rejected), + Utils.friendlyUri(this, peerUri, ua.account)) + else + "" + if (toastMsg != "") { + Log.d(TAG, "Auto-rejecting incoming call $uap/$peerUri") + Api.sip_treply(callp, 486, "Busy Here") + Api.bevent_stop(bevent) + toast(toastMsg) + val name = "callwaiting_$toneCountry" + val resourceId = applicationContext.resources.getIdentifier( + name, + "raw", + applicationContext.packageName) + if (resourceId != 0) { + playUnInterrupted(resourceId, 1) + } else { + Log.e(TAG, "Callwaiting tone $name.wav not found\")") + } + if (ua.account.callHistory) { + CallHistoryNew.add(CallHistoryNew(aor, peerUri, "in")) + CallHistoryNew.save() + ua.account.missedCalls = true + } + return + } + // callp holds SIP message pointer + Api.ua_accept(uap, callp) + return + } + "call incoming" -> { + val peerUri = ev[1] + Log.d(TAG, "Incoming call $uap/$callp/$peerUri") + Call(callp, ua, peerUri, "in", "incoming", Utils.dtmfWatcher(callp)).add() + if (speakerPhone && !Utils.isSpeakerPhoneOn(am)) + Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(this), am) + if (ua.account.answerMode == Api.ANSWERMODE_MANUAL) { + Log.d(TAG, "CurrentInterruptionFilter ${nm.currentInterruptionFilter}") + if (nm.currentInterruptionFilter <= NotificationManager.INTERRUPTION_FILTER_ALL) + startRinging() + } else { + val newIntent = Intent(this, MainActivity::class.java) + newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", "call answer") + newIntent.putExtra("callp", callp) + startActivity(newIntent) + return + } + if (!Utils.isVisible()) { + val intent = Intent(applicationContext, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("action", "call show") + .putExtra("callp", callp) + val pi = PendingIntent.getActivity(applicationContext, CALL_REQ_CODE, intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val nb = NotificationCompat.Builder(this, + if (shouldVibrate()) MEDIUM_CHANNEL_ID else HIGH_CHANNEL_ID) + val caller = Utils.friendlyUri(this, peerUri, ua.account) + nb.setSmallIcon(R.drawable.ic_stat_call) + .setColor(ContextCompat.getColor(this, R.color.colorBaresip)) + .setContentIntent(pi) + .setCategory(Notification.CATEGORY_CALL) + .setAutoCancel(false) + .setOngoing(true) + .setContentTitle(getString(R.string.incoming_call_from)) + .setContentText(caller) + .setWhen(System.currentTimeMillis()) + .setShowWhen(true) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setPriority(NotificationCompat.PRIORITY_HIGH) + .setFullScreenIntent(pi, true) + val answerIntent = Intent(applicationContext, MainActivity::class.java) + answerIntent.putExtra("action", "call answer") + .putExtra("callp", callp) + val api = PendingIntent.getActivity(applicationContext, ANSWER_REQ_CODE, answerIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val rejectIntent = Intent(this, BaresipService::class.java) + rejectIntent.action = "Call Reject" + rejectIntent.putExtra("callp", callp) + val rpi = PendingIntent.getService(this, REJECT_REQ_CODE, rejectIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + nb.addAction(R.drawable.ic_stat_call, + getActionText(R.string.answer, R.color.colorGreen), api) + nb.addAction(R.drawable.ic_stat_call_end, + getActionText(R.string.reject, R.color.colorRed), rpi) + nm.notify(CALL_NOTIFICATION_ID, nb.build()) + return + } + } + "remote call answered" -> { + newEvent = "call update" + } + "remote call offered" -> { + val callHasVideo = ev[1] == "1" + val remoteHasVideo = ev[2] == "1" + val ldir = ev[3].toInt() + val rdir = if (Utils.isCameraAvailable(this)) + ev[4].toInt() + else + ev[4].toInt() and Api.SDP_RECVONLY + when (ev[5]) { + "0", "1" -> call!!.held = true // inactive, recvonly + "2", "3" -> call!!.held = false // sendonly, sendrecv + } + if (!isMainVisible || call!!.status != "connected") + return + if (!(callHasVideo && remoteHasVideo && ldir == 0) && + (!callHasVideo && remoteHasVideo && + (rdir != Api.SDP_INACTIVE) && (ldir != rdir))) { + postServiceEvent(ServiceEvent("call video request", + arrayListOf(uap, callp, rdir), System.nanoTime())) + return + } + newEvent = "call update" + } + "call answered" -> { + stopMediaPlayer() + if (call!!.status == "incoming") + call.status = "answered" + else + return + } + "call redirect", "video call redirect"-> { + stopMediaPlayer() + } + "call established" -> { + nm.cancel(CALL_NOTIFICATION_ID) + Log.d(TAG, "AoR $aor call $callp established in mode ${am.mode}") + if (am.mode != MODE_IN_COMMUNICATION) + am.mode = MODE_IN_COMMUNICATION + call!!.status = "connected" + if (recorderSessionId != 0) { + if (aecAvailable && !webrtcAec) { + aec = AcousticEchoCanceler.create(recorderSessionId) + if (aec != null) { + if (!aec!!.getEnabled()) { + aec!!.setEnabled(true) + if (aec!!.getEnabled()) + Log.d(TAG, "AEC is enabled") + else + Log.w(TAG, "Failed to enable AEC") + } + } + else + Log.w(TAG, "Failed to create AEC") + } + if (agcAvailable) { + agc = AutomaticGainControl.create(recorderSessionId) + if (agc != null) { + if (!agc!!.getEnabled()) { + agc!!.setEnabled(true) + if (agc!!.getEnabled()) + Log.d(TAG, "AGC is enabled") + } + } + else + Log.w(TAG, "Failed to create AGC") + } + if (nsAvailable) { + ns = NoiseSuppressor.create(recorderSessionId) + if (ns != null) { + if (!ns!!.getEnabled()) { + ns!!.setEnabled(true) + if (ns!!.getEnabled()) + Log.d(TAG, "ns is enabled") + } + } + else + Log.w(TAG, "Failed to create NS") + } + recorderSessionId = 0 + } + call.onhold = false + if (ua.account.callHistory) + call.startTime = GregorianCalendar() + if (!isMainVisible) + return + } + "call update" -> { + call!!.held = when (ev[1].toInt()) { + Api.SDP_INACTIVE, Api.SDP_RECVONLY -> true + else /* Api.SDP_SENDONLY, Api.SDP_SENDRECV */ -> false + } + if (call.state() == Api.CALL_STATE_EARLY) { + if ((ev[1].toInt() and Api.SDP_RECVONLY) != 0) + stopMediaPlayer() + else + playRingBack() + } + if (!isMainVisible || call.status != "connected") + return + } + "call verified", "call secure" -> { + if (ev[0] == "call secure") { + call!!.security = R.drawable.locked_yellow + } else { + call!!.security = R.drawable.locked_green + call.zid = ev[1] + } + if (!isMainVisible) + return + } + "call transfer" -> { + if (!Utils.isVisible()) { + val intent = Intent(applicationContext, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or + Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("action", "transfer show") + .putExtra("callp", callp).putExtra("uri", ev[1]) + val pi = PendingIntent.getActivity(applicationContext, TRANSFER_REQ_CODE, intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) + val target = Utils.friendlyUri(this, ev[1], ua.account) + nb.setSmallIcon(R.drawable.ic_stat_call) + .setColor(ContextCompat.getColor(this, R.color.colorBaresip)) + .setContentIntent(pi) + .setDefaults(Notification.DEFAULT_SOUND) + .setAutoCancel(true) + .setContentTitle(getString(R.string.transfer_request_to)) + .setContentText(target) + val acceptIntent = Intent(applicationContext, MainActivity::class.java) + acceptIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or + Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + acceptIntent.putExtra("action","transfer accept") + .putExtra("callp", callp).putExtra("uri", ev[1]) + val api = PendingIntent.getActivity(applicationContext, ACCEPT_REQ_CODE, + acceptIntent, PendingIntent.FLAG_IMMUTABLE or + PendingIntent.FLAG_UPDATE_CURRENT) + val denyIntent = Intent(this, BaresipService::class.java) + denyIntent.action = "Transfer Deny" + denyIntent.putExtra("callp", callp) + val dpi = PendingIntent.getService(this, DENY_REQ_CODE, denyIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + nb.addAction(R.drawable.ic_stat_call, getString(R.string.accept), api) + nb.addAction(R.drawable.ic_stat_call_end, getString(R.string.deny), dpi) + nm.notify(TRANSFER_NOTIFICATION_ID, nb.build()) + return + } + } + "transfer failed" -> { + Log.d(TAG, "AoR $aor call $callp transfer failed: ${ev[1]}") + stopMediaPlayer() + call!!.referTo = "" + if (Utils.isVisible()) + toast("${getString(R.string.transfer_failed)}: ${ev[1].trim()}") + if (!isMainVisible) + return + } + "call closed" -> { + Log.d(TAG, "AoR $aor call $callp is closed") + if (call != null) { + nm.cancel(CALL_NOTIFICATION_ID) + stopRinging() + stopMediaPlayer() + aec?.release() + agc?.release() + ns?.release() + val newCall = call.newCall + if (newCall != null) { + newCall.onHoldCall = null + call.newCall = null + } + val onHoldCall = call.onHoldCall + if (onHoldCall != null) { + onHoldCall.newCall = null + onHoldCall.referTo = "" + call.onHoldCall = null + } + call.remove() + val reason = ev[1] + val tone = ev[2] + if (tone == "busy") { + playBusy() + } else if (!Call.inCall()) { + resetCallVolume() + abandonAudioFocus(applicationContext) + proximitySensing(false) + } + if (call.dir == "out") + call.rejected = call.startTime == null && + !reason.startsWith("408") && + !reason.startsWith("480") && + !reason.startsWith("Connection reset by") + val missed = call.dir == "in" && call.startTime == null && !call.rejected + if (ua.account.callHistory) { + val history = CallHistoryNew(aor, call.peerUri, call.dir) + history.startTime = call.startTime + history.stopTime = GregorianCalendar() + history.rejected = call.rejected + if (call.startTime != null && call.dumpfiles[0] != "") + history.recording = call.dumpfiles + CallHistoryNew.add(history) + CallHistoryNew.save() + ua.account.missedCalls = ua.account.missedCalls || missed + } + if (!Utils.isVisible()) { + if (missed) { + val caller = Utils.friendlyUri(this, call.peerUri, ua.account) + val intent = Intent(applicationContext, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or + Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("action", "call missed") + .putExtra("uap", uap) + val pi = PendingIntent.getActivity(applicationContext, CALL_REQ_CODE, intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) + nb.setSmallIcon(R.drawable.ic_stat_phone_missed) + .setColor(ContextCompat.getColor(this, R.color.colorBaresip)) + .setContentIntent(pi) + .setCategory(Notification.CATEGORY_CALL) + .setAutoCancel(true) + var missedCalls = 0 + for (notification in nm.activeNotifications) + if (notification.id == CALL_MISSED_NOTIFICATION_ID) + missedCalls++ + if (missedCalls == 0) { + nb.setContentTitle(getString(R.string.missed_call_from)) + nb.setContentText(caller) + } else { + nb.setContentTitle(getString(R.string.missed_calls)) + nb.setContentText( + String.format(getString(R.string.missed_calls_count), + missedCalls + 1)) + } + nm.notify(CALL_MISSED_NOTIFICATION_ID, nb.build()) + } + return + } + } + val reason = ev[1].trim() + if ((reason != "") && (ua.calls().isEmpty())) { + if (reason[0].isDigit()) { + if (reason[0] != '3') { + toast("${getString(R.string.call_failed)}: $reason") + + Utils.propertySet("sys.ritosip.call.event.result", "call_failed") +// Utils.propertySet("sys.ritosip.call.event.time", (Clock.systemUTC().millis() / 1000).toString()) +// val responseIntent = Intent("kr.co.rito.ritosip.RESPONSE") +// responseIntent.putExtra("req", "call_result") +// responseIntent.putExtra("data", "failed") +// responseIntent.setPackage("kr.co.rito.sipsvc") +// sendBroadcast(responseIntent) + } + } else { + //toast("${getString(R.string.call_closed)}: ${Api.call_peer_uri(callp)}: $reason") + toast("${getString(R.string.call_closed)}") + } + } + } + } + } + } + + postServiceEvent(ServiceEvent(newEvent ?: event, arrayListOf(uap, callp), System.nanoTime())) + + } + + private fun postServiceEvent(event: ServiceEvent) { + serviceEvents.add(event) + if (serviceEvents.size == 1) { + Log.d(TAG, "Posted service event ${event.event} at ${event.timeStamp}") + serviceEvent.postValue(Event(event.timeStamp)) + } else { + Log.d(TAG, "Added service event ${event.event}") + } + } + + @Keep + fun messageEvent(uap: Long, peerUri: String, cType: String, msg: ByteArray) { + + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w(TAG, "messageEvent did not find ua $uap") + return + } + + val charsetString = Utils.paramValue(cType.replace(" ", ""), "charset") + val charset = try { + Charset.forName(charsetString) + } catch (e: Exception) { + StandardCharsets.UTF_8 + } + val text = try { + String(msg, charset) + } catch (e: Exception) { + val error = "Decoding of message failed using charset $charset from $cType!" + Log.w(TAG, error) + error + } + + val timeStamp = System.currentTimeMillis() + val timeStampString = timeStamp.toString() + Log.d(TAG, "Message event for $uap from $peerUri at $timeStampString") + Message(ua.account.aor, peerUri, text, timeStamp, MESSAGE_DOWN, 0, "", true).add() + Message.save() + ua.account.unreadMessages = true + + if (!Utils.isVisible()) { + val intent = Intent(applicationContext, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("action", "message show").putExtra("uap", uap) + .putExtra("peer", peerUri) + val pi = PendingIntent.getActivity(applicationContext, MESSAGE_REQ_CODE, intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) + val sender = Utils.friendlyUri(this, peerUri, ua.account) + nb.setSmallIcon(R.drawable.ic_stat_message) + .setColor(ContextCompat.getColor(this, R.color.colorBaresip)) + .setContentIntent(pi) + .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) + .setAutoCancel(true) + .setContentTitle(getString(R.string.message_from) + " " + sender) + .setContentText(text) + val replyIntent = Intent(applicationContext, MainActivity::class.java) + replyIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + replyIntent.putExtra("action", "message reply") + .putExtra("uap", uap).putExtra("peer", peerUri) + val rpi = PendingIntent.getActivity(applicationContext, REPLY_REQ_CODE, replyIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val saveIntent = Intent(this, BaresipService::class.java) + saveIntent.action = "Message Save" + saveIntent.putExtra("uap", uap) + .putExtra("time", timeStampString) + val spi = PendingIntent.getService(this, SAVE_REQ_CODE, saveIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + val deleteIntent = Intent(this, BaresipService::class.java) + deleteIntent.action = "Message Delete" + deleteIntent.putExtra("uap", uap) + .putExtra("time", timeStampString) + val dpi = PendingIntent.getService(this, DELETE_REQ_CODE, deleteIntent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) + nb.addAction(R.drawable.ic_stat_reply, "Reply", rpi) + nb.addAction(R.drawable.ic_stat_save, "Save", spi) + nb.addAction(R.drawable.ic_stat_delete, "Delete", dpi) + nm.notify(MESSAGE_NOTIFICATION_ID, nb.build()) + return + } + + if (nm.currentInterruptionFilter <= NotificationManager.INTERRUPTION_FILTER_ALL) + nt.play() + + postServiceEvent(ServiceEvent("message show", arrayListOf(uap, peerUri), System.nanoTime())) + } + + @Keep + fun started() { + Log.d(TAG, "Received 'started' from baresip") + Api.net_debug() + postServiceEvent(ServiceEvent("started", arrayListOf(callActionUri), System.nanoTime())) + callActionUri = "" + Log.d(TAG, "Battery optimizations are ignored: " + + "${pm.isIgnoringBatteryOptimizations(packageName)}") + Log.d(TAG, "Partial wake lock/wifi lock is held: " + + "${partialWakeLock.isHeld}/${wifiLock.isHeld}") + updateStatusNotification() + } + + @Keep + @Suppress("UNUSED") + fun messageResponse(responseCode: Int, responseReason: String, time: String) { + Log.d(TAG, "Message response '$responseCode $responseReason' at $time") + val timeStamp = time.toLong() + for (m in messages.reversed()) + if (m.timeStamp == timeStamp) { + if (responseCode < 300) { + m.direction = MESSAGE_UP + } else { + m.direction = MESSAGE_UP_FAIL + m.responseCode = responseCode + m.responseReason = responseReason + } + messageUpdate.postValue(System.currentTimeMillis()) + break + } else { + if (m.timeStamp < timeStamp - 60000) + break + } + } + + /* + @Keep + fun checkVideo(uap: String, callp: String, reqDir: Int): Int { + if (!isServiceRunning) return -1 + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w(LOG_TAG, "checkVideo did not find ua $uap") + return -1 + } + val call = Call.ofCallp(callp) + if (call == null) { + Log.d(LOG_TAG, "checkVideo did not find call $callp") + return -1 + } + Log.d(LOG_TAG, "checkVideo reqDir = $reqDir, videoAllowed = ${call.videoAllowed}," + + " call.video = ${call.video}") + if ((reqDir == Api.SDP_INACTIVE) || (!cameraAvailable && (reqDir == Api.SDP_SENDONLY))) { + call.video = Api.SDP_INACTIVE + return Api.SDP_INACTIVE + } + if ((call.video == Api.SDP_INACTIVE) && !call.videoAllowed) { + serviceEvent.postValue(Event(ServiceEvent("call video request", arrayListOf(uap, peer), + timeStamp))) + return Api.SDP_INACTIVE + } + call.videoAllowed = false + if (cameraAvailable) + call.video = reqDir + else + call.video = Api.SDP_RECVONLY + return call.video + }*/ + + @Keep + fun stopped(error: String) { + Log.d(TAG, "Received 'stopped' from baresip with start error '$error'") + quitTimer.cancel() + cleanService() + isServiceRunning = false + postServiceEvent(ServiceEvent("stopped", arrayListOf(error), System.nanoTime())) + stopSelf() + } + + private fun createNotificationChannels() { + val defaultChannel = NotificationChannel(DEFAULT_CHANNEL_ID, "Default", + NotificationManager.IMPORTANCE_LOW) + defaultChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC + nm.createNotificationChannel(defaultChannel) + val highChannel = NotificationChannel(HIGH_CHANNEL_ID, "High", + NotificationManager.IMPORTANCE_HIGH) + highChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC + highChannel.enableVibration(true) + nm.createNotificationChannel(highChannel) + val mediumChannel = NotificationChannel(MEDIUM_CHANNEL_ID, "Medium", + NotificationManager.IMPORTANCE_HIGH) + highChannel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC + highChannel.enableVibration(false) + nm.createNotificationChannel(mediumChannel) + } + + private fun showStatusNotification() { + val intent = Intent(applicationContext, MainActivity::class.java) + .setAction(Intent.ACTION_MAIN) + .addCategory(Intent.CATEGORY_LAUNCHER) + val pi = PendingIntent.getActivity(applicationContext, STATUS_REQ_CODE, intent, + PendingIntent.FLAG_IMMUTABLE) + val notificationLayout = RemoteViews(packageName, R.layout.status_notification) + snb.setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setSmallIcon(R.drawable.ic_stat) + .setContentIntent(pi) + .setOngoing(true) + .setStyle(NotificationCompat.DecoratedCustomViewStyle()) + .setCustomContentView(notificationLayout) + if (VERSION.SDK_INT >= 31) + snb.foregroundServiceBehavior = Notification.FOREGROUND_SERVICE_DEFAULT + try { + if (VERSION.SDK_INT >= 29) + startForeground( + STATUS_NOTIFICATION_ID, snb.build(), + if (VERSION.SDK_INT >= 30) + FOREGROUND_SERVICE_TYPE_PHONE_CALL or FOREGROUND_SERVICE_TYPE_MICROPHONE or + FOREGROUND_SERVICE_TYPE_CAMERA + else + FOREGROUND_SERVICE_TYPE_PHONE_CALL + ) + else + startForeground(STATUS_NOTIFICATION_ID, snb.build()) + } catch (e: Exception) { + Log.e(TAG, "Failed to start foreground service") + } + } + + private fun updateStatusNotification() { + val notificationLayout = RemoteViews(packageName, R.layout.status_notification) + for (i: Int in 0..3) { + val resId = when (i) { + 0-> R.id.status0 + 1-> R.id.status1 + 2-> R.id.status2 + else -> R.id.status3 + } + if (i < uas.size) { + notificationLayout.setImageViewResource(resId, uas[i].status) + notificationLayout.setViewVisibility(resId, View.VISIBLE) + } else { + notificationLayout.setViewVisibility(resId, View.INVISIBLE) + } + } + if (uas.size > 4) + notificationLayout.setViewVisibility(R.id.etc, View.VISIBLE) + else + notificationLayout.setViewVisibility(R.id.etc, View.INVISIBLE) + snb.setCustomContentView(notificationLayout) + // Don't know why, but without the delay the notification is not always updated + Timer().schedule(250) { + nm.notify(STATUS_NOTIFICATION_ID, snb.build()) + } + } + + private fun toast(message: String) { +// Handler(Looper.getMainLooper()).post { +// Toast.makeText(this@BaresipService.applicationContext, message, Toast.LENGTH_LONG).show() +// } + + Handler(Looper.getMainLooper()).post { + showCustomToast(this@BaresipService.applicationContext, message) + } + } + + fun showCustomToast(context: Context, message: String) { + val inflater = LayoutInflater.from(context) + val layout: View = inflater.inflate(R.layout.custom_toast, null) + + val textView: TextView = layout.findViewById(R.id.toast_text) + textView.text = message + + val toast = Toast(context) + toast.duration = Toast.LENGTH_LONG + toast.view = layout + toast.show() + } + + private fun getActionText(@StringRes stringRes: Int, @ColorRes colorRes: Int): Spannable { + val spannable: Spannable = SpannableString(applicationContext.getText(stringRes)) + spannable.setSpan( + ForegroundColorSpan(applicationContext.getColor(colorRes)), 0, spannable.length, 0) + return spannable + } + + private fun startRinging() { + rt.isLooping = true + rt.play() + if (shouldVibrate()) { + vbTimer = Timer() + vbTimer!!.schedule(object : TimerTask() { + override fun run() { + vibrator.vibrate( + VibrationEffect.createOneShot( + 500, + VibrationEffect.DEFAULT_AMPLITUDE + ) + ) + } + }, 500L, 2000L) + } + } + + private fun shouldVibrate(): Boolean { + return if (am.ringerMode != RINGER_MODE_SILENT) { + if (am.ringerMode == AudioManager.RINGER_MODE_VIBRATE) { + true + } else { + if (am.getStreamVolume(AudioManager.STREAM_RING) != 0) { + @Suppress("DEPRECATION") + Settings.System.getInt(contentResolver, Settings.System.VIBRATE_WHEN_RINGING, 0) == 1 + } else { + false + } + } + } else { + false + } + } + + private fun stopRinging() { + rt.stop() + if (vbTimer != null) { + vbTimer!!.cancel() + vbTimer = null + } + } + + @SuppressLint("DiscouragedApi") + private fun playRingBack() { + if (mediaPlayer == null) { + val name = "ringback_$toneCountry" + val resourceId = applicationContext.resources.getIdentifier( + name, + "raw", + applicationContext.packageName) + if (resourceId != 0) { + mediaPlayer = MediaPlayer.create(this, resourceId) + mediaPlayer?.isLooping = true + mediaPlayer?.start() + } else { + Log.e(TAG, "Ringback tone $name.wav not found") + } + } + } + + @SuppressLint("DiscouragedApi") + private fun playBusy() { + if (mediaPlayer == null ) { + val name = "busy_$toneCountry" + val resourceId = applicationContext.resources.getIdentifier( + name, + "raw", + applicationContext.packageName) + if (resourceId != 0) { + mediaPlayer = MediaPlayer.create(this, resourceId) + mediaPlayer?.setOnCompletionListener { + stopMediaPlayer() + if (!Call.inCall()) { + resetCallVolume() + abandonAudioFocus(applicationContext) + proximitySensing(false) + } + } + mediaPlayer?.start() + } else { + Log.e(TAG, "Busy tone $name.wav not found") + } + } + } + + private fun playUnInterrupted(raw: Int, count: Int) { + val player = MediaPlayer.create(this, raw) + player.setOnCompletionListener { + it.stop() + it.release() + if (count > 1) playUnInterrupted(raw, count - 1) + } + player.start() + } + + private fun stopMediaPlayer() { + mediaPlayer?.stop() + mediaPlayer?.release() + mediaPlayer = null + } + + private fun setCallVolume() { + if (callVolume != 0) + for (streamType in listOf(AudioManager.STREAM_MUSIC, AudioManager.STREAM_VOICE_CALL)) { + origVolume[streamType] = am.getStreamVolume(streamType) + val maxVolume = am.getStreamMaxVolume(streamType) + am.setStreamVolume(streamType, (callVolume * 0.1 * maxVolume).roundToInt(), 0) + Log.d(TAG, "Orig/new/max $streamType volume is " + + "${origVolume[streamType]}/${am.getStreamVolume(streamType)}/$maxVolume") + } + } + + private fun resetCallVolume() { + if (callVolume != 0) + for ((streamType, streamVolume) in origVolume) { + am.setStreamVolume(streamType, streamVolume, 0) + Log.d(TAG, "Reset $streamType volume to ${am.getStreamVolume(streamType)}") + } + } + + @SuppressLint("WakelockTimeout", "Wakelock") + private fun proximitySensing(enable: Boolean) { + if (enable) { + if (!proximityWakeLock.isHeld) { + Log.d(TAG, "Acquiring proximity wake lock") + proximityWakeLock.acquire() + } else { + Log.d(TAG, "Proximity wake lock already acquired") + } + } else { + if (proximityWakeLock.isHeld) { + proximityWakeLock.release() + Log.d(TAG, "Released proximity wake lock") + } else { + Log.d(TAG, "Proximity wake lock is not held") + } + } + } + + private fun updateNetwork() { + + /* for (n in allNetworks) + Log.d(TAG, "NETWORK $n with caps ${cm.getNetworkCapabilities(n)} and props " + + "${cm.getLinkProperties(n)} is active ${isNetworkActive(n)}") */ + + updateDnsServers() + + val addresses = linkAddresses() + + Log.d(TAG, "Old/new link addresses $linkAddresses/$addresses") + + var added = 0 + for (a in addresses) + if (!linkAddresses.containsKey(a.key)) { + if (Api.net_add_address_ifname(a.key, a.value) != 0) + Log.e(TAG, "Failed to add address: $a") + else + added++ + } + var removed = 0 + for (a in linkAddresses) + if (!addresses.containsKey(a.key)) { + if (Api.net_rm_address(a.key) != 0) + Log.e(TAG, "Failed to remove address: $a") + else + removed++ + } + + val active = cm.activeNetwork + Log.d(TAG, "Added/Removed/Old/New Active = $added/$removed/$activeNetwork/$active") + + if (added > 0 || removed > 0 || active != activeNetwork) { + linkAddresses = addresses + activeNetwork = active + Api.uag_reset_transp(register = true, reinvite = true) + } + + Api.net_debug() + + if (activeNetwork != null) { + val caps = cm.getNetworkCapabilities(activeNetwork) + if (caps != null && caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + Log.d(TAG, "Acquiring WiFi Lock") + wifiLock.acquire() + return + } + } + Log.d(TAG, "Releasing WiFi Lock") + wifiLock.release() + } + + private fun linkAddresses(): MutableMap { + val addresses = mutableMapOf() + for (n in allNetworks) { + val caps = cm.getNetworkCapabilities(n) ?: continue + if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOREGROUND)) { + val props = cm.getLinkProperties(n) ?: continue + for (la in props.linkAddresses) + if (la.scope == android.system.OsConstants.RT_SCOPE_UNIVERSE && + props.interfaceName != null && la.address.hostAddress != null && + afMatch(la.address.hostAddress!!)) + addresses[la.address.hostAddress!!] = props.interfaceName!! + } + } + if (hotSpotIsEnabled) { + for ((k, v) in hotSpotAddresses) + if (afMatch(k)) + addresses[k] = v + } + return addresses + } + + private fun afMatch(address: String): Boolean { + return when (addressFamily) { + "" -> true + "ipv4" -> address.contains(".") + else -> address.contains(":") + } + } + + private fun updateDnsServers() { + if (isServiceRunning && !dynDns) + return + val servers = mutableListOf() + // Use DNS servers first from active network (if available) + if (cm.activeNetwork != null) { + val linkProps = cm.getLinkProperties(cm.activeNetwork) + if (linkProps != null) + servers.addAll(linkProps.dnsServers) + } + // Then add DNS servers from the other networks + for (n in allNetworks) { + if (n == cm.activeNetwork) continue + val linkProps = cm.getLinkProperties(n) + if (linkProps != null) + for (server in linkProps.dnsServers) + if (!servers.contains(server)) servers.add(server) + } + // Update if change + if (servers != dnsServers) { + if (isServiceRunning && Config.updateDnsServers(servers) != 0) { + Log.w(TAG, "Failed to update DNS servers '${servers}'") + } else { + // Log.d(TAG, "Updated DNS servers: '${servers}'") + dnsServers = servers + } + } + } + + private fun registerAndroidContactsObserver() { + if (!androidContactsObserverRegistered) + try { + contentResolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, + true, androidContactsObserver) + androidContactsObserverRegistered = true + } catch (e: SecurityException) { + Log.i(TAG, "No Contacts permission") + } + } + + private fun unRegisterAndroidContactsObserver() { + if (androidContactsObserverRegistered) { + contentResolver.unregisterContentObserver(androidContactsObserver) + androidContactsObserverRegistered = false + } + } + + private fun cleanService() { + if (!isServiceClean) { + this.unregisterReceiver(bluetoothReceiver) + this.unregisterReceiver(hotSpotReceiver) + stopRinging() + stopMediaPlayer() + abandonAudioFocus(applicationContext) + uas.clear() + callHistory.clear() + messages.clear() + if (this::nm.isInitialized) + nm.cancelAll() + if (this::partialWakeLock.isInitialized && partialWakeLock.isHeld) + partialWakeLock.release() + if (this::proximityWakeLock.isInitialized && proximityWakeLock.isHeld) + proximityWakeLock.release() + if (this::wifiLock.isInitialized) + wifiLock.release() + if (this::androidContactsObserver.isInitialized) + contentResolver.unregisterContentObserver(androidContactsObserver) + isServiceClean = true + } + } + + private external fun baresipStart( + path: String, + addresses: String, + logLevel: Int, + software: String + ) + + external fun baresipStop(force: Boolean) + + companion object { + + var isServiceRunning = false + var isStartReceived = false + var isConfigInitialized = false + var libraryLoaded = false + var supportedCameras = false + var cameraFront = true + var callVolume = 0 + var speakerPhone = false + var audioDelay = if (VERSION.SDK_INT < 31) 1500L else 500L + var dynDns = false + var filesPath = "" + var pName = "" + var logLevel = 2 + var sipTrace = false + var callActionUri = "" + var isMainVisible = false + var isMicMuted = false + var isRecOn = false + var toneCountry = "us" + var videoSize = Size(0, 0) + + val uas = ArrayList() + val calls = ArrayList() + var callHistory = ArrayList() + var messages = ArrayList() + val messageUpdate = MutableLiveData() + val contactUpdate = MutableLiveData() + val registrationUpdate = MutableLiveData() + val baresipContacts = ArrayList() + val androidContacts = ArrayList() + val contacts = ArrayList() + val contactNames = ArrayList() + var contactsMode = "baresip" + val chatTexts: MutableMap = mutableMapOf() + val activities = mutableListOf() + var addressFamily = "" + var dnsServers = listOf() + val serviceEvent = MutableLiveData>() + val serviceEvents = mutableListOf() + // of those accounts that have auth username without auth password + val aorPasswords = mutableMapOf() + var audioFocusRequest: AudioFocusRequestCompat? = null + var aecAvailable = AcousticEchoCanceler.isAvailable() + var agcAvailable = AutomaticGainControl.isAvailable() + private val nsAvailable = NoiseSuppressor.isAvailable() + private var aec: AcousticEchoCanceler? = null + private var ns: NoiseSuppressor? = null + private var agc: AutomaticGainControl? = null + var webrtcAec = false + private var btAdapter: BluetoothAdapter? = null + private var playerSessionId = 0 + private var recorderSessionId = 0 + + /* Added by ritoseo */ + val DISPLAY_SPLIT_MODE_원거리_최대_근거리_우하단 = 1 + val DISPLAY_SPLIT_MODE_원거리_최대_근거리_우상단 = 2 + val DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌상단 = 3 + val DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌하단 = 4 + val DISPLAY_SPLIT_MODE_원거리_대상단_근거리_소하단 = 5 + val DISPLAY_SPLIT_MODE_원거리_대좌단_근거리_소우단 = 6 + val DISPLAY_SPLIT_MODE_원거리_대하단_근거리_소상단 = 7 + val DISPLAY_SPLIT_MODE_원거리_반좌단_근거리_반우단 = 8 + var isSupportAudioCall = false + var deviceIpAddress = "0.0.0.0" + var deviceName = "" + var preferTransport = "udp" + var videoFormatHeight = 480 + var connectedDisplayCount = 0 + var useDisplaySplitMode = false + var displaySplitMode = DISPLAY_SPLIT_MODE_원거리_최대_근거리_우하단 + var farViewDisplayId = 1 + var nearViewDisplayId = 2 + var farViewLayout : Rect = Rect(0, 0, 1920, 1080) + var nearViewLayout : Rect = Rect(0, 0, 1920, 1080) + + fun requestAudioFocus(ctx: Context): Boolean { + Log.d(TAG, "Requesting audio focus") + if (audioFocusRequest != null) { + Log.d(TAG, "Already focused") + return true + } + val am = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager + val attributes = AudioAttributesCompat.Builder() + .setUsage(AudioAttributesCompat.USAGE_VOICE_COMMUNICATION) + .setContentType(AudioAttributesCompat.CONTENT_TYPE_SPEECH) + .build() + audioFocusRequest = AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE) + .setAudioAttributes(attributes) + .setOnAudioFocusChangeListener { } + .build() + if (AudioManagerCompat.requestAudioFocus(am, audioFocusRequest!!) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { + Log.d(TAG, "requestAudioFocus granted") + if (isBluetoothHeadsetConnected(ctx)) + startBluetoothSco(ctx, 250L, 3) + } else { + Log.w(TAG, "requestAudioFocus denied") + audioFocusRequest = null + } + return audioFocusRequest != null + } + + fun abandonAudioFocus(ctx: Context) { + val am = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager + if (audioFocusRequest != null) { + Log.d(TAG, "Abandoning audio focus") + if (AudioManagerCompat.abandonAudioFocusRequest(am, audioFocusRequest!!) == + AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { + audioFocusRequest = null + if (isBluetoothHeadsetConnected(ctx)) + stopBluetoothSco(ctx) + } else { + Log.e(TAG, "Failed to abandon audio focus") + } + } + am.mode = MODE_NORMAL + } + + private fun isBluetoothHeadsetConnected(ctx: Context): Boolean { + if (VERSION.SDK_INT >= 31 && + ActivityCompat.checkSelfPermission(ctx, Manifest.permission.BLUETOOTH_CONNECT) == + PackageManager.PERMISSION_DENIED) + return false + return btAdapter != null && btAdapter!!.isEnabled && + btAdapter!!.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothAdapter.STATE_CONNECTED + } + + private fun isBluetoothScoOn(am: AudioManager): Boolean { + return if (VERSION.SDK_INT < 31) + @Suppress("DEPRECATION") + am.isBluetoothScoOn + else + if (am.communicationDevice != null) + am.communicationDevice!!.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO + else + false + } + + private fun startBluetoothSco(ctx: Context, delay: Long, count: Int) { + val am = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager + if (isBluetoothScoOn(am)) { + Log.d(TAG, "Bluetooth SCO is already on") + return + } + Log.d(TAG, "Starting Bluetooth SCO at count $count") + Handler(Looper.getMainLooper()).postDelayed({ + if (VERSION.SDK_INT < 31) { + @Suppress("DEPRECATION") + am.startBluetoothSco() + } else { + Utils.setCommunicationDevice(am, AudioDeviceInfo.TYPE_BLUETOOTH_SCO) + } + if (!isBluetoothScoOn(am) && count > 1) + startBluetoothSco(ctx, delay, count - 1) + else + am.isBluetoothScoOn = true + }, delay) + } + + private fun stopBluetoothSco(ctx: Context) { + Log.d(TAG, "Stopping Bluetooth SCO") + val am = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager + if (!isBluetoothScoOn(am)) { + Log.d(TAG, "Bluetooth SCO is already off") + return + } + Handler(Looper.getMainLooper()).postDelayed({ + if (VERSION.SDK_INT < 31) + @Suppress("DEPRECATION") + am.stopBluetoothSco() + else + am.clearCommunicationDevice() + am.isBluetoothScoOn = false + }, 100) + } + + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/BootCompletedReceiver.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/BootCompletedReceiver.kt new file mode 100644 index 0000000..217a0f1 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/BootCompletedReceiver.kt @@ -0,0 +1,31 @@ +package com.tutpro.baresip.plus + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.os.Bundle +import java.nio.charset.StandardCharsets + +class BootCompletedReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + + Log.i(TAG, "BootCompletedReceiver received intent ${intent.action}") + + val configPath = context.filesDir.absolutePath + "/config" + val config = Utils.getFileContents(configPath) ?: return + val asCv = Utils.getNameValue(String(config, StandardCharsets.ISO_8859_1), "auto_start") + if ((asCv.size > 0) && (asCv[0] == "yes")) { + Log.i(TAG, "Start baresip+ upon boot completed") + val i = Intent(context, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + val b = Bundle() + b.putBoolean("onStartup", true) + putExtras(b) + } + context.startActivity(i) + } + + } + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Call.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Call.kt new file mode 100644 index 0000000..d64128c --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Call.kt @@ -0,0 +1,154 @@ +package com.tutpro.baresip.plus + +import android.text.TextWatcher +import java.util.* + +class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: String, + var status: String, val dtmfWatcher: TextWatcher?) { + + var onhold = false + var held = false + var onHoldCall: Call? = null + var newCall: Call? = null + var rejected = false // Incoming rejected by user or outgoing fails but not due to 408 or 480 + var security = R.drawable.unlocked + var zid = "" + var startTime: GregorianCalendar? = null // Set when call is established + var referTo = "" + var videoRequest = 0 + var dumpfiles = arrayOf("", "") + + fun diverterUri(): String { + return Api.call_diverter_uri(callp) + } + + fun add() { + BaresipService.calls.add(0, this) + } + + fun remove() { + BaresipService.calls.remove(this) + } + + fun connect(uri: String): Boolean { + return Api.call_connect(callp, uri) == 0 + } + + fun startVideoDisplay(): Int { + return Api.call_start_video_display(callp) + } + + fun stopVideoDisplay() { + Api.call_stop_video_display(callp) + } + + fun setVideoSource(front: Boolean): Int { + return Api.call_set_video_source(callp, front) + } + + fun hold(): Boolean { + return Api.call_hold(callp, true) == 0 + } + + fun resume(): Boolean { + return Api.call_hold(callp, false) == 0 + } + + fun transfer(uri: String): Boolean { + val err = Api.call_hold(callp, true) + if (err != 0) + return false + referTo = uri + return Api.call_transfer(callp, uri) == 0 + } + + fun executeTransfer(): Boolean { + return if (this.onHoldCall != null) { + if (Api.call_hold(callp, true) == 0) + Api.call_replace_transfer(this.onHoldCall!!.callp, callp) + else + false + } else + false + } + + fun sendDigit(digit: Char): Int { + return Api.call_send_digit(callp, digit) + } + + fun notifySipfrag(code: Int, reason: String) { + Api.call_notify_sipfrag(callp, code, reason) + } + + fun hasVideo(): Boolean { + return Api.call_has_video(callp) + } + + fun videoEnabled(): Boolean { + return Api.call_video_enabled(callp) + } + + fun disableVideoStream(disable: Boolean) { + Api.call_disable_video_stream(callp, disable) + } + + fun setVideoDirection(vdir: Int) { + Api.call_set_video_direction(callp, vdir) + } + + fun setMediaDirection(adir: Int, vdir: Int) { + Api.call_set_media_direction(callp, adir, vdir) + } + + fun duration(): Int { + return Api.call_duration(callp) + } + + fun stats(stream: String): String { + return Api.call_stats(callp, stream) + } + + fun state(): Int { + return Api.call_state(callp) + } + + fun audioCodecs(): String { + return Api.call_audio_codecs(callp) + } + + fun videoCodecs(): String { + return Api.call_video_codecs(callp) + } + + fun replaces(): Boolean { + return Api.call_replaces(callp) + } + + fun destroy() { + Api.call_destroy(callp) + } + + companion object { + + fun calls(): ArrayList { + return BaresipService.calls + } + + fun ofCallp(callp: Long): Call? { + for (c in BaresipService.calls) + if (c.callp == callp) return c + return null + } + + fun call(status: String): Call? { + for (c in BaresipService.calls.reversed()) + if (c.status == status) return c + return null + } + + fun inCall(): Boolean { + return BaresipService.calls.isNotEmpty() + } + + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsActivity.kt new file mode 100644 index 0000000..bc85b6f --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsActivity.kt @@ -0,0 +1,98 @@ +package com.tutpro.baresip.plus + +import android.media.MediaPlayer +import android.os.Build +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.MenuItem +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.tutpro.baresip.plus.databinding.ActivityCallDetailsBinding + +class CallDetailsActivity : AppCompatActivity() { + + private lateinit var binding: ActivityCallDetailsBinding + private lateinit var aor: String + private lateinit var peer: String + private val decPlayer = MediaPlayer() + private val encPlayer = MediaPlayer() + private var position = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + setContentView(R.layout.activity_call_details) + + binding = ActivityCallDetailsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.CallDetailsView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + aor = intent.getStringExtra("aor")!! + peer = intent.getStringExtra("peer")!! + position = intent.getIntExtra("position", 0) + + Utils.addActivity("call_details,$aor,$peer,$position") + + val headerView = binding.peer + val headerText = "${getString(R.string.peer)} $peer" + headerView.text = headerText + + val listView = binding.calls + listView.adapter = CallDetailsAdapter(this, CallsActivity.uaHistory[position].details, + decPlayer, encPlayer) + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("call_details,$aor,$peer,$position") == -1) + return true + + when (item.itemId) { + android.R.id.home -> { + goBack() + return true + } + } + + return super.onOptionsItemSelected(item) + } + + private fun goBack() { + BaresipService.activities.remove("call_details,$aor,$peer,$position") + decPlayer.stop() + decPlayer.release() + encPlayer.stop() + encPlayer.release() + finish() + } + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsAdapter.kt new file mode 100644 index 0000000..c479398 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallDetailsAdapter.kt @@ -0,0 +1,166 @@ +package com.tutpro.baresip.plus + +import android.annotation.SuppressLint +import android.content.Context +import android.media.AudioAttributes +import android.media.MediaPlayer +import android.text.format.DateUtils +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.net.toUri +import java.io.File +import java.io.IOException +import java.text.DateFormat + +import java.util.* + +class CallDetailsAdapter(private val ctx: Context, private val rows: ArrayList, + private val decPlayer: MediaPlayer, private val encPlayer: MediaPlayer) : + ArrayAdapter(ctx, R.layout.call_detail_row, rows) { + + private val layoutInflater = + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + + private class ViewHolder(view: View?) { + val directionView: ImageView = view?.findViewById(R.id.direction)!! + val timeView: TextView = view?.findViewById(R.id.time)!! + val durationView: TextView = view?.findViewById(R.id.duration)!! + } + + @SuppressLint("SimpleDateFormat") + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.call_detail_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val direction = rows[position].direction + viewHolder.directionView.setImageResource(direction) + + val startTime = rows[position].startTime + val stopTime = rows[position].stopTime + + val stopText = if (DateUtils.isToday(stopTime.timeInMillis)) { + val fmt = DateFormat.getTimeInstance(DateFormat.MEDIUM) + ctx.getString(R.string.today) + " " + fmt.format(stopTime.time) + } else { + val fmt = DateFormat.getDateTimeInstance() + fmt.format(stopTime.time) + } + if (startTime == GregorianCalendar(0, 0, 0)) { + viewHolder.timeView.text = stopText + viewHolder.durationView.text = "?" + } else { + if (startTime == null) { + viewHolder.timeView.text = stopText + viewHolder.durationView.text = "" + } else { + val startText = if (DateUtils.isToday(startTime.timeInMillis)) { + val fmt = DateFormat.getTimeInstance(DateFormat.MEDIUM) + ctx.getString(R.string.today) + " " + fmt.format(startTime.time) + } else { + val fmt = DateFormat.getDateTimeInstance() + fmt.format(startTime.time) + } + viewHolder.timeView.text = startText + val duration = (stopTime.time.time - startTime.time.time) / 1000 + viewHolder.durationView.text = DateUtils.formatElapsedTime(duration) + val recording = rows[position].recording + if (recording[0] != "") { + viewHolder.durationView.setTextColor(ContextCompat.getColor(context, R.color.colorAccent)) + viewHolder.durationView.setOnClickListener { + if (!decPlayer.isPlaying && !encPlayer.isPlaying) { + decPlayer.reset() + encPlayer.reset() + playRecording(ctx, viewHolder.durationView, recording) + } else if (decPlayer.isPlaying && encPlayer.isPlaying) { + decPlayer.stop() + encPlayer.stop() + viewHolder.durationView.setTextColor(ContextCompat.getColor(ctx, R.color.colorItemText)) + } + } + } + } + } + + return rowView + } + + private fun playRecording(ctx: Context, textView: TextView, recording: Array) { + Log.d(TAG, "Playing recordings ${recording[0]} and ${recording[1]}") + decPlayer.apply { + setAudioAttributes( + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + ) + setOnPreparedListener { + encPlayer.apply { + setAudioAttributes( + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + ) + setOnPreparedListener { + it.start() + decPlayer.start() + textView.setTextColor(ContextCompat.getColor(ctx, R.color.colorAccent)) + Log.d(TAG, "Started players") + } + setOnCompletionListener { + Log.d(TAG, "Stopping encPlayer") + it.stop() + textView.setTextColor(ContextCompat.getColor(ctx, R.color.colorItemText)) + } + try { + val file = recording[0] + val encFile = File(file).copyTo(File(BaresipService.filesPath + "/tmp/encode.wav"), true) + val encUri = encFile.toUri() + setDataSource(ctx, encUri) + prepareAsync() + } catch (e: IllegalArgumentException) { + Log.e(TAG, "encPlayer IllegalArgumentException: $e") + } catch (e: IOException) { + Log.e(TAG, "encPlayer IOException: $e") + } catch (e: Exception) { + Log.e(TAG, "encPlayer Exception: $e") + } + } + } + setOnCompletionListener { + Log.d(TAG, "Stopping decPlayer") + it.stop() + } + try { + val file = recording[1] + val decFile = File(file).copyTo(File(BaresipService.filesPath + "/tmp/decode.wav"), true) + val decUri = decFile.toUri() + setDataSource(ctx, decUri) + prepareAsync() + } catch (e: IllegalArgumentException) { + Log.e(TAG, "decPlayer IllegalArgumentException: $e") + } catch (e: IOException) { + Log.e(TAG, "decPlayer IOException: $e") + } catch (e: Exception) { + Log.e(TAG, "decPlayer Exception: $e") + } + } + return + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallHistory.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallHistory.kt new file mode 100644 index 0000000..f70eb3c --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallHistory.kt @@ -0,0 +1,140 @@ +package com.tutpro.baresip.plus + +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.IOException +import java.io.ObjectInputStream +import java.io.ObjectOutputStream +import java.io.RandomAccessFile +import java.io.Serializable +import java.util.GregorianCalendar + +class CallHistoryNew(val aor: String, val peerUri: String, val direction: String) : Serializable { + + var startTime: GregorianCalendar? = null // Set to time when call is established (if ever) + var stopTime = GregorianCalendar() // Set to time when call is closed + var rejected = false + var recording = arrayOf("", "") // Encoder and decoder recording files + + companion object { + + private const val serialVersionUID: Long = 3 + private const val CALL_HISTORY_SIZE = 128 + + fun add(history: CallHistoryNew) { + BaresipService.callHistory.add(history) + if (aorHistorySize(history.aor) > CALL_HISTORY_SIZE) { + for (h in BaresipService.callHistory) + if (h.aor == history.aor) { + if (h.recording[0] != "") + deleteRecording(h.recording) + BaresipService.callHistory.remove(h) + break + } + } + } + + fun clear(aor: String) { + for (i in BaresipService.callHistory.indices.reversed()) { + val h = BaresipService.callHistory[i] + if (h.aor == aor) { + if (h.recording[0] != "") + deleteRecording(h.recording) + BaresipService.callHistory.removeAt(i) + } + } + } + + private fun aorHistorySize(aor: String): Int { + return BaresipService.callHistory.count { it.aor == aor } + } + fun aorLatestPeerUri(aor: String): String? { + for (h in BaresipService.callHistory.reversed()) + if (h.aor == aor) return h.peerUri + return null + } + + fun save() { + Log.d(TAG, "Saving history of ${BaresipService.callHistory.size} calls") + val file = File(BaresipService.filesPath + "/call_history") + try { + val fos = FileOutputStream(file) + val oos = ObjectOutputStream(fos) + oos.writeObject(BaresipService.callHistory) + oos.close() + fos.close() + + RandomAccessFile(file, "rw").use { raf -> + raf.fd.sync() // eMMC에 확실히 기록 + } + } catch (e: IOException) { + Log.e(TAG, "OutputStream exception: $e") + e.printStackTrace() + } + } + + fun restore() { + val file = File(BaresipService.filesPath + "/call_history") + if (file.exists()) { + try { + val fis = FileInputStream(file) + val ois = ObjectInputStream(fis) + @Suppress("UNCHECKED_CAST") + BaresipService.callHistory = ois.readObject() as ArrayList + ois.close() + fis.close() + Log.d(TAG, "Restored history of ${BaresipService.callHistory.size} calls") + } catch (e: Exception) { + Log.e(TAG, "InputStream exception: - $e") + } + } + } + + fun deleteRecording(recording: Array) { + Utils.deleteFile(File(recording[0])) + Utils.deleteFile(File(recording[1])) + } + + @Suppress("UNUSED") + fun print() { + for (h in BaresipService.callHistory) + Log.d(TAG, "[${h.aor}, ${h.peerUri}, ${h.direction}, ${h.startTime}," + + "${h.stopTime}, ${h.rejected}, ${h.recording}") + } + } + +} + +class CallHistory(val aor: String, val peerUri: String, val direction: String) : Serializable { + + var startTime: GregorianCalendar? = null + var stopTime = GregorianCalendar() + var recording = arrayOf("", "") + + companion object { + + private const val serialVersionUID: Long = 2 + + fun get(): ArrayList { + val file = File(BaresipService.filesPath, "history") + var result = ArrayList() + if (file.exists()) { + try { + val fis = FileInputStream(file) + val ois = ObjectInputStream(fis) + @Suppress("UNCHECKED_CAST") + result = ois.readObject() as ArrayList + ois.close() + fis.close() + Log.d(TAG, "Got history of ${result.size} calls") + file.delete() + } catch (e: Exception) { + Log.e(TAG, "InputStream exception: - $e") + } + } + return result + } + } + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallListAdapter.kt new file mode 100644 index 0000000..6f14fbf --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallListAdapter.kt @@ -0,0 +1,85 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.core.content.ContextCompat + +class CallListAdapter(private val ctx: Context, private val account: Account, + private val rows: ArrayList) : + ArrayAdapter(ctx, R.layout.call_row, rows) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val textAvatarView: TextView = view?.findViewById(R.id.TextAvatar)!! + val imageAvatarView: ImageView = view?.findViewById(R.id.ImageAvatar)!! + val directionsView: LinearLayout = view?.findViewById(R.id.directions)!! + val etcView: TextView = view?.findViewById(R.id.etc)!! + val peerURIView: TextView = view?.findViewById(R.id.peer_uri)!! + val timeView: TextView = view?.findViewById(R.id.time)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.call_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val callRow = rows[position] + + Utils.setAvatar(ctx, viewHolder.imageAvatarView, viewHolder.textAvatarView, callRow.peerUri) + + viewHolder.directionsView.removeAllViews() + var count = 1 + for (d in callRow.details) { + if (d.recording[0] != "") + viewHolder.timeView.setTextColor(ContextCompat.getColor(context, R.color.colorAccent)) + if (count > 3) { + viewHolder.etcView.text = "..." + continue + } + val dirView = ImageView(ctx) + val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT) + dirView.layoutParams = params + dirView.setPadding(0, 5, 0, 0) + dirView.setImageResource(d.direction) + viewHolder.directionsView.addView(dirView) + count++ + } + if (count <= 3) + viewHolder.etcView.text = "" + + viewHolder.peerURIView.text = Utils.friendlyUri(ctx, callRow.peerUri, account) + viewHolder.timeView.text = Utils.relativeTime(ctx, callRow.stopTime) + + viewHolder.timeView.setOnClickListener { + val i = Intent(ctx, CallDetailsActivity::class.java) + val b = Bundle() + b.putString("aor", account.aor) + b.putString("peer", viewHolder.peerURIView.text!!.toString()) + b.putInt("position", position) + i.putExtras(b) + ctx.startActivity(i) + } + + return rowView + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallRow.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallRow.kt new file mode 100644 index 0000000..d8c1c40 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallRow.kt @@ -0,0 +1,23 @@ +package com.tutpro.baresip.plus + +import java.util.* +import kotlin.collections.ArrayList + +class CallRow( + val aor: String, val peerUri: String, val direction: Int, startTime: GregorianCalendar?, + val stopTime: GregorianCalendar, val recording: Array +) +{ + + class Details( + val direction: Int, val startTime: GregorianCalendar?, + val stopTime: GregorianCalendar, val recording: Array + ) + + val details = ArrayList
() + + init { + details.add(Details(direction, startTime, stopTime, recording)) + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CallsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CallsActivity.kt new file mode 100644 index 0000000..4e23603 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CallsActivity.kt @@ -0,0 +1,319 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.DialogInterface +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.SystemClock +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.AdapterView +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.tutpro.baresip.plus.databinding.ActivityCallsBinding + +class CallsActivity : AppCompatActivity() { + + private lateinit var binding: ActivityCallsBinding + private lateinit var account: Account + private lateinit var clAdapter: CallListAdapter + + private var aor = "" + private var lastClick: Long = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + public override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityCallsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.CallsView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + aor = intent.getStringExtra("aor")!! + Utils.addActivity("calls,$aor") + + val ua = UserAgent.ofAor(aor)!! + account = ua.account + + val headerView = binding.account + val headerText = getString(R.string.account) + " " + + if (account.nickName != "") + account.nickName + else + aor.split(":")[1] + headerView.text = headerText + + val listView = binding.calls + aorGenerateHistory(aor) + clAdapter = CallListAdapter(this, account, uaHistory) + listView.adapter = clAdapter + listView.isLongClickable = true + + listView.onItemClickListener = AdapterView.OnItemClickListener { _, _, pos, _ -> + val peerUri = uaHistory[pos].peerUri + val peerName = Utils.friendlyUri(this, peerUri, account) + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE, DialogInterface.BUTTON_NEGATIVE -> { + BaresipService.activities.remove("calls,$aor") + MainActivity.activityAor = aor + returnResult() + val i = Intent(this@CallsActivity, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + if (which == DialogInterface.BUTTON_NEGATIVE) + i.putExtra("action", "call") + else + i.putExtra("action", "message") + i.putExtra("uap", ua.uap) + i.putExtra("peer", peerUri) + startActivity(i) + } + + DialogInterface.BUTTON_NEUTRAL -> { + } + } + } + if (SystemClock.elapsedRealtime() - lastClick > 1000) { + lastClick = SystemClock.elapsedRealtime() + with(MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage( + String.format( + getString(R.string.calls_call_message_question), + peerName + ) + ) + setNeutralButton(getString(R.string.cancel), dialogClickListener) + setNegativeButton(getString(R.string.call), dialogClickListener) + setPositiveButton(getString(R.string.send_message), dialogClickListener) + show() + } + } + } + + val contactRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + clAdapter.notifyDataSetChanged() + } + } + + listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { _, _, pos, _ -> + val peerUri = uaHistory[pos].peerUri + val peerName = Utils.friendlyUri(this, peerUri, account) + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_NEGATIVE -> { + val i = Intent(this, ContactActivity::class.java) + val b = Bundle() + b.putBoolean("new", true) + b.putString("uri", peerUri) + i.putExtras(b) + contactRequest.launch(i) + } + + DialogInterface.BUTTON_POSITIVE -> { + removeUaHistoryAt(pos) + CallHistoryNew.save() + clAdapter.notifyDataSetChanged() + } + + DialogInterface.BUTTON_NEUTRAL -> { + } + } + } + val callText: String = if (uaHistory[pos].details.size > 1) + getString(R.string.calls_calls) + else + getString(R.string.calls_call) + val builder = MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme) + if (!Contact.nameExists(peerName, false)) + with(builder) { + setTitle(R.string.confirmation) + setMessage( + String.format( + getString(R.string.calls_add_delete_question), + peerName, callText + ) + ) + setNeutralButton(getString(R.string.cancel), dialogClickListener) + setPositiveButton(getString(R.string.delete), dialogClickListener) + setNegativeButton(getString(R.string.add_contact), dialogClickListener) + show() + } + else + with(builder) { + setTitle(R.string.confirmation) + setMessage( + String.format( + getString(R.string.calls_delete_question), + peerName, callText + ) + ) + setNeutralButton(getString(R.string.cancel), dialogClickListener) + setPositiveButton(getString(R.string.delete), dialogClickListener) + show() + } + true + } + + ua.account.missedCalls = false + invalidateOptionsMenu() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("calls,$aor") == -1) + return true + + when (item.itemId) { + + R.id.delete_history -> { + with (MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(String.format(getString(R.string.delete_history_alert), + aor.substringAfter(":"))) + setPositiveButton(getText(R.string.delete)) { dialog, _ -> + CallHistoryNew.clear(aor) + CallHistoryNew.save() + aorGenerateHistory(aor) + clAdapter.notifyDataSetChanged() + dialog.dismiss() + } + setNeutralButton(getText(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + return true + } + + R.id.history_on_off -> { + account.callHistory = !account.callHistory + invalidateOptionsMenu() + AccountsActivity.saveAccounts() + return true + } + + android.R.id.home -> { + goBack() + return true + } + } + + return super.onOptionsItemSelected(item) + } + + private fun goBack() { + BaresipService.activities.remove("calls,$aor") + returnResult() + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + + private fun returnResult() { + setResult(Activity.RESULT_CANCELED, Intent()) + finish() + } + + override fun onPrepareOptionsMenu(menu: Menu): Boolean { + + if (account.callHistory) + menu.findItem(R.id.history_on_off).title = getString(R.string.disable_history) + else + menu.findItem(R.id.history_on_off).title = getString(R.string.enable_history) + return super.onPrepareOptionsMenu(menu) + + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.calls_menu, menu) + return true + } + + private fun aorGenerateHistory(aor: String) { + uaHistory.clear() + for (i in BaresipService.callHistory.indices.reversed()) { + val h = BaresipService.callHistory[i] + if (h.aor == aor) { + val direction: Int = if (h.direction == "in") { + if (h.startTime != null) { + R.drawable.call_down_green + } else { + if (h.rejected) + R.drawable.call_down_red + else + R.drawable.call_missed_in + } + } else { + if (h.startTime != null) { + R.drawable.call_up_green + } else { + if (h.rejected) + R.drawable.call_up_red + else + R.drawable.call_missed_out + } + } + if (uaHistory.isNotEmpty() && (uaHistory.last().peerUri == h.peerUri)) + uaHistory.last().details.add(CallRow.Details( + direction, h.startTime, + h.stopTime, h.recording + )) + else + uaHistory.add(CallRow( + h.aor, h.peerUri, direction, h.startTime, h.stopTime, + h.recording + )) + } + } + } + + private fun removeUaHistoryAt(i: Int) { + for (details in uaHistory[i].details) { + if (details.recording[0] != "") + CallHistoryNew.deleteRecording(details.recording) + BaresipService.callHistory.removeAll { + it.startTime == details.startTime && it.stopTime == details.stopTime + } + } + CallHistoryNew.deleteRecording(uaHistory[i].recording) + uaHistory.removeAt(i) + } + + companion object { + var uaHistory = ArrayList() + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ChatActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatActivity.kt new file mode 100644 index 0000000..5cce7ef --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatActivity.kt @@ -0,0 +1,266 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.SystemClock +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.WindowManager +import android.view.inputmethod.InputMethodManager +import android.widget.EditText +import android.widget.ImageButton +import android.widget.ListView +import android.widget.Toast +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import androidx.lifecycle.Observer +import com.tutpro.baresip.plus.databinding.ActivityChatBinding + +class ChatActivity : AppCompatActivity() { + + private lateinit var binding: ActivityChatBinding + private lateinit var chatMessages: ArrayList + private lateinit var mlAdapter: MessageListAdapter + private lateinit var listView: ListView + private lateinit var newMessage: EditText + private lateinit var sendButton: ImageButton + private lateinit var imm: InputMethodManager + private lateinit var aor: String + private lateinit var peerUri: String + private lateinit var ua: UserAgent + + private var focus = false + private var lastCall: Long = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityChatBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.ChatView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + aor = intent.getStringExtra("aor")!! + peerUri = intent.getStringExtra("peer")!! + focus = intent.getBooleanExtra("focus", false) + + if (BaresipService.activities.first().startsWith("chat,$aor,$peerUri")) { + returnResult(Activity.RESULT_CANCELED) + return + } else { + Utils.addActivity("chat,$aor,$peerUri,$focus") + } + + val userAgent = UserAgent.ofAor(aor) + if (userAgent == null) { + Log.w(TAG, "MessageActivity did not find ua of $aor") + MainActivity.activityAor = aor + returnResult(Activity.RESULT_CANCELED) + return + } else { + ua = userAgent + } + + imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + this@ChatActivity.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) + + val chatPeer = Utils.friendlyUri(this, peerUri, userAgent.account, true) + + title = String.format(getString(R.string.chat_with), chatPeer) + + val headerView = binding.account + val headerText = getString(R.string.account) + " " + + if (ua.account.nickName != "") + ua.account.nickName + else + aor.split(":")[1] + headerView.text = headerText + + listView = binding.messages + + chatMessages = uaPeerMessages(aor, peerUri) + mlAdapter = MessageListAdapter(this, peerUri, chatPeer, chatMessages) + + val messagesObserver = Observer { + chatMessages.clear() + chatMessages.addAll(uaPeerMessages(aor, peerUri)) + mlAdapter.notifyDataSetChanged() + } + BaresipService.messageUpdate.observe(this, messagesObserver) + + listView.adapter = mlAdapter + //listView.isLongClickable = true + val footerView = View(applicationContext) + listView.addFooterView(footerView) + listView.smoothScrollToPosition(mlAdapter.count - 1) + + newMessage = binding.text + newMessage.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus -> + if (hasFocus) { + window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + } + } + + if (focus) newMessage.requestFocus() + + sendButton = binding.sendButton + sendButton.setOnClickListener { + val msgText = newMessage.text.toString() + if (msgText.isNotEmpty()) { + imm.hideSoftInputFromWindow(newMessage.windowToken, 0) + val time = System.currentTimeMillis() + val msg = Message(aor, peerUri, msgText, time, MESSAGE_UP_WAIT, 0, "", true) + msg.add() + var msgUri = "" + chatMessages.add(msg) + if (Utils.isTelUri(peerUri)) + if (ua.account.telProvider == "") { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.no_telephony_provider), + Utils.plainAor(aor))) + } else { + msgUri = Utils.telToSip(peerUri, ua.account) + } + else + msgUri = peerUri + if (msgUri != "") + if (Api.message_send(ua.uap, msgUri, msgText, time.toString()) != 0) { + Toast.makeText(applicationContext, "${getString(R.string.message_failed)}!", + Toast.LENGTH_SHORT).show() + msg.direction = MESSAGE_UP_FAIL + msg.responseReason = getString(R.string.message_failed) + } else { + newMessage.setText("") + BaresipService.chatTexts.remove("$aor::$peerUri") + } + mlAdapter.notifyDataSetChanged() + } + } + + ua.account.unreadMessages = false + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.call_icon, menu) + return true + } + + override fun onResume() { + super.onResume() + val chatText = BaresipService.chatTexts["$aor::$peerUri"] + if (chatText != null) { + Log.d(TAG, "Restoring newMessage ${newMessage.text} for $aor::$peerUri") + newMessage.setText(chatText) + newMessage.requestFocus() + BaresipService.chatTexts.remove("$aor::$peerUri") + } + chatMessages.clear() + chatMessages.addAll(uaPeerMessages(aor, peerUri)) + mlAdapter.notifyDataSetChanged() + } + + override fun onPause() { + super.onPause() + if (newMessage.text.toString() != "") { + Log.d(TAG, "Saving newMessage ${newMessage.text} for $aor::$peerUri") + BaresipService.chatTexts["$aor::$peerUri"] = newMessage.text.toString() + } + MainActivity.activityAor = aor + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if ((BaresipService.activities.indexOf("chat,$aor,$peerUri,false") == -1) && + (BaresipService.activities.indexOf("chat,$aor,$peerUri,true") == -1)) + return true + + when (item.itemId) { + + R.id.callIcon -> { + if (SystemClock.elapsedRealtime() - lastCall > 1000) { + lastCall = SystemClock.elapsedRealtime() + val intent = Intent(this, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + intent.putExtra("action", "call") + intent.putExtra("uap", ua.uap) + intent.putExtra("peer", peerUri) + startActivity(intent) + finish() + return true + } + } + + android.R.id.home -> { + goBack() + return true + } + + } + + return super.onOptionsItemSelected(item) + + } + + private fun goBack() { + + var save = false + for (m in chatMessages) { + if (m.new) { + m.new = false + save = true + } + } + if (save) Message.save() + + imm.hideSoftInputFromWindow(newMessage.windowToken, 0) + + BaresipService.activities.remove("chat,$aor,$peerUri,false") + BaresipService.activities.remove("chat,$aor,$peerUri,true") + returnResult(Activity.RESULT_OK) + + } + + private fun returnResult(code: Int) { + setResult(code, Intent()) + finish() + } + + private fun uaPeerMessages(aor: String, peerUri: String): ArrayList { + val res = ArrayList() + for (m in Message.messages()) + if ((m.aor == aor) && (m.peerUri == peerUri)) res.add(m) + return res + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ChatListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatListAdapter.kt new file mode 100644 index 0000000..1e57f1f --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatListAdapter.kt @@ -0,0 +1,83 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.graphics.Typeface +import android.text.format.DateUtils.isToday +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.core.content.ContextCompat +import java.text.DateFormat +import java.util.* + +class ChatListAdapter(private val ctx: Context, private val account: Account, private val rows: ArrayList) : + ArrayAdapter(ctx, R.layout.message, rows) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val textAvatarView: TextView = view?.findViewById(R.id.TextAvatar)!! + val imageAvatarView: ImageView = view?.findViewById(R.id.ImageAvatar)!! + val layoutView: LinearLayout = view?.findViewById(R.id.chat)!! + val peerView: TextView = view?.findViewById(R.id.peer)!! + val infoView: TextView = view?.findViewById(R.id.info)!! + val textView: TextView = view?.findViewById(R.id.text)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.chat_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val message = rows[position] + + viewHolder.peerView.text = Utils.friendlyUri(ctx, message.peerUri, account) + Utils.setAvatar(ctx, viewHolder.imageAvatarView, viewHolder.textAvatarView, + if (Contact.contactName(message.peerUri) == message.peerUri) + Utils.e164Uri(message.peerUri, account.countryCode) + else + message.peerUri) + + if (message.direction == MESSAGE_DOWN) + viewHolder.layoutView.setBackgroundResource(R.drawable.message_in_bg) + else + viewHolder.layoutView.setBackgroundResource(R.drawable.message_out_bg) + + val cal = GregorianCalendar() + cal.timeInMillis = message.timeStamp + val fmt: DateFormat = if (isToday(message.timeStamp)) + DateFormat.getTimeInstance(DateFormat.SHORT) + else + DateFormat.getDateInstance(DateFormat.SHORT) + viewHolder.infoView.text = fmt.format(cal.time) + if (message.direction == MESSAGE_UP_FAIL) { + val info: String = if (message.responseCode != 0) + "${viewHolder.infoView.text} - ${ctx.getString(R.string.message_failed)}: " + + "${message.responseCode} ${message.responseReason}" + else + "${viewHolder.infoView.text} - ${ctx.getString(R.string.sending_failed)}" + viewHolder.infoView.text = info + viewHolder.infoView.setTextColor(ContextCompat.getColor(ctx, R.color.colorAccent)) + } + + viewHolder.textView.text = message.message + if (message.new) + viewHolder.textView.setTypeface(null, Typeface.BOLD) + + return rowView + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatsActivity.kt new file mode 100644 index 0000000..d80ad2f --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ChatsActivity.kt @@ -0,0 +1,329 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.DialogInterface +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.tutpro.baresip.plus.databinding.ActivityChatsBinding + +class ChatsActivity: AppCompatActivity() { + + private lateinit var binding: ActivityChatsBinding + private lateinit var uaMessages: ArrayList + private lateinit var listView: ListView + private lateinit var clAdapter: ChatListAdapter + internal lateinit var peerUri: AutoCompleteTextView + private lateinit var plusButton: ImageButton + internal lateinit var aor: String + internal lateinit var account: Account + private lateinit var chatRequest: ActivityResultLauncher + private var scrollPosition = -1 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + public override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityChatsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.ChatsView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + listView = binding.chats + plusButton = binding.plusButton + + aor = intent.extras!!.getString("aor")!! + Utils.addActivity("chats,$aor") + account = UserAgent.ofAor(aor)!!.account + + val headerView = binding.account + val headerText = getString(R.string.account) + " " + + if (account.nickName != "") + account.nickName + else + aor.split(":")[1] + headerView.text = headerText + + uaMessages = uaMessages(aor) + clAdapter = ChatListAdapter(this, account, uaMessages) + listView.adapter = clAdapter + listView.isLongClickable = true + + chatRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + clAdapter.clear() + uaMessages = uaMessages(aor) + clAdapter = ChatListAdapter(this, account, uaMessages) + listView.adapter = clAdapter + } + } + + listView.onItemClickListener = AdapterView.OnItemClickListener { _, _, pos, _ -> + scrollPosition = pos + val i = Intent(this, ChatActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putString("peer", uaMessages[pos].peerUri) + i.putExtras(b) + chatRequest.launch(i) + } + + listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { _, _, pos, _ -> + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE -> { + val i = Intent(this, ContactActivity::class.java) + val b = Bundle() + b.putBoolean("new", true) + b.putString("uri", uaMessages[pos].peerUri) + i.putExtras(b) + startActivity(i) + } + DialogInterface.BUTTON_NEGATIVE -> { + val peerUri = uaMessages[pos].peerUri + val messages = ArrayList() + for (m in Message.messages()) + if ((m.aor != aor) || (m.peerUri != peerUri)) + messages.add(m) + else + clAdapter.remove(m) + clAdapter.notifyDataSetChanged() + BaresipService.messages = messages + Message.save() + uaMessages = uaMessages(aor) + } + DialogInterface.BUTTON_NEUTRAL -> { + } + } + } + + val builder = MaterialAlertDialogBuilder(this@ChatsActivity, R.style.AlertDialogTheme) + val peer = Utils.friendlyUri(this@ChatsActivity, uaMessages[pos].peerUri, account) + if (!Contact.nameExists(peer, false)) + with (builder) { + setTitle(R.string.confirmation) + setMessage(String.format(getString(R.string.long_chat_question), + peer)) + setNeutralButton(getText(R.string.cancel), dialogClickListener) + setNegativeButton(getText(R.string.delete), dialogClickListener) + setPositiveButton(getText(R.string.add_contact), dialogClickListener) + show() + } + else + with (builder) { + setTitle(R.string.confirmation) + setMessage(String.format(getString(R.string.short_chat_question), peer)) + setNeutralButton(getText(R.string.cancel), dialogClickListener) + setNegativeButton(getText(R.string.delete), dialogClickListener) + show() + } + true + } + + peerUri = binding.peer + peerUri.threshold = 2 + peerUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item, + Contact.contactNames())) + + plusButton.setOnClickListener { + makeChat(true) + } + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + private fun makeChat(lookForContact: Boolean = true) { + var uriText = peerUri.text.toString().trim() + if (uriText.isNotEmpty()) { + if (lookForContact) { + val uris = Contact.contactUris(uriText) + if (uris.size == 1) + uriText = uris[0] + else if (uris.size > 1) { + val builder = MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme) + with(builder) { + setTitle("Choose Destination") + setItems(uris.toTypedArray()) { _, which -> + peerUri.setText(uris[which]) + makeChat(false) + } + setNeutralButton(getString(R.string.cancel)) { _: DialogInterface, _: Int -> } + show() + } + return + } + } + if (Utils.isTelNumber(uriText)) + uriText = "tel:$uriText" + val uri = if (Utils.isTelUri(uriText)) { + if (account.telProvider == "") { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.no_telephony_provider), account.aor)) + return + } + Utils.telToSip(uriText, account) + } else { + Utils.uriComplete(uriText, aor) + } + if (!Utils.checkUri(uri)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_or_tel_uri), uri)) + } else { + peerUri.text.clear() + peerUri.isCursorVisible = false + val i = Intent(this@ChatsActivity, ChatActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putString("peer", uri) + i.putExtras(b) + chatRequest.launch(i) + } + } + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + + override fun onResume() { + super.onResume() + clAdapter.clear() + uaMessages = uaMessages(aor) + clAdapter = ChatListAdapter(this, account, uaMessages) + listView.adapter = clAdapter + if (uaMessages.isNotEmpty()) { + if (scrollPosition >= 0) { + listView.setSelection(scrollPosition) + scrollPosition = -1 + } else { + listView.setSelection(0) + } + } + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.chats_menu, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + when (item.itemId) { + + R.id.delete_chats -> { + with (MaterialAlertDialogBuilder(this@ChatsActivity, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(String.format(getString(R.string.delete_chats_alert), + aor.substringAfter(":"))) + setPositiveButton(getText(R.string.delete)) { dialog, _ -> + Message.clear(aor) + Message.save() + uaMessages.clear() + clAdapter.notifyDataSetChanged() + account.unreadMessages = false + dialog.dismiss() + } + setNeutralButton(getText(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + return true + } + + android.R.id.home -> { + goBack() + return true + } + + } + + return super.onOptionsItemSelected(item) + } + + private fun goBack() { + BaresipService.activities.remove("chats,$aor") + returnResult() + } + + private fun returnResult() { + setResult(Activity.RESULT_CANCELED, Intent()) + finish() + } + + private fun uaMessages(aor: String) : ArrayList { + val res = ArrayList() + account.unreadMessages = false + for (m in Message.messages().reversed()) { + if (m.aor != aor) continue + var found = false + for (r in res) + if (r.peerUri == m.peerUri) { + found = true + break + } + if (!found) { + res.add(m) + if (m.new) + account.unreadMessages = true + } + } + return res + } + + companion object { + + fun saveUaMessage(aor: String, time: Long) { + for (i in Message.messages().indices.reversed()) + if ((Message.messages()[i].aor == aor) && + (Message.messages()[i].timeStamp == time)) { + Message.messages()[i].new = false + Message.save() + return + } + } + + fun deleteUaMessage(aor: String, time: Long) { + for (i in Message.messages().indices.reversed()) + if ((Message.messages()[i].aor == aor) && + (Message.messages()[i].timeStamp == time)) { + Message.messages().removeAt(i) + Message.save() + return + } + } + + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Codec.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Codec.kt new file mode 100644 index 0000000..a48e2ff --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Codec.kt @@ -0,0 +1,3 @@ +package com.tutpro.baresip.plus + +data class Codec(val name: String, var enabled: Boolean) \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsActivity.kt new file mode 100644 index 0000000..6301335 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsActivity.kt @@ -0,0 +1,230 @@ +package com.tutpro.baresip.plus + +import android.annotation.SuppressLint +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.ItemTouchHelper.* +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.tutpro.baresip.plus.databinding.ActivityCodecsBinding +import java.util.* + +class CodecsActivity : AppCompatActivity() { + + private lateinit var binding: ActivityCodecsBinding + private lateinit var acc: Account + private lateinit var ua: UserAgent + private lateinit var codecsAdapter: CodecsAdapter + + private var aor = "" + private var newCodecs = ArrayList() + private var media = "" + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityCodecsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.CodecsView.updatePadding(top = systemBars.top + 64) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + aor = intent.getStringExtra("aor")!! + media = intent.getStringExtra("media")!! + + Utils.addActivity("codecs,$aor,$media") + + ua = UserAgent.ofAor(aor)!! + acc = ua.account + + val allCodecs: ArrayList + val accCodecs: ArrayList + + val codecsTitle = binding.CodecsTitle + val codecList = binding.CodecList + + itemTouchHelper.attachToRecyclerView(codecList) + + if (media == "audio") { + codecsTitle.text = getString(R.string.audio_codecs) + allCodecs = ArrayList(Api.audio_codecs().split(",")) + accCodecs = acc.audioCodec + } else { + codecsTitle.text = getString(R.string.video_codecs) + allCodecs = ArrayList(Api.video_codecs().split(",").distinct()) + allCodecs.remove("H265") + accCodecs = acc.videoCodec + } + + for (codec in accCodecs) + if (codec in allCodecs) + newCodecs.add(Codec(codec, true)) + for (codec in allCodecs) + if (codec !in accCodecs) + newCodecs.add(Codec(codec, false)) + + codecsAdapter = CodecsAdapter(newCodecs) + + codecList.layoutManager = LinearLayoutManager(this) + codecList.adapter = codecsAdapter + + itemTouchHelper.attachToRecyclerView(binding.CodecList) + + codecsTitle.setOnClickListener { + if (media == "audio") + Utils.alertView(this, getString(R.string.audio_codecs), + getString(R.string.audio_codecs_help)) + else + Utils.alertView(this, getString(R.string.video_codecs), + getString(R.string.video_codecs_help)) + } + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + private val itemTouchHelper by lazy { + val simpleItemTouchCallback = object : SimpleCallback( + UP or DOWN or START or END, RIGHT) { + + override fun onMove( + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder, + target: RecyclerView.ViewHolder + ): Boolean { + val fromPosition = viewHolder.adapterPosition + val toPosition = target.adapterPosition + codecsAdapter.moveItem(fromPosition, toPosition) + codecsAdapter.notifyItemMoved(fromPosition, toPosition) + return true + } + + @SuppressLint("NotifyDataSetChanged") + override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { + val position = viewHolder.adapterPosition + if (newCodecs[position].enabled) { + codecsAdapter.disableItem(position) + codecsAdapter.notifyItemRemoved(position) + } else { + codecsAdapter.enableItem(position) + codecsAdapter.notifyDataSetChanged() + } + } + + @SuppressLint("NotifyDataSetChanged") + override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) { + super.clearView(recyclerView, viewHolder) + recyclerView.post { codecsAdapter.notifyDataSetChanged() } + } + } + + ItemTouchHelper(simpleItemTouchCallback) + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + + super.onCreateOptionsMenu(menu) + val inflater = menuInflater + inflater.inflate(R.menu.check_icon, menu) + return true + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("codecs,$aor,$media") == -1) + return true + + when (item.itemId) { + + R.id.checkIcon -> { + + var save = false + val codecs = ArrayList() + + for (codec in newCodecs) + if (codec.enabled) + codecs.add(codec.name) + + val codecList = Utils.implode(codecs, ",") + + if (media == "audio") + if (codecs != acc.audioCodec) { + if (Api.account_set_audio_codecs(acc.accp, codecList) == 0) { + Log.d(TAG, "New audio codecs '$codecList'") + acc.audioCodec = codecs + save = true + } else { + Log.e(TAG, "Setting of audio codecs '$codecList' failed") + } + } + + if (media == "video") + if (codecs != acc.videoCodec) { + if (Api.account_set_video_codecs(acc.accp, codecList) == 0) { + Log.d(TAG, "New video codecs '$codecs'") + acc.videoCodec = codecs + save = true + } else { + Log.e(TAG, "Setting of video codecs '$codecs' failed") + } + } + + if (save) + AccountsActivity.saveAccounts() + + BaresipService.activities.remove("codecs,$aor,$media") + finish() + return true + } + + android.R.id.home -> { + goBack() + return true + } + + } + + return super.onOptionsItemSelected(item) + + } + + private fun goBack() { + BaresipService.activities.remove("codecs,$aor,$media") + finish() + } + + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsAdapter.kt new file mode 100644 index 0000000..ad42c2c --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/CodecsAdapter.kt @@ -0,0 +1,59 @@ +package com.tutpro.baresip.plus + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import java.util.* + +class CodecsAdapter(private val codecs: ArrayList): + RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CodecViewHolder { + val v = LayoutInflater.from(parent.context).inflate(R.layout.codec, parent, false) + return CodecViewHolder(v) + } + + override fun getItemCount(): Int { + return codecs.size + } + + fun moveItem(fromPosition: Int, toPosition: Int) { + val codec: Codec = codecs[fromPosition] + codec.enabled = codecs[toPosition].enabled + codecs.removeAt(fromPosition) + codecs.add(toPosition, codec) + } + + fun enableItem(position: Int) { + val codec: Codec = codecs[position] + codec.enabled = true + codecs.removeAt(position) + codecs.add(0, codec) + } + + fun disableItem(position: Int) { + val codec: Codec = codecs[position] + if (codec.enabled) { + codec.enabled = false + codecs.removeAt(position) + codecs.add(codec) + } + } + + override fun onBindViewHolder(holder: CodecViewHolder, position: Int) { + val codec = codecs[position] + holder.codecName.text = codec.name + holder.codecName.alpha = if (codec.enabled) 1.0f else 0.5f + holder.reorderImage.setImageResource( + if (codec.enabled) R.drawable.reorder else android.R.color.transparent + ) + } + + class CodecViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { + var codecName: TextView = itemView.findViewById(R.id.codecName) + var reorderImage: ImageView = itemView.findViewById(R.id.reorderImage) + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Config.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Config.kt new file mode 100644 index 0000000..1d660ad --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Config.kt @@ -0,0 +1,355 @@ +package com.tutpro.baresip.plus + +import android.Manifest +import android.content.Context +import android.graphics.ImageFormat +import android.hardware.camera2.CameraCharacteristics +import android.hardware.camera2.CameraManager +import android.util.Size +import androidx.appcompat.app.AppCompatDelegate +import java.io.File +import java.net.InetAddress +import java.nio.charset.StandardCharsets + +object Config { + + private val configPath = BaresipService.filesPath + "/config" + private lateinit var config: String + private lateinit var previousConfig: String + private lateinit var previousLines: List + var videoSizes = mutableListOf() + + fun initialize(ctx: Context) { + + config = ctx.assets.open("config.static").bufferedReader(Charsets.UTF_8).use { it.readText() } + if (!File(configPath).exists()) { + for (module in AudioActivity.audioModules) + config = "${config}module ${module}.so\n" + previousConfig = config + } else { + previousConfig = String(Utils.getFileContents(configPath)!!, Charsets.UTF_8) + } + previousLines = previousConfig.split("\n") + + val logLevel = previousVariable("log_level") + if (logLevel == "") { + config = "${config}log_level 2\n" + Log.logLevel = Log.LogLevel.WARN + } else { + config = "${config}log_level $logLevel\n" + BaresipService.logLevel = logLevel.toInt() + Log.logLevelSet(BaresipService.logLevel) + } + + val autoStart = previousVariable("auto_start") + config = if (autoStart != "") + "${config}auto_start $autoStart\n" + else + "${config}auto_start no\n" + + val sipListen = previousVariable("sip_listen") + if (sipListen != "") + config = "${config}sip_listen $sipListen\n" + + val addressFamily = previousVariable("net_af") + if (addressFamily != "") { + config = "${config}net_af $addressFamily\n" + BaresipService.addressFamily = addressFamily + } + + val sipCertificate = previousVariable("sip_certificate") + if (sipCertificate != "") + config = "${config}sip_certificate $sipCertificate\n" + + val sipVerifyServer = previousVariable("sip_verify_server") + if (sipVerifyServer != "") + config = "${config}sip_verify_server $sipVerifyServer\n" + + val caBundlePath = "${BaresipService.filesPath}/ca_bundle.crt" + val caBundleFile = File(caBundlePath) + val caFilePath = "${BaresipService.filesPath}/ca_certs.crt" + val caFile = File(caFilePath) + if (caFile.exists()) + caFile.copyTo(caBundleFile, true) + else + caBundleFile.writeBytes(byteArrayOf()) + Log.d(TAG, "Size of caFile = ${caBundleFile.length()}") + val cacertsPath = "/system/etc/security/cacerts" + val cacertsDir = File(cacertsPath) + var caCount = 0 + if (cacertsDir.exists()) { + cacertsDir.walk().forEach { + if (it.isFile) { + caBundleFile.appendBytes( + it.readBytes() + .toString(Charsets.UTF_8) + .substringBefore("Certificate:") + .toByteArray(Charsets.UTF_8) + ) + caCount++ + } + } + Log.d(TAG, "Added $caCount ca certificates from $cacertsPath") + } else { + Log.w(TAG, "Directory $cacertsDir does not exist!") + } + Log.d(TAG, "Size of caBundleFile = ${caBundleFile.length()}") + config = "${config}sip_cafile $caBundlePath\n" + + val dynamicDns = previousVariable("dyn_dns") + if (dynamicDns == "no") { + config = "${config}dyn_dns no\n" + for (server in previousVariables("dns_server")) + config = "${config}dns_server $server\n" + } else { + config = "${config}dyn_dns yes\n" + for (dnsServer in BaresipService.dnsServers) + config = if (Utils.checkIpV4(dnsServer.hostAddress!!)) + "${config}dns_server ${dnsServer.hostAddress}:53\n" + else + "${config}dns_server [${dnsServer.hostAddress}]:53\n" + BaresipService.dynDns = true + } + + val userAgent = previousVariable("user_agent") + if (userAgent != "") + config = "${config}user_agent $userAgent\n" + + val darkTheme = previousVariable("dark_theme") + Preferences(ctx).displayTheme = if (darkTheme == "yes") { + config = "${config}dark_theme yes\n" + AppCompatDelegate.MODE_NIGHT_YES + } else { + AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + } + + var contactsMode = previousVariable("contacts_mode").lowercase() + if (contactsMode != "") { + if (contactsMode != "baresip" && + !Utils.checkPermissions(ctx, arrayOf(Manifest.permission.READ_CONTACTS, + Manifest.permission.WRITE_CONTACTS))) + contactsMode = "baresip" + } else { + contactsMode = "baresip" + } + config = "${config}contacts_mode $contactsMode\n" + BaresipService.contactsMode = contactsMode + + config = "${config}snd_path ${BaresipService.filesPath}/recordings\n" + + val callVolume = previousVariable("call_volume") + if (callVolume != "") { + config = "${config}call_volume $callVolume\n" + BaresipService.callVolume = callVolume.toInt() + } else { + config = "${config}call_volume ${BaresipService.callVolume}\n" + } + + val speakerPhone = previousVariable("speaker_phone") + if (speakerPhone != "") { + config = "${config}speaker_phone $speakerPhone\n" + BaresipService.speakerPhone = speakerPhone == "yes" + } else { + config = "${config}speaker_phone no\n" + } + + val previousModules = previousVariables("module") + for (module in AudioActivity.audioModules) + if ("${module}.so" in previousModules) + config = "${config}module ${module}.so\n" + + if ("webrtc_aecm.so" in previousModules || !File(configPath).exists()) { + config = "${config}module webrtc_aecm.so\n" + BaresipService.webrtcAec = true + } + + val micGain = previousVariable("augain") + config = if (BaresipService.agcAvailable || micGain == "" || micGain == "1.0") + "${config}augain 1.0\n" + else + "${config}module augain.so\naugain $micGain\n" + + val opusBitRate = previousVariable("opus_bitrate") + config = if (opusBitRate == "") + "${config}opus_bitrate 28000\n" + else + "${config}opus_bitrate $opusBitRate\n" + + val opusPacketLoss = previousVariable("opus_packet_loss") + config = if (opusPacketLoss == "") + "${config}opus_packet_loss 1\n" + else + "${config}opus_packet_loss $opusPacketLoss\n" + + val audioDelay = previousVariable("audio_delay") + if (audioDelay != "") { + config = "${config}audio_delay $audioDelay\n" + BaresipService.audioDelay = audioDelay.toLong() + } else { + config = "${config}audio_delay ${BaresipService.audioDelay}\n" + } + + val cameraManager: CameraManager = ctx.getSystemService(Context.CAMERA_SERVICE) as CameraManager + //val defaultSizes = arrayListOf("320x240", "640x480", "720x480", "960x720", "1280x720", "1920x1080") + val defaultSizes = arrayListOf("720x480", "1280x720", "1920x1080") + /* + for (id in cameraManager.cameraIdList) { + val cameraCharacteristics = cameraManager.getCameraCharacteristics(id) +// if (cameraCharacteristics.get(CameraCharacteristics.LENS_FACING) != CameraCharacteristics.LENS_FACING_FRONT) +// continue + if(id != "0" && id != "120") + continue + + val streamConfigurationMap = cameraCharacteristics[CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP] + ?: continue + val sizes = streamConfigurationMap.getOutputSizes(ImageFormat.YUV_420_888) + for (size in sizes) + if (size.toString() in defaultSizes) + videoSizes.add(size.toString()) + } + */ + + /* Added by ritoseo */ + for (size in defaultSizes) + videoSizes.add(size.toString()) + /********************/ + + val videoSize = previousVariable("video_size") + BaresipService.videoSize = if (videoSize !in videoSizes) { + if ("1280x720" in videoSizes) + Size(1280, 720) + else + Size(640, 480) + } else { + Size(videoSize.substringBefore("x").toInt(), + videoSize.substringAfter("x").toInt()) + } + config = "${config}video_size " + + "${BaresipService.videoSize.width}x${BaresipService.videoSize.height}\n" + + if (Utils.supportedCameras(ctx).isNotEmpty()) { + config = "${config}module avformat.so\n" + config = "${config}module selfview.so\n" + config = "${config}video_selfview window\n" + config = "${config}selfview_size " + + "${BaresipService.videoSize.width/5}" + "x" + + "${BaresipService.videoSize.height/5}\n" + } + + val videoFps = previousVariable("video_fps") + config = if (videoFps != "" && videoFps != "60.0") + "${config}video_fps $videoFps\n" + else + "${config}video_fps 60\n" + + val toneCountry = previousVariable("tone_country") + if (toneCountry != "") + BaresipService.toneCountry = toneCountry + config = "${config}tone_country ${BaresipService.toneCountry}\n" + + + val deviceName = previousVariable("device_name") + if (deviceName != "") + BaresipService.deviceName = deviceName + else + BaresipService.deviceName = Utils.propertyGet("rito.board.serial") + config = "${config}device_name ${BaresipService.deviceName}\n" + + + val preferTransport = previousVariable("prefer_transport") + if (preferTransport != "") + BaresipService.preferTransport = preferTransport + else + BaresipService.preferTransport = "udp" + config = "${config}prefer_transport ${BaresipService.preferTransport}\n" + + + save() + BaresipService.isConfigInitialized = true + + } + + private fun previousVariable(name: String): String { + for (line in previousLines) { + val nameValue = line.split(" ", limit = 2) + if (nameValue.size == 2 && nameValue[0] == name) + return nameValue[1].trim() + } + return "" + } + + private fun previousVariables(name: String): ArrayList { + val result = ArrayList() + for (line in previousLines) { + val nameValue = line.split(" ", limit = 2) + if (nameValue.size == 2 && nameValue[0] == name) + result.add(nameValue[1].trim()) + } + return result + } + + fun variable(name: String): String { + for (line in config.split("\n")) { + val nameValue = line.split(" ", limit = 2) + if (nameValue.size == 2 && nameValue[0] == name) + return nameValue[1].trim() + } + return "" + } + + fun variables(name: String): ArrayList { + val result = ArrayList() + for (line in config.split("\n")) { + val nameValue = line.split(" ", limit = 2) + if (nameValue.size == 2 && nameValue[0] == name) + result.add(nameValue[1].trim()) + } + return result + } + + fun addVariable(name: String, value: String) { + config += "$name $value\n" + } + + fun removeVariable(variable: String) { + config = Utils.removeLinesStartingWithString(config, "$variable ") + } + + fun removeVariableValue(variable: String, value: String) { + config = Utils.removeLinesStartingWithString(config, "$variable $value") + } + + fun replaceVariable(variable: String, value: String) { + removeVariable(variable) + if (value != "") + addVariable(variable, value) + } + + fun reset() { + Utils.deleteFile(File(configPath)) + } + + fun save() { + Utils.putFileContents(configPath, config.toByteArray()) + Log.d(TAG, "Saved new config '$config'") + // Api.reload_config() + } + + fun updateDnsServers(dnsServers: List): Int { + var servers = "" + for (dnsServer in dnsServers) { + if (dnsServer.hostAddress == null) continue + var address = dnsServer.hostAddress!!.removePrefix("/") + address = if (Utils.checkIpV4(address)) + "${address}:53" + else + "[${address}]:53" + servers = if (servers == "") + address + else + "${servers},${address}" + } + return Api.net_use_nameserver(servers) + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ConfigActivity.kt new file mode 100644 index 0000000..35ee213 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ConfigActivity.kt @@ -0,0 +1,830 @@ +package com.tutpro.baresip.plus + +import android.Manifest +import android.app.Activity +import android.app.role.RoleManager +import android.content.ActivityNotFoundException +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build +import android.os.Bundle +import android.os.PowerManager +import android.text.method.LinkMovementMethod +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar +import com.tutpro.baresip.plus.Utils.copyInputStreamToFile +import com.tutpro.baresip.plus.Utils.showSnackBar +import com.tutpro.baresip.plus.databinding.ActivityConfigBinding +import java.io.File +import java.io.FileInputStream +import java.util.* + +class ConfigActivity : AppCompatActivity() { + + private lateinit var binding: ActivityConfigBinding + private lateinit var layout: ScrollView + private lateinit var baresipService: Intent + private lateinit var autoStart: CheckBox + private lateinit var listenAddr: EditText + private lateinit var netAfSpinner: Spinner + private lateinit var netAf: String + private lateinit var netAfKeys: ArrayList + private lateinit var dnsServers: EditText + private lateinit var certificateFile: CheckBox + private lateinit var verifyServer: CheckBox + private lateinit var caFile: CheckBox + private lateinit var userAgent: EditText + private lateinit var darkTheme: CheckBox + private lateinit var videoFps: EditText + private lateinit var contactsSpinner: Spinner + private lateinit var contactsMode: String + private lateinit var contactsModeKeys: ArrayList + private lateinit var batteryOptimizations: CheckBox + private lateinit var defaultDialer: CheckBox + private lateinit var debug: CheckBox + private lateinit var sipTrace: CheckBox + private lateinit var reset: CheckBox + private lateinit var requestPermissionLauncher: ActivityResultLauncher + private lateinit var requestPermissionsLauncher: ActivityResultLauncher> + + private var oldAutoStart = "" + private var oldListenAddr = "" + private var oldDnsServers = "" + private var oldCertificateFile = false + private var oldVerifyServer = false + private var oldUserAgent = "" + private var oldLogLevel = "" + private var oldDisplayTheme = -1 + private var oldContactsMode = "" + private var oldNetAf = "" + private var videoSize = "" + private var oldVideoSize = Config.variable("video_size") + private var oldVideoFps = Config.variable("video_fps") + private var save = false + private var restart = false + private var audioRestart = false + private var menu: Menu? = null + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + val contactsPermissions = arrayOf(Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS) + + binding = ActivityConfigBinding.inflate(layoutInflater) + setContentView(binding.root) + layout = binding.ConfigView + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.ConfigView.updatePadding(top = 172) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + Utils.addActivity("config") + + baresipService = Intent(this@ConfigActivity, BaresipService::class.java) + + autoStart = binding.AutoStart + oldAutoStart = Config.variable("auto_start") + autoStart.isChecked = oldAutoStart == "yes" + + val pm = getSystemService(Context.POWER_SERVICE) as PowerManager + val androidSettingsRequest = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { + batteryOptimizations.isChecked = pm.isIgnoringBatteryOptimizations(packageName) == false + } + batteryOptimizations = binding.BatteryOptimizations + batteryOptimizations.isChecked = pm.isIgnoringBatteryOptimizations(packageName) == false + batteryOptimizations.setOnCheckedChangeListener { _, _ -> + try { + androidSettingsRequest.launch(Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS")) + } catch (e: ActivityNotFoundException) { + Log.e(TAG, "ActivityNotFound exception: $e") + } + } + + if (Build.VERSION.SDK_INT >= 29) { + val roleManager = getSystemService(ROLE_SERVICE) as RoleManager + defaultDialer = binding.DefaultPhoneApp + defaultDialer.isChecked = roleManager.isRoleHeld(RoleManager.ROLE_DIALER) + val dialerRoleRequest = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { + Log.d(TAG, "dialerRoleRequest succeeded: ${it.resultCode == Activity.RESULT_OK}") + defaultDialer.isChecked = roleManager.isRoleHeld(RoleManager.ROLE_DIALER) + } + defaultDialer.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + if (!roleManager.isRoleAvailable(RoleManager.ROLE_DIALER)) + Utils.alertView(this, getString(R.string.notice), + getString(R.string.dialer_role_not_available)) + else + if (!roleManager.isRoleHeld(RoleManager.ROLE_DIALER)) + dialerRoleRequest.launch(roleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER)) + } else { + try { + dialerRoleRequest.launch(Intent("android.settings.MANAGE_DEFAULT_APPS_SETTINGS")) + } catch (e: ActivityNotFoundException) { + Log.e(TAG, "ActivityNotFound exception: $e") + + } + } + } + } else { + binding.PhoneApp.visibility = View.GONE + } + + listenAddr = binding.ListenAddress + oldListenAddr = Config.variable("sip_listen") + listenAddr.setText(oldListenAddr) + + netAfSpinner = binding.NetAfSpinner + netAfKeys = arrayListOf("", "ipv4", "ipv6") + val netAfVals = arrayListOf("-", "IPv4", "IPv6") + oldNetAf = Config.variable("net_af").lowercase() + netAf = oldNetAf + val netAfIndex = netAfKeys.indexOf(oldNetAf) + val netAfValue = netAfVals.elementAt(netAfIndex) + netAfKeys.removeAt(netAfIndex) + netAfVals.removeAt(netAfIndex) + netAfKeys.add(0, oldNetAf) + netAfVals.add(0, netAfValue) + val netAfAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, netAfVals) + netAfAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + netAfSpinner.adapter = netAfAdapter + netAfSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + netAf = netAfKeys[position] + } + override fun onNothingSelected(parent: AdapterView<*>) {} + } + + dnsServers = binding.DnsServers + val dynamicDns = Config.variable("dyn_dns") + if (dynamicDns == "yes") { + oldDnsServers = "" + } else { + val servers = Config.variables("dns_server") + var serverList = "" + for (server in servers) + serverList += ", $server" + oldDnsServers = serverList.trimStart(',').trimStart(' ') + } + dnsServers.setText(oldDnsServers) + + certificateFile = binding.CertificateFile + oldCertificateFile = Config.variable("sip_certificate") != "" + certificateFile.isChecked = oldCertificateFile + + val certificateRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + it.data?.data?.also { uri -> + try { + val inputStream = + applicationContext.contentResolver.openInputStream(uri) + as FileInputStream + val certPath = BaresipService.filesPath + "/cert.pem" + File(certPath).copyInputStreamToFile(inputStream) + inputStream.close() + Config.replaceVariable("sip_certificate", certPath) + save = true + restart = true + } catch (e: Error) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.read_cert_error) + ) + certificateFile.isChecked = false + } + } + } else { + certificateFile.isChecked = false + } + } + + certificateFile.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + if (Build.VERSION.SDK_INT < 29) { + certificateFile.isChecked = false + when { + ContextCompat.checkSelfPermission( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_GRANTED -> { + Log.d(TAG, "Read External Storage permission granted") + val downloadsPath = Utils.downloadsPath("cert.pem") + val content = Utils.getFileContents(downloadsPath) + if (content == null) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.read_cert_error) + ) + return@setOnCheckedChangeListener + } + val certPath = BaresipService.filesPath + "/cert.pem" + Utils.putFileContents(certPath, content) + Config.replaceVariable("sip_certificate", certPath) + certificateFile.isChecked = true + save = true + restart = true + } + ActivityCompat.shouldShowRequestPermissionRationale( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) -> { + layout.showSnackBar( + binding.root, + getString(R.string.no_restore), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + } + } + else -> { + requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + } + } + } else { + Utils.selectInputFile(certificateRequest) + } + } else { + Config.removeVariable("sip_certificate") + save = true + restart = true + } + } + + verifyServer = binding.VerifyServer + oldVerifyServer = Config.variable("sip_verify_server") == "yes" + verifyServer.isChecked = oldVerifyServer + + caFile = binding.CAFile + val caCertsFile = File(BaresipService.filesPath + "/ca_certs.crt") + caFile.isChecked = caCertsFile.exists() + + val certificatesRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) + it.data?.data?.also { uri -> + try { + val inputStream = + applicationContext.contentResolver.openInputStream(uri) + as FileInputStream + caCertsFile.copyInputStreamToFile(inputStream) + inputStream.close() + restart = true + } catch (e: Error) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.read_ca_certs_error) + ) + caFile.isChecked = false + } + } + else + caFile.isChecked = false + if (!caFile.isChecked && caCertsFile.exists()) + caCertsFile.delete() + } + + caFile.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + if (Build.VERSION.SDK_INT < 29) { + caFile.isChecked = false + when { + ContextCompat.checkSelfPermission( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_GRANTED -> { + Log.d(TAG, "Read External Storage permission granted") + val downloadsPath = Utils.downloadsPath("ca_certs.crt") + val content = Utils.getFileContents(downloadsPath) + if (content == null) { + Utils.alertView( + this, getString(R.string.error), + getString(R.string.read_ca_certs_error) + ) + return@setOnCheckedChangeListener + } + caCertsFile.writeBytes(content) + caFile.isChecked = true + restart = true + } + ActivityCompat.shouldShowRequestPermissionRationale( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) -> { + layout.showSnackBar( + binding.root, + getString(R.string.no_restore), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + } + } + else -> { + requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + } + } + } else { + Utils.selectInputFile(certificatesRequest) + } + } else { + if (caCertsFile.exists()) + caCertsFile.delete() + restart = true + } + } + + videoFps = binding.VideoFps + videoFps.setText(oldVideoFps) + + val videoSizeSpinner = findViewById(R.id.VideoSizeSpinner) + val sizes = mutableListOf() + sizes.addAll(Config.videoSizes) + sizes.removeIf{it == oldVideoSize} + sizes.add(0, oldVideoSize) + val videoSizeAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + sizes) + videoSizeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + videoSizeSpinner.adapter = videoSizeAdapter + videoSizeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + videoSize = parent.selectedItem.toString() + } + override fun onNothingSelected(parent: AdapterView<*>) { + videoSize = oldVideoSize + } + } + + userAgent = binding.UserAgent + oldUserAgent = Config.variable("user_agent") + userAgent.setText(oldUserAgent) + + darkTheme = binding.DarkTheme + oldDisplayTheme = Preferences(applicationContext).displayTheme + darkTheme.isChecked = oldDisplayTheme == AppCompatDelegate.MODE_NIGHT_YES + + contactsSpinner = binding.contactsSpinner + contactsModeKeys = arrayListOf("baresip", "android", "both") + val contactsModeVals = arrayListOf(getString(R.string.baresip), getString(R.string.android), + getString(R.string.both)) + oldContactsMode = Config.variable("contacts_mode").lowercase() + contactsMode = oldContactsMode + val keyIndex = contactsModeKeys.indexOf(oldContactsMode) + val keyValue = contactsModeVals.elementAt(keyIndex) + contactsModeKeys.removeAt(keyIndex) + contactsModeVals.removeAt(keyIndex) + contactsModeKeys.add(0, oldContactsMode) + contactsModeVals.add(0, keyValue) + val contactsAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, + contactsModeVals) + contactsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + contactsSpinner.adapter = contactsAdapter + contactsSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + contactsMode = contactsModeKeys[position] + if (contactsMode != "baresip" && !Utils.checkPermissions(applicationContext, contactsPermissions)) + with(MaterialAlertDialogBuilder(this@ConfigActivity, R.style.AlertDialogTheme)) { + setTitle(getText(R.string.consent_request)) + setMessage(getText(R.string.contacts_consent)) + setPositiveButton(getText(R.string.accept)) { dialog, _ -> + dialog.dismiss() + requestPermissions(contactsPermissions, CONTACTS_PERMISSION_REQUEST_CODE) + } + setNegativeButton(getText(R.string.deny)) { dialog, _ -> + contactsSpinner.setSelection(contactsModeKeys.indexOf(oldContactsMode)) + dialog.dismiss() + } + val dialog = this.create() + dialog.setCancelable(false) + dialog.setCanceledOnTouchOutside(false) + dialog.show().apply { + findViewById(android.R.id.message) + ?.movementMethod = LinkMovementMethod.getInstance() + } + } + } + override fun onNothingSelected(parent: AdapterView<*>) {} + } + + debug = binding.Debug + oldLogLevel = Config.variable("log_level") + debug.isChecked = oldLogLevel == "0" + + sipTrace = binding.SipTrace + sipTrace.isChecked = BaresipService.sipTrace + + reset = binding.Reset + reset.isChecked = false + + reset.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + with(MaterialAlertDialogBuilder(this@ConfigActivity, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(getString(R.string.reset_config_alert)) + setPositiveButton(getText(R.string.reset)) { dialog, _ -> + Config.reset() + save = false + restart = true + done() + dialog.dismiss() + } + setNeutralButton(getText(R.string.cancel)) { dialog, _ -> + reset.isChecked = false + dialog.dismiss() + } + show() + } + } + } + + bindTitles() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onStart() { + super.onStart() + requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) {} + requestPermissionsLauncher = + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { + if (it.containsValue(false)) { + contactsMode = oldContactsMode + contactsSpinner.setSelection(contactsModeKeys.indexOf(oldContactsMode)) + Snackbar.make(layout, getString(R.string.no_android_contacts), Snackbar.LENGTH_LONG) + .setAction(getString(R.string.ok)) {} + .show() + } + } + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + + super.onCreateOptionsMenu(menu) + + val inflater = menuInflater + inflater.inflate(R.menu.check_icon, menu) + + this.menu = menu + + return true + + } + + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, + grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + when (requestCode) { + CONTACTS_PERMISSION_REQUEST_CODE -> { + if (grantResults.contains(PackageManager.PERMISSION_DENIED)) { + when { + ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.READ_CONTACTS) -> { + layout.showSnackBar( + binding.root, + getString(R.string.no_android_contacts), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionsLauncher.launch(permissions) + } + } + ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.WRITE_CONTACTS) -> { + layout.showSnackBar( + binding.root, + getString(R.string.no_android_contacts), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionsLauncher.launch(permissions) + } + } + else -> { + requestPermissionsLauncher.launch(permissions) + } + } + } + } + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("config") == -1) return true + + when (item.itemId) { + + R.id.checkIcon -> { + + val autoStartString = if (autoStart.isChecked) "yes" else "no" + if (oldAutoStart != autoStartString) { + Config.replaceVariable("auto_start", autoStartString) + save = true + } + + val listenAddr = listenAddr.text.toString().trim() + if (listenAddr != oldListenAddr) { + if ((listenAddr != "") && !Utils.checkIpPort(listenAddr)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_listen_address)}: $listenAddr") + return false + } + Config.replaceVariable("sip_listen", listenAddr) + save = true + restart = true + } + + if (oldNetAf != netAf) { + Config.replaceVariable("net_af", netAf) + save = true + restart = true + } + + var dnsServers = dnsServers.text.toString().lowercase(Locale.ROOT) + .replace(" ", "") + dnsServers = addMissingPorts(dnsServers) + if (dnsServers != oldDnsServers.replace(" ", "")) { + if (!checkDnsServers(dnsServers)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_dns_servers)}: $dnsServers") + return false + } + Config.removeVariable("dns_server") + if (dnsServers.isNotEmpty()) { + for (server in dnsServers.split(",")) + Config.addVariable("dns_server", server) + Config.replaceVariable("dyn_dns", "no") + if (Api.net_use_nameserver(dnsServers) != 0) { + Utils.alertView(this, getString(R.string.error), + "${getString(R.string.failed_to_set_dns_servers)}: $dnsServers") + return false + } + } else { + Config.replaceVariable("dyn_dns", "yes") + Config.updateDnsServers(BaresipService.dnsServers) + } + Api.net_debug() + save = true + } + + if (oldVerifyServer != verifyServer.isChecked) { + Config.replaceVariable("sip_verify_server", + if (verifyServer.isChecked) "yes" else "no") + Api.config_verify_server_set(verifyServer.isChecked) + save = true + } + + if (oldVideoSize != videoSize) { + Config.replaceVariable("video_size", videoSize) + Api.config_video_frame_size_set(videoSize.substringBefore("x").toInt(), + videoSize.substringAfter("x").toInt()) + save = true + } + + val newFps = videoFps.text.toString().trim().toInt() + if (oldVideoFps.toInt() != newFps) { + if (newFps < 10 || newFps > 60) { // 30 -> 60 by ritoseo + Utils.alertView( + this, getString(R.string.notice), + String.format(getString(R.string.invalid_fps), newFps) + ) + return false + } + Config.replaceVariable("video_fps", newFps.toString()) + Api.config_video_fps_set(newFps) + save = true + } + + val userAgent = userAgent.text.toString().trim() + if (userAgent != oldUserAgent) { + if ((userAgent != "") && !Utils.checkServerVal(userAgent)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_user_agent)}: $userAgent") + return false + } + if (userAgent != "") + Config.replaceVariable("user_agent", userAgent) + else + Config.removeVariable("user_agent") + save = true + restart = true + } + + val newDisplayTheme = if (darkTheme.isChecked) + AppCompatDelegate.MODE_NIGHT_YES + else + AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + if (oldDisplayTheme != newDisplayTheme) { + Preferences(applicationContext).displayTheme = newDisplayTheme + Config.replaceVariable("dark_theme", + if (darkTheme.isChecked) "yes" else "no") + save = true + } + + if (oldContactsMode != contactsMode) { + Config.replaceVariable("contacts_mode", contactsMode) + BaresipService.contactsMode = contactsMode + when (contactsMode) { + "baresip" -> { + BaresipService.androidContacts.clear() + Contact.restoreBaresipContacts() + baresipService.action = "Stop Content Observer" + } + "android" -> { + BaresipService.baresipContacts.clear() + Contact.loadAndroidContacts(this) + baresipService.action = "Start Content Observer" + } + "both" -> { + Contact.restoreBaresipContacts() + Contact.loadAndroidContacts(this) + baresipService.action = "Start Content Observer" + } + } + Contact.contactsUpdate() + startService(baresipService) + save = true + } + + val logLevelString = if (debug.isChecked) "0" else "2" + if (oldLogLevel != logLevelString) { + Config.replaceVariable("log_level", logLevelString) + Api.log_level_set(logLevelString.toInt()) + Log.logLevelSet(logLevelString.toInt()) + save = true + } + + BaresipService.sipTrace = sipTrace.isChecked + Api.uag_enable_sip_trace(sipTrace.isChecked) + + done() + } + + android.R.id.home -> { + goBack() + } + } + + return true + + } + + private fun done() { + + if (save) Config.save() + BaresipService.activities.remove("config") + val intent = Intent(this, MainActivity::class.java) + if (restart || audioRestart) + intent.putExtra("restart", true) + setResult(RESULT_OK, intent) + finish() + + } + + private fun goBack() { + + BaresipService.activities.remove("config") + if (audioRestart) { + val intent = Intent(this, MainActivity::class.java) + intent.putExtra("restart", true) + setResult(RESULT_OK, intent) + } else { + setResult(Activity.RESULT_CANCELED, Intent(this, MainActivity::class.java)) + } + finish() + + } + + private fun bindTitles() { + val audioRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + audioRestart = it.resultCode == Activity.RESULT_OK + } + binding.AutoStartTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.start_automatically), + getString(R.string.start_automatically_help)) + } + binding.ListenAddressTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.listen_address), + getString(R.string.listen_address_help)) + } + binding.NetAfTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.address_family), + getString(R.string.address_family_help)) + } + binding.DnsServersTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.dns_servers), + getString(R.string.dns_servers_help)) + } + binding.CertificateFileTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.tls_certificate_file), + getString(R.string.tls_certificate_file_help)) + } + binding.VerifyServerTitle .setOnClickListener { + Utils.alertView(this, getString(R.string.verify_server), + getString(R.string.verify_server_help)) + } + binding.CAFileTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.tls_ca_file), + getString(R.string.tls_ca_file_help)) + } + binding.UserAgentTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.user_agent), + getString(R.string.user_agent_help)) + } + binding.AudioSettingsTitle.setOnClickListener { + audioRequest.launch(Intent(this, AudioActivity::class.java)) + } + binding.VideoSizeTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.video_size), + getString(R.string.video_size_help)) + } + binding.DarkThemeTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.dark_theme), + getString(R.string.dark_theme_help)) + } + binding.ContactsTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.contacts), + getString(R.string.contacts_help)) + } + binding.BatteryOptimizationsTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.battery_optimizations), + getString(R.string.battery_optimizations_help)) + } + binding.DefaultPhoneAppTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.default_phone_app), + getString(R.string.default_phone_app_help)) + } + binding.DebugTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.debug), getString(R.string.debug_help)) + } + binding.SipTraceTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.sip_trace), + getString(R.string.sip_trace_help)) + } + binding.ResetTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.reset_config), + getString(R.string.reset_config_help)) + } + } + + private fun checkDnsServers(dnsServers: String): Boolean { + if (dnsServers.isEmpty()) return true + for (server in dnsServers.split(",")) + if (!Utils.checkIpPort(server.trim())) return false + return true + } + + private fun addMissingPorts(addressList: String): String { + if (addressList == "") return "" + var result = "" + for (addr in addressList.split(",")) + result = if (Utils.checkIpPort(addr)) { + "$result,$addr" + } else { + if (Utils.checkIpV4(addr)) + "$result,$addr:53" + else + "$result,[$addr]:53" + } + return result.substring(1) + } + +} + diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Constants.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Constants.kt new file mode 100644 index 0000000..d3ec9a3 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Constants.kt @@ -0,0 +1,39 @@ +package com.tutpro.baresip.plus + +const val TAG = "RitoSip" + +const val DEFAULT_CHANNEL_ID = "com.tutpro.baresip.plus.default" +const val MEDIUM_CHANNEL_ID = "com.tutpro.baresip.plus.medium" +const val HIGH_CHANNEL_ID = "com.tutpro.baresip.plus.high" + +const val CONTACTS_PERMISSION_REQUEST_CODE = 1 + +const val STATUS_NOTIFICATION_ID = 101 +const val CALL_NOTIFICATION_ID = 102 +const val CALL_MISSED_NOTIFICATION_ID = 103 +const val TRANSFER_NOTIFICATION_ID = 104 +const val MESSAGE_NOTIFICATION_ID = 105 + +const val STATUS_REQ_CODE = 1 +const val CALL_REQ_CODE = 2 +const val ANSWER_REQ_CODE = 3 +const val REJECT_REQ_CODE = 4 +const val TRANSFER_REQ_CODE = 5 +const val ACCEPT_REQ_CODE = 6 +const val DENY_REQ_CODE = 7 +const val MESSAGE_REQ_CODE = 8 +const val REPLY_REQ_CODE = 9 +const val SAVE_REQ_CODE = 10 +const val DELETE_REQ_CODE = 11 + +const val REGISTRATION_INTERVAL = 120 +const val NO_AUTH_PASS = "t%Qa?~?J8,~6" + +const val MESSAGE_DOWN = 2131165304 +const val MESSAGE_UP = 2131165306 +const val MESSAGE_UP_FAIL = 2131165307 +const val MESSAGE_UP_WAIT = 2131165308 + + + + diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Contact.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Contact.kt new file mode 100644 index 0000000..96be567 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Contact.kt @@ -0,0 +1,266 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.database.Cursor +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.net.Uri +import android.provider.ContactsContract +import androidx.core.net.toUri +import java.io.File +import java.util.ArrayList + +sealed class Contact { + + class BaresipContact(var name: String, var uri: String, var color: Int, val id: Long, + var favorite: Boolean): Contact() { + var avatarImage: Bitmap? = null + } + + class AndroidContact(var name: String, var color: Int, var thumbnailUri: Uri?, + var favorite: Boolean): Contact() { + val uris = ArrayList() + } + + companion object { + + const val CONTACTS_SIZE = 256 + + fun contacts(): ArrayList { + return BaresipService.contacts + } + + fun contactNames(): ArrayList { + return BaresipService.contactNames + } + + // Return contact name of uri or uri itself if contact with uri is not found + fun contactName(uri: String): String { + var contact = findContact(uri) + if (contact == null) { + val userPart = Utils.uriUserPart(uri) + if (Utils.isTelNumber(userPart)) + contact = findContact("tel:$userPart") + } + if (contact != null) { + return when (contact) { + is BaresipContact -> + contact.name + is AndroidContact -> + contact.name + } + } + return uri + } + + // Return URIs of contact name + fun contactUris(name: String): ArrayList { + val uris = ArrayList() + for (c in contacts()) + when (c) { + is BaresipContact -> { + if (c.name.equals(name, ignoreCase = true)) { + uris.add(c.uri.removePrefix("<") + .replaceAfter(">", "") + .replace(">", "")) + return uris + } + } + is AndroidContact -> { + if (c.name == name) { + for (u in c.uris) + uris.add(u) + return uris + } + } + } + return uris + } + + fun findContact(uri: String): Contact? { + for (c in contacts()) + when (c) { + is BaresipContact -> { + if (Utils.uriMatch(c.uri, uri)) + return c + } + is AndroidContact -> { + val cleanUri = uri.filterNot{setOf('-', ' ', '(', ')').contains(it)} + for (u in c.uris) + if (Utils.uriMatch(u.filterNot{setOf('-', ' ', '(', ')').contains(it)}, + cleanUri)) + return c + } + } + return null + } + + fun nameExists(name: String, ignoreCase: Boolean): Boolean { + for (c in BaresipService.contacts) + when (c) { + is BaresipContact -> + if (c.name.equals(name, ignoreCase = ignoreCase)) + return true + is AndroidContact -> + if (c.name.equals(name, ignoreCase = ignoreCase)) + return true + } + return false + } + + fun saveBaresipContacts() { + var contents = "" + for (c in BaresipService.baresipContacts) + contents += "\"${c.name}\" <${c.uri}>;id=${c.id};color=${c.color}" + + ";favorite=${if (c.favorite) "yes" else "no"}\n" + Utils.putFileContents(BaresipService.filesPath + "/contacts", + contents.toByteArray()) + } + + fun loadAndroidContacts(ctx: Context) { + // If phone type is needed, add DATA2 to projection. Then phone type can be get from + // cursor using getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE + val projection = arrayOf(ContactsContract.Data.CONTACT_ID, ContactsContract.Data.DISPLAY_NAME, + ContactsContract.Data.MIMETYPE, ContactsContract.Data.DATA1, + /* ContactsContract.Data.DATA2 ,*/ ContactsContract.Data.PHOTO_THUMBNAIL_URI, + ContactsContract.Contacts.STARRED) + val selection = + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE + "' OR " + + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'" + val cur: Cursor? = ctx.contentResolver.query(ContactsContract.Data.CONTENT_URI, projection, + selection, null, null) + BaresipService.androidContacts.clear() + val contacts = HashMap() + while (cur != null && cur.moveToNext()) { + val id = cur.getLong(0) + val name = cur.getString(1) ?: "" + val mime = cur.getString(2) + val data = cur.getString(3) + val thumb = cur.getString(4)?.toUri() + val starred = cur.getInt(5) + val contact = if (contacts.containsKey(id)) + contacts[id]!! + else + AndroidContact(name, Utils.randomColor(), thumb, starred == 1) + if (contact.name == "" && name != "") + contact.name = name + if (contact.thumbnailUri == null && thumb != null) + contact.thumbnailUri = thumb + if (mime == ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) { + contact.uris.add("tel:${data.filterNot { setOf('-', ' ', '(', ')').contains(it) }}") + // contact.types.add(typeToString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE))) + } + else if (mime == ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE) + contact.uris.add("sip:$data") + else + continue + if (!contacts.containsKey(id)) + contacts[id] = contact + } + cur?.close() + for ((_, value) in contacts) + if (value.name != "" && value.uris.isNotEmpty()) + BaresipService.androidContacts.add(value) + } + + @Suppress("unused") + private fun typeToString(type: Int): String { + return when(type) { + ContactsContract.CommonDataKinds.Phone.TYPE_HOME -> "Home" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE -> "Mobile" + ContactsContract.CommonDataKinds.Phone.TYPE_WORK -> "Work" + else -> "Unknown" + } + } + + fun restoreBaresipContacts(): Boolean { + val content = Utils.getFileContents(BaresipService.filesPath + "/contacts") + ?: return false + val contacts = String(content) + var contactNo = 0 + val baseId = System.currentTimeMillis() + BaresipService.baresipContacts.clear() + contacts.lines().forEach { + val parts = it.split("\"") + if (parts.size == 3) { + contactNo++ + val name = parts[1] + val uriParams = parts[2].trim() + val uri = uriParams.substringAfter("<").substringBefore(">") + val params = uriParams.substringAfter(">;") + val colorValue = Utils.paramValue(params, "color" ) + val color: Int = if (colorValue != "") + colorValue.toInt() + else + Utils.randomColor() + val idValue = Utils.paramValue(params, "id" ) + val id: Long = if (idValue != "") + idValue.toLong() + else + baseId + contactNo + val favorite = Utils.paramValue(params, "favorite" ) == "yes" + Log.d(TAG, "Restoring contact $name, $uri, $color, $id") + val contact = BaresipContact(name, uri, color, id, favorite) + val avatarFilePath = BaresipService.filesPath + "/$id.png" + if (File(avatarFilePath).exists()) { + try { + contact.avatarImage = BitmapFactory.decodeFile(avatarFilePath) + Log.d(TAG, "Set avatarImage") + if (contact.avatarImage == null) + Log.d(TAG, "Contact $id avatarImage is null") + } catch (e: Exception) { + Log.e(TAG, "Could not read avatar image from '$id.png") + } + } + BaresipService.baresipContacts.add(contact) + } + } + return true + } + + fun contactsUpdate() { + BaresipService.contacts.clear() + if (BaresipService.contactsMode != "android") + BaresipService.contacts.addAll(BaresipService.baresipContacts) + if (BaresipService.contactsMode != "baresip") + addAndroidContacts() + sortContacts() + generateContactNames() + BaresipService.contactUpdate.postValue(System.nanoTime()) + } + + fun addBaresipContact(contact: BaresipContact) { + BaresipService.baresipContacts.add(contact) + } + + fun removeBaresipContact(contact: BaresipContact) { + BaresipService.baresipContacts.remove(contact) + saveBaresipContacts() + } + + private fun generateContactNames () { + BaresipService.contactNames.clear() + for (c in BaresipService.contacts) + when (c) { + is BaresipContact -> + BaresipService.contactNames.add(c.name) + is AndroidContact -> + BaresipService.contactNames.add(c.name) + } + } + + private fun addAndroidContacts() { + for (c in BaresipService.androidContacts) + if (!nameExists(c.name, true)) + BaresipService.contacts.add(c) + } + + private fun sortContacts() { + BaresipService.contacts.sortBy{ when (it) { + is BaresipContact -> if (it.favorite) "0" + it.name else "1" + it.name + is AndroidContact -> if (it.favorite) "0" + it.name else "1" + it.name + }} + } + + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactActivity.kt new file mode 100644 index 0000000..277f740 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactActivity.kt @@ -0,0 +1,525 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.ContentProviderOperation +import android.content.ContentValues +import android.content.Context +import android.content.Intent +import android.database.Cursor +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Matrix +import android.graphics.drawable.BitmapDrawable +import android.os.Build +import android.os.Bundle +import android.provider.ContactsContract +import android.provider.ContactsContract.CommonDataKinds +import android.provider.ContactsContract.Contacts.Data +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.cardview.widget.CardView +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import androidx.exifinterface.media.ExifInterface +import com.tutpro.baresip.plus.databinding.ActivityContactBinding +import java.io.ByteArrayOutputStream +import java.io.File + +class ContactActivity : AppCompatActivity() { + + private lateinit var binding: ActivityContactBinding + private lateinit var layout: LinearLayout + private lateinit var textAvatarView: TextView + private lateinit var cardAvatarView: CardView + private lateinit var cardImageAvatarView: ImageView + private lateinit var nameView: EditText + private lateinit var uriView: EditText + private lateinit var favoriteCheck: CheckBox + private lateinit var androidCheck: CheckBox + private lateinit var menu: Menu + + private var newContact = false + private var newAvatar = "" + private var uOrI = "" + + private var index = 0 + private var color = 0 + private var id: Long = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityContactBinding.inflate(layoutInflater) + setContentView(binding.root) + layout = binding.ContactView + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.ContactView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + textAvatarView = binding.TextAvatar + cardAvatarView = binding.CardAvatar + cardImageAvatarView = binding.ImageAvatar + nameView = binding.Name + uriView = binding.Uri + favoriteCheck = binding.Favorite + androidCheck = binding.Android + + newContact = intent.getBooleanExtra("new", false) + + if (newContact) { + if (BaresipService.contactsMode == "baresip") { + binding.AndroidTitle.visibility = View.GONE + androidCheck.visibility = View.GONE + } + title = getString(R.string.new_contact) + color = Utils.randomColor() + id = System.currentTimeMillis() + showTextAvatar("?", color) + nameView.setText("") + nameView.hint = getString(R.string.contact_name) + nameView.setSelection(nameView.text.length) + val uri = intent.getStringExtra("uri")!! + if (uri == "") + uriView.setText("") + else + uriView.setText(uri) + uOrI = uri + favoriteCheck.isChecked = false + if ((BaresipService.contactsMode == "android")) { + androidCheck.isChecked = true + androidCheck.isClickable = false + } else { + androidCheck.isChecked = false + } + } else { + binding.AndroidTitle.visibility = View.GONE + androidCheck.visibility = View.GONE + index = intent.getIntExtra("index", 0) + val contact = Contact.contacts()[index] as Contact.BaresipContact + val name = contact.name + color = contact.color + id = contact.id + val avatarImage = contact.avatarImage + if (avatarImage != null) + showImageAvatar(avatarImage) + else + showTextAvatar(name, color) + title = name + nameView.setText(name) + uriView.setText(contact.uri) + favoriteCheck.isChecked = contact.favorite + uOrI = index.toString() + } + + val avatarRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) { + it.data?.data?.also { uri -> + try { + val inputStream = baseContext.contentResolver.openInputStream(uri) + val avatarBitmap = BitmapFactory.decodeStream(inputStream) + inputStream?.close() + val scaledBitmap = Bitmap.createScaledBitmap(avatarBitmap, 192, 192, true) + val exif = ExifInterface(baseContext.contentResolver.openInputStream(uri)!!) + val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, + ExifInterface.ORIENTATION_NORMAL) + val rotatedBitmap = rotateBitmap(scaledBitmap, orientation) + showImageAvatar(rotatedBitmap) + if (Utils.saveBitmap(rotatedBitmap, File(BaresipService.filesPath, "tmp.png"))) + newAvatar = "image" + } catch (e: Exception) { + Log.e(TAG, "Could not read avatar image: $e") + } + } + } + } + + textAvatarView.setOnClickListener { + + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "image/*" + } + avatarRequest.launch(intent) + + } + + textAvatarView.setOnLongClickListener { + + color = Utils.randomColor() + showTextAvatar(textAvatarView.text.toString(), color) + newAvatar = "text" + true + + } + + cardAvatarView.setOnClickListener { + + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "image/*" + } + avatarRequest.launch(intent) + + } + + cardAvatarView.setOnLongClickListener { + + color = Utils.randomColor() + showTextAvatar(nameView.text.toString(), color) + newAvatar = "text" + true + + } + + binding.AndroidTitle.setOnClickListener { + Utils.alertView(this, getString(R.string.android), + getString(R.string.android_contact_help)) + } + + // Log.d(TAG, "Android sip contacts ${logAndroidContacts(this, "sip")}") + // Log.d(TAG, "Android tel contacts ${logAndroidContacts(this, "tel")}") + + Utils.addActivity("contact,$newContact,$uOrI") + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onCreateOptionsMenu(optionsMenu: Menu): Boolean { + + super.onCreateOptionsMenu(optionsMenu) + + val inflater = menuInflater + inflater.inflate(R.menu.check_icon, optionsMenu) + menu = optionsMenu + return true + + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + if (BaresipService.activities.indexOf("contact,$newContact,$uOrI") == -1) return true + + when (item.itemId) { + + R.id.checkIcon -> { + + var newName = nameView.text.toString().trim() + var newUri = uriView.text.toString().filterNot{setOf('-', ' ', '(', ')').contains(it)} + + if (newName == "") newName = newUri + + if (!Utils.checkName(newName)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_contact), newName)) + return false + } + + val alert: Boolean = if (newContact) + Contact.nameExists(newName, true) + else { + val c = Contact.contacts()[index] as Contact.BaresipContact + (c.name != newName) && Contact.nameExists(newName, false) + } + if (alert) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.contact_already_exists), newName)) + return false + } + + if (!newUri.startsWith("sip:") && !newUri.startsWith("tel:")) + newUri = if (Utils.isTelNumber(newUri)) + "tel:$newUri" + else + "sip:$newUri" + if (!Utils.checkUri(newUri)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_or_tel_uri), newUri)) + return false + } + + val contact: Contact.BaresipContact + + if (newContact) { + if (Contact.contacts().size >= Contact.CONTACTS_SIZE) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.contacts_exceeded), + Contact.CONTACTS_SIZE)) + BaresipService.activities.removeAt(0) + return true + } else { + contact = Contact.BaresipContact(newName, newUri, color, id, favoriteCheck.isChecked) + } + } else { + contact = Contact.contacts()[index] as Contact.BaresipContact + contact.uri = newUri + contact.name = newName + contact.color = color + contact.favorite = favoriteCheck.isChecked + } + + when (newAvatar) { + "text" -> { + if (contact.avatarImage != null) { + contact.avatarImage = null + Utils.deleteFile(File(BaresipService.filesPath, "${contact.id}.png")) + } + } + "image" -> { + contact.avatarImage = (cardImageAvatarView.drawable as BitmapDrawable).bitmap + Utils.deleteFile(File(BaresipService.filesPath, "${contact.id}.png")) + File(BaresipService.filesPath, "tmp.png") + .renameTo(File(BaresipService.filesPath, "${contact.id}.png")) + } + } + + if (androidCheck.isChecked) { + addOrUpdateAndroidContact(this, contact) + } else { + if (newContact) + Contact.addBaresipContact(contact) + Contact.saveBaresipContacts() + Contact.contactsUpdate() + } + + BaresipService.activities.remove("contact,$newContact,$uOrI") + + val i = Intent(this, MainActivity::class.java) + if (androidCheck.isChecked && contact.favorite) + i.putExtra("name", newName) + setResult(Activity.RESULT_OK, i) + finish() + } + + android.R.id.home -> { + goBack() + } + + } + + return true + + } + + private fun goBack() { + BaresipService.activities.remove("contact,$newContact,$uOrI") + setResult(Activity.RESULT_CANCELED, Intent(this, MainActivity::class.java)) + finish() + } + + private fun showTextAvatar(name: String, color: Int) { + textAvatarView.visibility = View.VISIBLE + cardAvatarView.visibility = View.GONE + textAvatarView.background.setTint(color) + textAvatarView.text = "${name[0]}" + } + + private fun showImageAvatar(image: Bitmap) { + textAvatarView.visibility = View.GONE + cardAvatarView.visibility = View.VISIBLE + cardImageAvatarView.setImageBitmap(image) + } + + private fun rotateBitmap(bitmap: Bitmap, orientation: Int): Bitmap { + val matrix = Matrix() + when (orientation) { + ExifInterface.ORIENTATION_NORMAL -> return bitmap + ExifInterface.ORIENTATION_FLIP_HORIZONTAL -> matrix.setScale(-1f, 1f) + ExifInterface.ORIENTATION_ROTATE_180 -> matrix.setRotate(180f) + ExifInterface.ORIENTATION_FLIP_VERTICAL -> { + matrix.setRotate(180f) + matrix.postScale(-1f, 1f) + } + ExifInterface.ORIENTATION_TRANSPOSE -> { + matrix.setRotate(90f) + matrix.postScale(-1f, 1f) + } + ExifInterface.ORIENTATION_ROTATE_90 -> matrix.setRotate(90f) + ExifInterface.ORIENTATION_TRANSVERSE -> { + matrix.setRotate(-90f) + matrix.postScale(-1f, 1f) + } + ExifInterface.ORIENTATION_ROTATE_270 -> matrix.setRotate(-90f) + else -> return bitmap + } + val rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, + bitmap.width, bitmap.height, matrix, true) + bitmap.recycle() + return rotatedBitmap + } + + private fun addOrUpdateAndroidContact(ctx: Context, contact: Contact.BaresipContact) { + val projection = arrayOf(ContactsContract.Data.RAW_CONTACT_ID) + val selection = ContactsContract.Data.MIMETYPE + "='" + + CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "' AND " + + CommonDataKinds.StructuredName.DISPLAY_NAME + "='" + contact.name + "'" + val c: Cursor? = ctx.contentResolver.query(ContactsContract.Data.CONTENT_URI, projection, + selection, null, null) + if (c != null && c.moveToFirst()) { + updateAndroidContact(c.getLong(0), contact) + } else { + addAndroidContact(ctx, contact) + } + c?.close() + } + + private fun addAndroidContact(ctx: Context, contact: Contact.BaresipContact): Boolean { + val ops = ArrayList() + ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) + .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) + .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build()) + ops.add(ContentProviderOperation + .newInsert(ContactsContract.Data.CONTENT_URI) + .withValueBackReference(Data.RAW_CONTACT_ID, 0) + .withValue(Data.MIMETYPE, CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) + .withValue(CommonDataKinds.StructuredName.DISPLAY_NAME, contact.name) + .build()) + val mimeType = if (contact.uri.startsWith("sip:")) + CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE + else + CommonDataKinds.Phone.CONTENT_ITEM_TYPE + ops.add(ContentProviderOperation + .newInsert(ContactsContract.Data.CONTENT_URI) + .withValueBackReference(Data.RAW_CONTACT_ID, 0) + .withValue(Data.MIMETYPE, mimeType) + .withValue(Data.DATA1, contact.uri.substringAfter(":")) + .build()) + + if (contact.avatarImage != null) { + val photoData: ByteArray? = bitmapToPNGByteArray(contact.avatarImage!!) + if (photoData != null) { + ops.add(ContentProviderOperation + .newInsert(ContactsContract.Data.CONTENT_URI) + .withValueBackReference(Data.RAW_CONTACT_ID, 0) + .withValue(Data.MIMETYPE, CommonDataKinds.Photo.CONTENT_ITEM_TYPE) + .withValue(CommonDataKinds.Photo.PHOTO, photoData) + .build()) + } + } + try { + ctx.contentResolver.applyBatch(ContactsContract.AUTHORITY, ops) + } catch (e: Exception) { + Log.e(TAG, "Adding of contact ${contact.name} failed") + return false + } + return true + } + + private fun updateAndroidContact(rawContactId: Long, contact: Contact.BaresipContact) { + if (updateAndroidUri(rawContactId, contact.uri) == 0) + addAndroidUri(rawContactId, contact.uri) + if (updateAndroidPhoto(rawContactId, contact.avatarImage) == 0) + if (contact.avatarImage != null) + addAndroidPhoto(rawContactId, contact.avatarImage!!) + } + + private fun addAndroidUri(rawContactId: Long, uri: String) { + val mimeType = if (uri.startsWith("sip:")) + CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE + else + CommonDataKinds.Phone.CONTENT_ITEM_TYPE + val ops = ArrayList() + ops.add(ContentProviderOperation + .newInsert(ContactsContract.Data.CONTENT_URI) + .withValue(Data.RAW_CONTACT_ID, rawContactId) + .withValue(Data.MIMETYPE, mimeType) + .withValue(Data.DATA1, uri.substringAfter(":")) + .build()) + try { + contentResolver.applyBatch(ContactsContract.AUTHORITY, ops) + } catch (e: Exception) { + Log.e(TAG, "Adding of SIP URI $uri failed") + } + } + + private fun updateAndroidUri(rawContactId: Long, uri: String): Int { + val mimeType = if (uri.startsWith("sip:")) + CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE + else + CommonDataKinds.Phone.CONTENT_ITEM_TYPE + val contentValues = ContentValues() + contentValues.put(ContactsContract.Data.DATA1, uri) + val where = "${ContactsContract.Data.RAW_CONTACT_ID}=$rawContactId and " + + "${ContactsContract.Data.MIMETYPE}='$mimeType'" + return try { + contentResolver.update(ContactsContract.Data.CONTENT_URI, contentValues, where, null) + } catch (e: Exception) { + Log.e(TAG, "Update of Android URI $uri failed") + 0 + } + } + + private fun addAndroidPhoto(rawContactId: Long, photoBits: Bitmap) { + val photoBytes = bitmapToPNGByteArray(photoBits) + if (photoBytes != null) { + val ops = ArrayList() + ops.add(ContentProviderOperation + .newInsert(ContactsContract.Data.CONTENT_URI) + .withValue(Data.RAW_CONTACT_ID, rawContactId) + .withValue(Data.MIMETYPE, CommonDataKinds.Photo.CONTENT_ITEM_TYPE) + .withValue(CommonDataKinds.Photo.PHOTO, photoBytes) + .build()) + try { + contentResolver.applyBatch(ContactsContract.AUTHORITY, ops) + } catch (e: Exception) { + Log.e(TAG, "Adding of Android photo failed") + } + } + } + + private fun updateAndroidPhoto(rawContactId: Long, photoBits: Bitmap?): Int { + val photoBytes = if (photoBits == null) + null + else + bitmapToPNGByteArray(photoBits) + val contentValues = ContentValues() + contentValues.put(CommonDataKinds.Photo.PHOTO, photoBytes) + val where = "${ContactsContract.Data.RAW_CONTACT_ID}=$rawContactId and " + + "${ContactsContract.Data.MIMETYPE}='${CommonDataKinds.Photo.CONTENT_ITEM_TYPE}'" + return try { + contentResolver.update(ContactsContract.Data.CONTENT_URI, contentValues, where, null) + } catch (e: Exception) { + Log.e(TAG, "updateAndroidPhoto failed") + 0 + } + } + + private fun bitmapToPNGByteArray(bitmap: Bitmap): ByteArray? { + val size = bitmap.width * bitmap.height * 4 + val out = ByteArrayOutputStream(size) + return try { + bitmap.compress(Bitmap.CompressFormat.PNG, 100, out) + out.flush() + out.close() + out.toByteArray() + } catch (e: Exception) { + Log.w(TAG, "Unable to serialize photo: $e") + null + } + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ContactListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactListAdapter.kt new file mode 100644 index 0000000..a344059 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactListAdapter.kt @@ -0,0 +1,218 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.Context +import android.content.DialogInterface +import android.content.Intent +import android.graphics.Typeface +import android.os.Bundle +import android.os.SystemClock +import android.provider.ContactsContract +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageButton +import android.widget.ImageView +import android.widget.TextView +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import java.io.File +import java.io.IOException + +class ContactListAdapter(private val ctx: Context, private val rows: ArrayList, + private val aor: String) : + ArrayAdapter(ctx, R.layout.contact_row, rows) { + + private val layoutInflater = LayoutInflater.from(context) + private var lastClick: Long = 0 + + private class ViewHolder(view: View?) { + val textAvatarView: TextView = view?.findViewById(R.id.TextAvatar)!! + val imageAvatarView: ImageView = view?.findViewById(R.id.ImageAvatar)!! + val nameView: TextView = view?.findViewById(R.id.contactName)!! + val actionView: ImageButton = view?.findViewById(R.id.edit)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.contact_row, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val contact = rows[position] + + if (contact is Contact.BaresipContact) { + + val avatarImage = contact.avatarImage + if (avatarImage != null) { + viewHolder.imageAvatarView.setImageBitmap(avatarImage) + } else { + viewHolder.textAvatarView.background.setTint(contact.color) + if (contact.name.isNotEmpty()) + viewHolder.textAvatarView.text = "${contact.name[0]}" + else + viewHolder.textAvatarView.text = "" + viewHolder.imageAvatarView.setImageBitmap(Utils.bitmapFromView(viewHolder.textAvatarView)) + } + + viewHolder.nameView.text = contact.name + viewHolder.nameView.textSize = 20f + if (contact.favorite) + viewHolder.nameView.setTypeface(null, Typeface.ITALIC) + else + viewHolder.nameView.setTypeface(null, Typeface.NORMAL) + viewHolder.nameView.setPadding(6, 6, 0, 6) + + if (aor != "") { + viewHolder.nameView.setOnClickListener { + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE, DialogInterface.BUTTON_NEGATIVE -> { + val i = Intent(ctx, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + if (which == DialogInterface.BUTTON_NEGATIVE) + i.putExtra("action", "call") + else + i.putExtra("action", "message") + val ua = UserAgent.ofAor(aor) + if (ua == null) { + Log.w(TAG, "onClickListener did not find AoR $aor") + } else { + BaresipService.activities.clear() + i.putExtra("uap", ua.uap) + i.putExtra("peer", contact.uri) + (ctx as Activity).startActivity(i) + } + } + DialogInterface.BUTTON_NEUTRAL -> { + } + } + } + if (SystemClock.elapsedRealtime() - lastClick > 1000) { + lastClick = SystemClock.elapsedRealtime() + with(MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(String.format(ctx.getString(R.string.contact_action_question), + contact.name)) + setNeutralButton(ctx.getText(R.string.cancel), dialogClickListener) + setNegativeButton(ctx.getText(R.string.call), dialogClickListener) + setPositiveButton(ctx.getText(R.string.send_message), dialogClickListener) + show() + } + } + } + } + + viewHolder.actionView.visibility = View.VISIBLE + viewHolder.actionView.setOnClickListener { + if (SystemClock.elapsedRealtime() - lastClick > 1000) { + lastClick = SystemClock.elapsedRealtime() + val i = Intent(ctx, ContactActivity::class.java) + val b = Bundle() + b.putBoolean("new", false) + b.putInt("index", position) + i.putExtras(b) + ctx.startActivity(i, null) + } + } + + } + + if (contact is Contact.AndroidContact) { + + val thumbNailUri = contact.thumbnailUri + if (thumbNailUri != null) { + viewHolder.imageAvatarView.setImageURI(thumbNailUri) + } else { + viewHolder.textAvatarView.background.setTint(contact.color) + if (contact.name.isNotEmpty()) + viewHolder.textAvatarView.text = "${contact.name[0]}" + else + viewHolder.textAvatarView.text = "" + viewHolder.imageAvatarView.setImageBitmap(Utils.bitmapFromView(viewHolder.textAvatarView)) + } + + viewHolder.nameView.text = contact.name + viewHolder.nameView.textSize = 20f + if (contact.favorite) + viewHolder.nameView.setTypeface(null, Typeface.ITALIC) + else + viewHolder.nameView.setTypeface(null, Typeface.NORMAL) + viewHolder.nameView.setPadding(6, 6, 0, 6) + + viewHolder.nameView.setOnClickListener { + if (SystemClock.elapsedRealtime() - lastClick > 1000) { + lastClick = SystemClock.elapsedRealtime() + val i = Intent(ctx, AndroidContactActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putInt("index", position) + i.putExtras(b) + ctx.startActivity(i, null) + } + } + + viewHolder.actionView.visibility = View.GONE + } + + viewHolder.nameView.setOnLongClickListener { + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE -> { + when (contact) { + is Contact.BaresipContact -> { + val id = contact.id + val avatarFile = File(BaresipService.filesPath, "$id.png") + if (avatarFile.exists()) { + try { + avatarFile.delete() + } catch (e: IOException) { + Log.e(TAG, "Could not delete file '$id.png") + } + } + Contact.removeBaresipContact(contact) + Contact.contactsUpdate() + this.notifyDataSetChanged() + } + is Contact.AndroidContact -> { + deleteAndroidContact(ctx, contact.name) + } + } + } + DialogInterface.BUTTON_NEGATIVE -> { + } + } + } + with(MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme)) { + setTitle(R.string.confirmation) + setMessage(String.format(ctx.getString(R.string.contact_delete_question), + when (contact) { + is Contact.BaresipContact -> contact.name + is Contact.AndroidContact -> contact.name + })) + setNeutralButton(ctx.getText(R.string.cancel), dialogClickListener) + setPositiveButton(ctx.getText(R.string.delete), dialogClickListener) + show() + } + true + } + + return rowView + } + + private fun deleteAndroidContact(ctx: Context, name: String): Int { + return ctx.contentResolver.delete(ContactsContract.RawContacts.CONTENT_URI, + ContactsContract.Contacts.DISPLAY_NAME + "='" + name + "'", + null) + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactsActivity.kt new file mode 100644 index 0000000..0cca7a1 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ContactsActivity.kt @@ -0,0 +1,136 @@ +package com.tutpro.baresip.plus + +import android.app.Activity +import android.content.* +import android.os.Build +import android.os.Bundle +import android.os.SystemClock +import android.provider.ContactsContract +import androidx.appcompat.app.AppCompatActivity +import android.view.MenuItem +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.graphics.Insets +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updatePadding +import androidx.lifecycle.Observer +import com.tutpro.baresip.plus.databinding.ActivityContactsBinding + +class ContactsActivity : AppCompatActivity() { + + private lateinit var binding: ActivityContactsBinding + private lateinit var clAdapter: ContactListAdapter + private lateinit var aor: String + private var newAndroidName: String? = null + private var lastClick: Long = 0 + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + goBack() + } + } + + public override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + binding = ActivityContactsBinding.inflate(layoutInflater) + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + if (Build.VERSION.SDK_INT >= 35) + binding.ContactsView.updatePadding(top = systemBars.top + 56) + WindowInsetsCompat.CONSUMED + } + + if (!Utils.isDarkTheme(this)) + WindowInsetsControllerCompat(window, binding.root).isAppearanceLightStatusBars = true + + aor = intent.getStringExtra("aor")!! + Utils.addActivity("contacts,$aor") + + val listView = binding.contacts + clAdapter = ContactListAdapter(this, BaresipService.contacts, aor) + listView.adapter = clAdapter + listView.isLongClickable = true + + val androidContactsObserver = Observer { + if (newAndroidName != null) { + val contentValues = ContentValues() + contentValues.put(ContactsContract.Contacts.STARRED, 1) + try { + this.contentResolver.update( + ContactsContract.RawContacts.CONTENT_URI, contentValues, + ContactsContract.Contacts.DISPLAY_NAME + "='" + newAndroidName + "'", null + ) + } catch (e: Exception) { + Log.e(TAG, "Update of Android favorite failed") + } + newAndroidName = null + } + clAdapter.notifyDataSetChanged() + } + BaresipService.contactUpdate.observe(this, androidContactsObserver) + + val contactRequest = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + if (it.data != null && it.data!!.hasExtra("name")) + newAndroidName = it.data!!.getStringExtra("name") + } + clAdapter.notifyDataSetChanged() + } + + val plusButton = binding.plusButton + plusButton.setOnClickListener { + if (Contact.contacts().size >= Contact.CONTACTS_SIZE) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.contacts_exceeded), + Contact.CONTACTS_SIZE)) + } else { + if (SystemClock.elapsedRealtime() - lastClick > 1000) { + lastClick = SystemClock.elapsedRealtime() + val intent = Intent(this, ContactActivity::class.java) + val b = Bundle() + b.putBoolean("new", true) + b.putString("uri", "") + intent.putExtras(b) + contactRequest.launch(intent) + } + } + } + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + } + + override fun onResume() { + super.onResume() + clAdapter.notifyDataSetChanged() + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + when (item.itemId) { + android.R.id.home -> + goBack() + } + + return true + + } + + private fun goBack() { + + BaresipService.activities.remove("contacts,$aor") + setResult(Activity.RESULT_OK, Intent()) + finish() + + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Event.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Event.kt new file mode 100644 index 0000000..c4533fb --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Event.kt @@ -0,0 +1,15 @@ +package com.tutpro.baresip.plus + +import java.util.concurrent.atomic.AtomicBoolean + +open class Event(private val content: T) { + private val hasBeenHandled = AtomicBoolean(false) + fun getContentIfNotHandled(): T? { + return if (hasBeenHandled.get()) { + null + } else { + hasBeenHandled.set(true) + content + } + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/InCallService.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/InCallService.kt new file mode 100644 index 0000000..c99233d --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/InCallService.kt @@ -0,0 +1,14 @@ +package com.tutpro.baresip.plus + +import android.app.Service +import android.content.Intent +import android.os.IBinder + +// This is needed in order to allow choosing baresip as default Phone app + +class InCallService : Service() { + + override fun onBind(intent: Intent): IBinder { + TODO("Return the communication channel to the service.") + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Log.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Log.kt new file mode 100644 index 0000000..4035394 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Log.kt @@ -0,0 +1,36 @@ +package com.tutpro.baresip.plus + +object Log { + + enum class LogLevel { + DEBUG, INFO, WARN, ERROR, OFF + } + + var logLevel: LogLevel = LogLevel.INFO + + fun logLevelSet(value: Int) { + when (value) { + 0 -> logLevel = LogLevel.DEBUG + 1 -> logLevel = LogLevel.INFO + 2 -> logLevel = LogLevel.WARN + 3 -> logLevel = LogLevel.ERROR + 4 -> logLevel = LogLevel.OFF + } + } + + fun d(tag: String, msg: String) { + if (logLevel < LogLevel.INFO) android.util.Log.d(tag, msg) + } + + fun i(tag: String, msg: String) { + if (logLevel < LogLevel.WARN) android.util.Log.i(tag, msg) + } + + fun w(tag: String, msg: String) { + if (logLevel < LogLevel.ERROR) android.util.Log.w(tag, msg) + } + + fun e(tag: String, msg: String) { + if (logLevel < LogLevel.OFF) android.util.Log.w(tag, msg) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/MainActivity.kt new file mode 100644 index 0000000..72a089f --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/MainActivity.kt @@ -0,0 +1,3306 @@ +package com.tutpro.baresip.plus + +import android.Manifest.permission.* +import android.annotation.SuppressLint +import android.app.Activity +import android.app.AlertDialog +import android.app.KeyguardManager +import android.app.NotificationManager +import android.app.Presentation +import android.content.* +import android.content.Intent.ACTION_CALL +import android.content.Intent.ACTION_DIAL +import android.content.Intent.ACTION_VIEW +import android.content.pm.PackageManager +import android.content.res.Configuration +import android.content.res.Configuration.ORIENTATION_PORTRAIT +import android.hardware.display.DisplayManager +import android.media.AudioManager +import android.media.MediaActionSound +import android.net.Uri +import android.os.* +import android.provider.DocumentsContract +import android.provider.MediaStore +import android.text.InputType +import android.text.TextWatcher +import android.util.TypedValue +import android.view.* +import android.view.inputmethod.InputMethodManager +import android.widget.* +import androidx.activity.OnBackPressedCallback +import androidx.activity.enableEdgeToEdge +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.RequiresApi +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.core.graphics.Insets +import androidx.core.net.toUri +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.Observer +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar +import com.tutpro.baresip.plus.Utils.showSnackBar +import com.tutpro.baresip.plus.databinding.ActivityMainBinding +import org.w3c.dom.Text +import java.io.File +import java.text.SimpleDateFormat +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.util.* +import kotlin.system.exitProcess + +class SecondScreenPresentation(context: Context, display: Display) : Presentation(context, display) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + //setContentView(textView) + } + + public fun setDisplayView(view : View) { + setContentView(view) + } +} + +class MainActivity : AppCompatActivity() { + + private lateinit var binding: ActivityMainBinding + private lateinit var defaultLayout: RelativeLayout + private lateinit var videoLayout: RelativeLayout + //private lateinit var videoView: VideoView + private lateinit var callTitle: TextView + private lateinit var callTimer: Chronometer + private lateinit var callUri: AutoCompleteTextView + private lateinit var securityButton: ImageButton + private lateinit var videoSecurityButton: ImageButton + private lateinit var diverter: LinearLayout + private lateinit var diverterUri: TextView + private lateinit var callButton: ImageButton + private lateinit var callVideoButton: ImageButton + private lateinit var hangupButton: ImageButton + private lateinit var answerButton: ImageButton + private lateinit var answerVideoButton: ImageButton + private lateinit var rejectButton: ImageButton + private lateinit var callControl: RelativeLayout + private lateinit var holdButton: ImageButton + private lateinit var transferButton: ImageButton + private lateinit var videoButton: ImageButton + private lateinit var voicemailButton: ImageButton + private lateinit var voicemailButtonSpace: Space + private lateinit var contactsButton: ImageButton + private lateinit var messagesButton: ImageButton + private lateinit var callsButton: ImageButton + private lateinit var dialpadButton: ImageButton + private lateinit var dtmf: EditText + private var dtmfWatcher: TextWatcher? = null + private lateinit var infoButton: ImageButton + private lateinit var onHoldNotice: TextView + private lateinit var videoOnHoldNotice: TextView + private lateinit var uaAdapter: UaSpinnerAdapter + private lateinit var aorSpinner: Spinner + private lateinit var imm: InputMethodManager + private lateinit var nm: NotificationManager + private lateinit var am: AudioManager + private lateinit var kgm: KeyguardManager + private lateinit var screenEventReceiver: BroadcastReceiver + private lateinit var serviceEventObserver: Observer> + private var recIcon: MenuItem? = null + private var micIcon: MenuItem? = null + private var speakerIcon: MenuItem? = null + private lateinit var speakerButton: ImageButton + private lateinit var swipeRefresh: SwipeRefreshLayout + private lateinit var requestPermissionLauncher: ActivityResultLauncher + private lateinit var requestPermissionsLauncher: ActivityResultLauncher> + private lateinit var accountsRequest: ActivityResultLauncher + private lateinit var chatRequests: ActivityResultLauncher + private lateinit var configRequest: ActivityResultLauncher + private lateinit var backupRequest: ActivityResultLauncher + private lateinit var restoreRequest: ActivityResultLauncher + private lateinit var logcatRequest: ActivityResultLauncher + private lateinit var contactsRequest: ActivityResultLauncher + private lateinit var callsRequest: ActivityResultLauncher + private lateinit var comDevChangedListener: AudioManager.OnCommunicationDeviceChangedListener + private lateinit var permissions: Array + + private var callHandler: Handler = Handler(Looper.getMainLooper()) + private var callRunnable: Runnable? = null + private var downloadsInputUri: Uri? = null + private var downloadsOutputUri: Uri? = null + private var audioModeChangedListener: AudioManager.OnModeChangedListener? = null + + private var presentation: Presentation? = null + + private lateinit var baresipService: Intent + + private var restart = false + private var atStartup = false + private var alerting = false + + private var resumeUri = "" + private var resumeUap = 0L + private var resumeCall: Call? = null + private var resumeAction = "" + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + moveTaskToBack(true) + } + } + + @SuppressLint("ClickableViewAccessibility") + override fun onCreate(savedInstanceState: Bundle?) { + + // theme.applyStyle(R.style.OptOutEdgeToEdgeEnforcement,false) + + super.onCreate(savedInstanceState) + + enableEdgeToEdge() + + AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + + binding = ActivityMainBinding.inflate(layoutInflater) + + val extraAction = intent.getStringExtra("action") + Log.d(TAG, "Main onCreate ${intent.action}/${intent.data}/$extraAction") + + window.addFlags(WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES) + + // 시스템 바 숨김 (Full Screen Mode) - by ritoseo + window.decorView.systemUiVisibility = ( + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or + View.SYSTEM_UI_FLAG_FULLSCREEN or + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + ) + + setContentView(binding.root) + + ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v: View, insets: WindowInsetsCompat -> + val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + WindowInsetsCompat.CONSUMED + } + + // Must be done after view has been created + this.setShowWhenLocked(true) + this.setTurnScreenOn( true) + Utils.requestDismissKeyguard(this) + + setSupportActionBar(binding.toolbar) + supportActionBar?.title = "OSVC-C220" + + defaultLayout = binding.defaultLayout + videoLayout = binding.videoLayout + videoView = VideoView(applicationContext) + aorSpinner = binding.aorSpinner + callTitle = binding.callTitle + callTimer = binding.callTimer + callUri = binding.callUri + securityButton = binding.securityButton + diverter = binding.diverter + diverterUri = binding.diverterUri + callButton = binding.callButton + callVideoButton = binding.callVideoButton + hangupButton = binding.hangupButton + answerButton = binding.answerButton + answerVideoButton = binding.answerVideoButton + rejectButton = binding.rejectButton + callControl = binding.callControl + holdButton = binding.holdButton + transferButton = binding.transferButton + dtmf = binding.dtmf + infoButton = binding.info + onHoldNotice = binding.onHoldNotice + voicemailButton = binding.voicemailButton + voicemailButtonSpace = binding.voicemailButtonSpace + videoButton = binding.videoButton + contactsButton = binding.contactsButton + messagesButton = binding.messagesButton + callsButton = binding.callsButton + dialpadButton = binding.dialpadButton + swipeRefresh = binding.swipeRefresh + + BaresipService.supportedCameras = Utils.supportedCameras(applicationContext).isNotEmpty() + + imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + am = getSystemService(AUDIO_SERVICE) as AudioManager + kgm = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + + serviceEventObserver = Observer { + val event = it.getContentIfNotHandled() + Log.d(TAG, "Observed event $event") + if (event != null && BaresipService.serviceEvents.isNotEmpty()) { + val first = BaresipService.serviceEvents.removeAt(0) + handleServiceEvent(first.event, first.params) + } + } + + BaresipService.serviceEvent.observeForever(serviceEventObserver) + + screenEventReceiver = object : BroadcastReceiver() { + override fun onReceive(contxt: Context, intent: Intent) { + if (kgm.isKeyguardLocked) { + Log.d(TAG, "Screen on when locked") + this@MainActivity.setShowWhenLocked(Call.inCall()) + } + } + } + + if(Utils.propertyGet("sys.rito.debug") == "1") { + binding.toolbar.visibility = View.VISIBLE + findViewById(R.id.header_bar).visibility = View.GONE + } + + this.registerReceiver(screenEventReceiver, IntentFilter().apply { + addAction(Intent.ACTION_SCREEN_ON) + }) + + if (Build.VERSION.SDK_INT >= 31) { + comDevChangedListener = AudioManager.OnCommunicationDeviceChangedListener { device -> + if (device != null) { + Log.d(TAG, "Com device changed to type ${device.type} in mode ${am.mode}") + setSpeakerButtonAndIcon() + } + } + am.addOnCommunicationDeviceChangedListener(mainExecutor, comDevChangedListener) + } + + uaAdapter = UaSpinnerAdapter(applicationContext, BaresipService.uas) + aorSpinner.adapter = uaAdapter + aorSpinner.setSelection(-1) + aorSpinner.tag = "" + aorSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + // Have to allow NULL view, since sometimes when onItemSelected is called, view is NULL. + // Haven't found any explanation why this can happen. + override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { + Log.d(TAG, "aorSpinner selecting $position") + if (position < BaresipService.uas.size) { + val ua = BaresipService.uas[position] + val acc = ua.account + aorSpinner.tag = acc.aor + showCall(ua) + updateIcons(acc) + } + } + + override fun onNothingSelected(parent: AdapterView<*>) { + Log.d(TAG, "Nothing selected") + } + } + + val registrationObserver = Observer { uaAdapter.notifyDataSetChanged() } + BaresipService.registrationUpdate.observe(this, registrationObserver) + + accountsRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + uaAdapter.notifyDataSetChanged() + spinToAor(activityAor) + if (aorSpinner.tag != "") + updateIcons(Account.ofAor(aorSpinner.tag.toString())!!) + if (BaresipService.isServiceRunning) { + baresipService.action = "Update Notification" + startService(baresipService) + } + } + + accountRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + spinToAor(activityAor) + val ua = UserAgent.ofAor(activityAor)!! + updateIcons(ua.account) + if (it.resultCode == Activity.RESULT_OK) + if (BaresipService.aorPasswords[activityAor] == NO_AUTH_PASS) + askPassword(getString(R.string.authentication_password), ua) + } + + aorSpinner.setOnTouchListener { view, event -> + if (event.action == MotionEvent.ACTION_DOWN) { + if (aorSpinner.selectedItemPosition == -1) { + val i = Intent(this@MainActivity, AccountsActivity::class.java) + val b = Bundle() + b.putString("aor", "") + i.putExtras(b) + accountsRequest.launch(i) + true + } else { + if ((event.x - view.left) < 100) { + val i = Intent(this@MainActivity, AccountActivity::class.java) + val b = Bundle() + b.putString("aor", aorSpinner.tag.toString()) + i.putExtras(b) + accountRequest!!.launch(i) + true + } else { + BaresipService.uas[aorSpinner.selectedItemPosition].account.resumeUri = + callUri.text.toString() + false + } + } + } else { + // view.performClick() + false + } + } + + aorSpinner.setOnLongClickListener { + if (aorSpinner.selectedItemPosition != -1) { + val ua = UserAgent.ofAor(aorSpinner.tag.toString()) + if (ua != null) { + val acc = ua.account + if (Api.account_regint(acc.accp) > 0) { + Api.account_set_regint(acc.accp, 0) + Api.ua_unregister(ua.uap) + } else { + Api.account_set_regint(acc.accp, acc.configuredRegInt) + Api.ua_register(ua.uap) + } + acc.regint = Api.account_regint(acc.accp) + AccountsActivity.saveAccounts() + } + } + true + } + + callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item, + Contact.contactNames())) + callUri.threshold = 2 + callUri.setOnFocusChangeListener { view, b -> + if (b) { + imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) + } + } + callUri.setOnClickListener { view -> + imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) + } + + securityButton.setOnClickListener { + when (securityButton.tag) { + R.drawable.unlocked -> { + Utils.alertView(this, getString(R.string.alert), + getString(R.string.call_not_secure)) + } + R.drawable.locked_yellow -> { + Utils.alertView(this, getString(R.string.alert), + getString(R.string.peer_not_verified)) + } + R.drawable.locked_green -> { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.info) + setMessage(getString(R.string.call_is_secure)) + setPositiveButton(getString(R.string.unverify)) { dialog, _ -> + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val call = ua.currentCall() + if (call != null) { + if (Api.cmd_exec("zrtp_unverify " + call.zid) != 0) { + Log.e(TAG, "Command 'zrtp_unverify ${call.zid}' failed") + } else { + securityButton.setImageResource(R.drawable.locked_yellow) + securityButton.tag = R.drawable.locked_yellow + } + } + dialog.dismiss() + } + setNeutralButton(getString(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + } + } + + callButton.setOnClickListener { + if (aorSpinner.selectedItemPosition >= 0) { + if (Utils.checkPermissions(this, arrayOf(RECORD_AUDIO))) + makeCall("voice") + else + Toast.makeText(applicationContext, getString(R.string.no_calls), + Toast.LENGTH_SHORT).show() + } + } + + callVideoButton.setOnClickListener { + if (aorSpinner.selectedItemPosition >= 0) { + if (Utils.checkPermissions(this, arrayOf(RECORD_AUDIO, CAMERA))) + makeCall("video") + else + Toast.makeText( + applicationContext, getString(R.string.no_video_calls), + Toast.LENGTH_SHORT + ).show() + } + } + + hangupButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + if (Build.VERSION.SDK_INT < 31) { + if (callRunnable != null) { + callHandler.removeCallbacks(callRunnable!!) + callRunnable = null + BaresipService.abandonAudioFocus(applicationContext) + showCall(ua) + return@setOnClickListener + } + } else { + if (audioModeChangedListener != null) { + am.removeOnModeChangedListener(audioModeChangedListener!!) + audioModeChangedListener = null + BaresipService.abandonAudioFocus(applicationContext) + showCall(ua) + return@setOnClickListener + } + } + val aor = ua.account.aor + val uaCalls = ua.calls() + if (uaCalls.size > 0) { + val call = uaCalls[uaCalls.size - 1] + val callp = call.callp + Log.d(TAG, "AoR $aor hanging up call $callp with ${callUri.text}") + hangupButton.isEnabled = false + Api.ua_hangup(ua.uap, callp, 0, "") + } + } + + answerButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val call = ua.currentCall() ?: return@setOnClickListener + Log.d(TAG, "AoR ${ua.account.aor} answering call from ${callUri.text}") + answerButton.isEnabled = false + answerVideoButton.isEnabled = false + rejectButton.isEnabled = false + call.setMediaDirection(Api.SDP_SENDRECV, Api.SDP_INACTIVE) + call.disableVideoStream(true) + val intent = Intent(this@MainActivity, BaresipService::class.java) + intent.action = "Call Answer" + intent.putExtra("uap", ua.uap) + intent.putExtra("callp", call.callp) + startService(intent) + } + + answerVideoButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val aor = ua.account.aor + val call = ua.calls("in")[0] + Log.d(TAG, "AoR $aor answering video call ${call.callp} from ${callUri.text}") + answerButton.isEnabled = false + answerVideoButton.isEnabled = false + rejectButton.isEnabled = false + val videoDir = if (Utils.isCameraAvailable(this)) + Api.SDP_SENDRECV + else + Api.SDP_RECVONLY + call.setMediaDirection(Api.SDP_SENDRECV, videoDir) + val intent = Intent(this@MainActivity, BaresipService::class.java) + intent.action = "Call Answer" + intent.putExtra("uap", ua.uap) + intent.putExtra("callp", call.callp) + startService(intent) + } + + rejectButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val aor = ua.account.aor + val call = ua.currentCall()!! + val callp = call.callp + Log.d(TAG, "AoR $aor rejecting call $callp from ${callUri.text}") + answerButton.isEnabled = false + answerVideoButton.isEnabled = false + rejectButton.isEnabled = false + call.rejected = true + Api.ua_hangup(ua.uap, callp, 486, "Busy Here") + } + + holdButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val aor = ua.account.aor + val call = ua.currentCall()!! + if (call.onhold) { + Log.d(TAG, "AoR $aor resuming call ${call.callp} with ${callUri.text}") + call.resume() + call.onhold = false + holdButton.setImageResource(R.drawable.call_hold) + } else { + Log.d(TAG, "AoR $aor holding call ${call.callp} with ${callUri.text}") + call.hold() + call.onhold = true + holdButton.setImageResource(R.drawable.resume) + } + } + + transferButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val call = ua.currentCall() + if (call != null ) { + if (call.onHoldCall != null) { + if (!call.executeTransfer()) + Utils.alertView(this@MainActivity, getString(R.string.notice), + String.format(getString(R.string.transfer_failed))) + } else { + makeTransfer(ua) + } + } + } + + infoButton.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val call = ua.currentCall() + if (call != null) { + val stats = call.stats("audio") + if (stats != "") { + val parts = stats.split(",") as ArrayList + if (parts[2] == "0/0") { + parts[2] = "?/?" + parts[3] = "?/?" + parts[4] = "?/?" + } + val codecs = call.audioCodecs() + val duration = call.duration() + val txCodec = codecs.split(',')[0].split("/") + val rxCodec = codecs.split(',')[1].split("/") + Utils.alertView(this, getString(R.string.call_info), + "${String.format(getString(R.string.duration), duration)}\n" + + "${getString(R.string.codecs)}: ${txCodec[0]} ch ${txCodec[2]}/" + + "${rxCodec[0]} ch ${rxCodec[2]}\n" + + "${String.format(getString(R.string.rate), parts[0])}\n" + + "${String.format(getString(R.string.average_rate), parts[1])}\n" + + "${getString(R.string.packets)}: ${parts[2]}\n" + + "${getString(R.string.lost)}: ${parts[3]}\n" + + String.format(getString(R.string.jitter), parts[4])) + } else { + Utils.alertView(this, getString(R.string.call_info), + getString(R.string.call_info_not_available)) + } + } + } + + dtmf.setOnFocusChangeListener { view, hasFocus -> + if (hasFocus) { + imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) + } + } + dtmf.setOnClickListener { view -> + imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) + } + + voicemailButton.setOnClickListener { + if (aorSpinner.selectedItemPosition >= 0) { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val acc = ua.account + if (acc.vmUri != "") { + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE -> { + val i = Intent(this, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP + i.putExtra("action", "call") + i.putExtra("uap", ua.uap) + i.putExtra("peer", acc.vmUri) + startActivity(i) + } + DialogInterface.BUTTON_NEGATIVE -> { + } + } + } + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.voicemail_messages) + setMessage(acc.vmMessages(this@MainActivity)) + setPositiveButton(getString(R.string.listen), dialogClickListener) + setNeutralButton(getString(R.string.cancel), dialogClickListener) + show() + } + } + } + } + + contactsRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item, + Contact.contactNames())) + } + + contactsButton.setOnClickListener { + val i = Intent(this@MainActivity, ContactsActivity::class.java) + val b = Bundle() + if (aorSpinner.selectedItemPosition >= 0) + b.putString("aor", aorSpinner.tag.toString()) + else + b.putString("aor", "") + i.putExtras(b) + contactsRequest.launch(i) + } + + chatRequests = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + spinToAor(activityAor) + updateIcons(Account.ofAor(activityAor)!!) + } + + messagesButton.setOnClickListener { + if (aorSpinner.selectedItemPosition >= 0) { + val i = Intent(this@MainActivity, ChatsActivity::class.java) + val b = Bundle() + b.putString("aor", aorSpinner.tag.toString()) + b.putString("peer", resumeUri) + i.putExtras(b) + chatRequests.launch(i) + } + } + + callsRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + spinToAor(activityAor) + callsButton.setImageResource(R.drawable.calls) + } + + callsButton.setOnClickListener { + if (aorSpinner.selectedItemPosition >= 0) { + val i = Intent(this@MainActivity, CallsActivity::class.java) + val b = Bundle() + b.putString("aor", aorSpinner.tag.toString()) + i.putExtras(b) + callsRequest.launch(i) + } + } + + dialpadButton.tag = "off" + dialpadButton.setOnClickListener { + if (dialpadButton.tag == "off") { + callUri.inputType = InputType.TYPE_CLASS_PHONE + dialpadButton.setImageResource(R.drawable.dialpad_on) + dialpadButton.tag = "on" + //Log.d(TAG, "Screen ${Utils.getScreenOrientation(applicationContext)}") + //val path = BaresipService.downloadsPath + "/video.mp4" + //Utils.ffmpegExecute("-video_size hd720 -f android_camera -camera_index 1 -i anything -r 10 -t 5 -y $path") + } else { + callUri.inputType = InputType.TYPE_CLASS_TEXT + + InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + dialpadButton.setImageResource(R.drawable.dialpad_off) + dialpadButton.tag = "off" + } + } + + videoButton.setOnClickListener { + videoButton.isClickable = false + videoButton.setImageResource(R.drawable.video_pending) + Handler(Looper.getMainLooper()).postDelayed({ + val call = Call.call("connected") + if (call != null) { + val dir = call.videoRequest + if (dir != 0) { + call.videoRequest = 0 + call.setVideoDirection(dir) + } else { + if (Utils.isCameraAvailable(this)) + call.setVideoDirection(Api.SDP_SENDRECV) + else + call.setVideoDirection(Api.SDP_RECVONLY) + } + imm.hideSoftInputFromWindow(dtmf.windowToken, 0) + } + }, 250) + } + + configRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if ((it.data != null) && it.data!!.hasExtra("restart")) { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.restart_request) + setMessage(getString(R.string.config_restart)) + setPositiveButton(getText(R.string.restart)) { dialog, _ -> + dialog.dismiss() + quitRestart(true) + } + setNeutralButton(getText(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + val displayTheme = Preferences(applicationContext).displayTheme + if (displayTheme != AppCompatDelegate.getDefaultNightMode()) { + AppCompatDelegate.setDefaultNightMode(displayTheme) + delegate.applyDayNight() + } + } + + backupRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) + it.data?.data?.also { uri -> + downloadsOutputUri = uri + askPassword(getString(R.string.encrypt_password)) + } + } + + restoreRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) + it.data?.data?.also { uri -> + downloadsInputUri = uri + askPassword(getString(R.string.decrypt_password)) + } + } + + logcatRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) + it.data?.data?.also { uri -> + try { + val out = contentResolver.openOutputStream(uri) + val process = Runtime.getRuntime().exec("logcat -d --pid=${Process.myPid()}") + val bufferedReader = process.inputStream.bufferedReader() + bufferedReader.forEachLine { line -> + out!!.write(line.toByteArray()) + out.write('\n'.code.toByte().toInt()) + } + out!!.close() + } catch (e: Exception) { + Log.e(TAG, "Failed to write logcat to file") + } + } + } + + swipeRefresh.setOnTouchListener(object : OnSwipeTouchListener(this@MainActivity) { + + override fun onSwipeLeft() { + super.onSwipeLeft() + if (BaresipService.uas.size > 0) { + val curPos = aorSpinner.selectedItemPosition + val newPos = if (curPos == -1) + 0 + else + (curPos + 1) % BaresipService.uas.size + if (curPos != newPos) { + aorSpinner.setSelection(newPos) + showCall(BaresipService.uas[newPos]) + } + } + } + + override fun onSwipeRight() { + super.onSwipeRight() + if (BaresipService.uas.size > 0) { + val curPos = aorSpinner.selectedItemPosition + val newPos = when (curPos) { + -1 -> 0 + 0 -> BaresipService.uas.size - 1 + else -> curPos - 1 + } + if (curPos != newPos) { + aorSpinner.setSelection(newPos) + showCall(BaresipService.uas[newPos]) + } + } + } + }) + + swipeRefresh.setOnRefreshListener { + if (BaresipService.uas.size > 0) { + if (aorSpinner.selectedItemPosition == -1) + aorSpinner.setSelection(0) + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + if (ua.account.regint > 0) + Api.ua_register(ua.uap) + } + swipeRefresh.isRefreshing = false + } + + baresipService = Intent(this@MainActivity, BaresipService::class.java) + + atStartup = intent.hasExtra("onStartup") + + when (intent?.action) { + ACTION_DIAL, ACTION_CALL, ACTION_VIEW -> + if (BaresipService.isServiceRunning) + callAction(intent.data, if (intent?.action == ACTION_CALL) "call" else "dial") + else + BaresipService.callActionUri = intent.data.toString() + .replace("tel:%2B", "tel:+") + } + + permissions = if (BaresipService.supportedCameras) { + if (Build.VERSION.SDK_INT >= 33) + arrayOf(POST_NOTIFICATIONS, RECORD_AUDIO, CAMERA, BLUETOOTH_CONNECT) + else if (Build.VERSION.SDK_INT >= 31) + arrayOf(RECORD_AUDIO, CAMERA, BLUETOOTH_CONNECT) + else + arrayOf(RECORD_AUDIO, CAMERA) + } else { + if (Build.VERSION.SDK_INT >= 33) + arrayOf(POST_NOTIFICATIONS, RECORD_AUDIO, BLUETOOTH_CONNECT) + else if (Build.VERSION.SDK_INT >= 31) + arrayOf(RECORD_AUDIO, BLUETOOTH_CONNECT) + else + arrayOf(RECORD_AUDIO) + } + + requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) {} + + requestPermissionsLauncher = + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { + val denied = mutableListOf() + val shouldShow = mutableListOf() + it.forEach { permission -> + if (!permission.value) { + denied.add(permission.key) + if (ActivityCompat.shouldShowRequestPermissionRationale(this, + permission.key)) + shouldShow.add(permission.key) + } + } + if (denied.contains(POST_NOTIFICATIONS) && + !shouldShow.contains(POST_NOTIFICATIONS)) { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(getString(R.string.notice)) + setMessage(getString(R.string.no_notifications)) + setPositiveButton(getString(R.string.ok)) { _, _ -> + quitRestart(false) + } + show() + } + } else { + if (shouldShow.isNotEmpty()) + Utils.alertView(this, getString(R.string.permissions_rationale), + if (CAMERA in permissions) + getString(R.string.audio_and_video_permissions) + else + getString(R.string.audio_permissions) + ) { requestPermissionsLauncher.launch(permissions) } + else + startBaresip() + } + } + + addVideoLayoutViews() + + if (!BaresipService.isServiceRunning) { + if (File(filesDir.absolutePath + "/accounts").exists()) { + val accounts = String( + Utils.getFileContents(filesDir.absolutePath + "/accounts")!!, + Charsets.UTF_8 + ).lines().toMutableList() + askPasswords(accounts) + } else { + // Baresip is started for the first time + requestPermissionsLauncher.launch(permissions) + } + } + + } // OnCreate + + override fun onStart() { + super.onStart() + Log.d(TAG, "Main onStart") + val action = intent.getStringExtra("action") + if (action != null) { + // MainActivity was not visible when call, message, or transfer request came in + intent.removeExtra("action") + handleIntent(intent, action) + } + } + + override fun onResume() { + super.onResume() + Log.d(TAG, "Main onResume with action '$resumeAction'") + nm.cancelAll() + BaresipService.isMainVisible = true + when (resumeAction) { + "call show" -> { + handleServiceEvent ("call incoming", + arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp)) + } + "call answer" -> { + answerButton.performClick() + showCall(resumeCall!!.ua) + } + "call missed" -> { + callsButton.performClick() + } + "call reject" -> + rejectButton.performClick() + "call" -> { + callUri.setText(BaresipService.uas[aorSpinner.selectedItemPosition].account.resumeUri) + callButton.performClick() + } + "dial" -> { + callUri.setText(BaresipService.uas[aorSpinner.selectedItemPosition].account.resumeUri) + } + "call transfer", "transfer show", "transfer accept" -> + handleServiceEvent("$resumeAction,$resumeUri", + arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp)) + "message", "message show", "message reply" -> + handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri)) + else -> { + val incomingCall = Call.call("incoming") + if (incomingCall != null) { + spinToAor(incomingCall.ua.account.aor) + } else { + restoreActivities() + if (BaresipService.uas.size > 0) { + if (aorSpinner.selectedItemPosition == -1) { + if (Call.inCall()) + spinToAor(Call.calls()[0].ua.account.aor) + else { + aorSpinner.setSelection(0) + aorSpinner.tag = BaresipService.uas[0].account.aor + } + } + } + } + uaAdapter.notifyDataSetChanged() + if (BaresipService.uas.size > 0) { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + showCall(ua) + updateIcons(ua.account) + } + } + } + resumeAction = "" + + val tv = findViewById(R.id.textViewHeaderIp) + tv.setText(BaresipService.deviceIpAddress) + } + + override fun onPause() { + super.onPause() + Log.d(TAG, "Main onPause") + Utils.addActivity("main") + BaresipService.isMainVisible = false + callTimer.stop() + saveCallUri() + } + + override fun onStop() { + super.onStop() + Log.d(TAG, "Main onStop") + } + + override fun onDestroy() { + super.onDestroy() + Log.d(TAG, "Main onDestroy") + this.unregisterReceiver(screenEventReceiver) + if (Build.VERSION.SDK_INT >= 31) + am.removeOnCommunicationDeviceChangedListener(comDevChangedListener) + BaresipService.serviceEvent.removeObserver(serviceEventObserver) + BaresipService.serviceEvents.clear() + BaresipService.activities.clear() + } + + var prevLayoutShow = false + private fun switchVideoLayout(show : Boolean) { + if(show == prevLayoutShow) { + return + } + prevLayoutShow = show + + if(BaresipService.connectedDisplayCount < 2) + return + + println("switchVideoLayout : ${show}") + if(show) { +// var prm: FrameLayout.LayoutParams = +// FrameLayout.LayoutParams( +// 1920, +// 1080 +// ) +// prm.leftMargin = 0 +// prm.topMargin = 0 +// videoView.surfaceSelfView.layoutParams = prm +// try { +// val parentView = videoView.surfaceSelfView.parent +// (parentView as ViewGroup).removeView(videoView.surfaceSelfView) +// } catch(e : java.lang.Exception) { +// } +// presentation?.setContentView(videoView.surfaceSelfView) + videoView.surfaceSelfView.bringToFront() + } else { +// try { +// val parentView = videoView.surfaceSelfView.parent +// (parentView as ViewGroup).removeView(videoView.surfaceSelfView) +// } catch(e : java.lang.Exception) { +// } +// +// var prm2: FrameLayout.LayoutParams = +// FrameLayout.LayoutParams( +// 1920, +// 1080 +// ) +// prm2.leftMargin = 1919 +// prm2.topMargin = 1079 +// videoView.surfaceSelfView.layoutParams = prm2 +// videoLayout.addView(videoView.surfaceSelfView) +// presentation?.setContentView(videoView.standbyView) + videoView.standbyView.bringToFront() + } + } + + private fun isCallExist() : Boolean { + if(BaresipService.uas.size == 0) + return false + + val ua = BaresipService.uas[0] + val call = ua.currentCall() + if (call != null) { + return true + } + + return false + } + + private fun updateDisplayLayout() { + if(BaresipService.connectedDisplayCount > 1) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm2.leftMargin = 0 + prm2.topMargin = 0 + + videoView.surfaceSelfView.layoutParams = prm2 + return + } + + if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_최대_근거리_우하단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 1440 + prm2.topMargin = 810 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_최대_근거리_우상단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 1440 + prm2.topMargin = 0 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌상단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 0 + prm2.topMargin = 0 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_최대_근거리_좌하단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 0 + prm2.topMargin = 810 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_대상단_근거리_소하단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1440, + 810 + ) + prm1.leftMargin = 240 + prm1.topMargin = 0 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 720 + prm2.topMargin = 810 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_대좌단_근거리_소우단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1440, + 810 + ) + prm1.leftMargin = 0 + prm1.topMargin = 135 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 1440 + prm2.topMargin = 135 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_대하단_근거리_소상단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1440, + 810 + ) + prm1.leftMargin = 240 + prm1.topMargin = 270 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 720 + prm2.topMargin = 0 + + videoView.surfaceSelfView.layoutParams = prm2 + } else if(BaresipService.displaySplitMode == BaresipService.DISPLAY_SPLIT_MODE_원거리_반좌단_근거리_반우단) { + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 960, + 540 + ) + prm1.leftMargin = 0 + prm1.topMargin = 270 + + videoView.surfaceView.layoutParams = prm1 + + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 960, + 540 + ) + prm2.leftMargin = 960 + prm2.topMargin = 270 + + videoView.surfaceSelfView.layoutParams = prm2 + } + + } + + private fun updateInfo() { + val view = findViewById(R.id.textViewDeviceName) + view.setText(BaresipService.deviceName) + + val now = LocalDateTime.now() + + val formatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일(E요일) a h시 m분", Locale.KOREAN) + val viewDate = findViewById(R.id.textViewDatetime) + val formattedDate = now.format(formatter) + viewDate.setText(formattedDate) + } + + private fun updateDisplay() { + println("Update Display : ${BaresipService.connectedDisplayCount}") + if(BaresipService.connectedDisplayCount < 2) { + try { + val parentView = videoView.surfaceSelfView.parent + (parentView as ViewGroup).removeView(videoView.surfaceSelfView) + } catch(e : java.lang.Exception) { + } + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1, + 1 + ) + prm2.leftMargin = 0 + prm2.topMargin = 0 + + videoView.surfaceSelfView.layoutParams = prm2 + videoLayout.addView(videoView.surfaceSelfView) + + updateDisplayLayout() + } else { + try { + val parentView = videoView.surfaceSelfView.parent + (parentView as ViewGroup).removeView(videoView.surfaceSelfView) + } catch(e : java.lang.Exception) { + } + + try { + val parentView = videoView.standbyView.parent + (parentView as ViewGroup).removeView(videoView.standbyView) + } catch(e : java.lang.Exception) { + } + + val displayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager + val displays = displayManager.displays + val secondDisplay = displays[1] // 두 번째 디스플레이 가져오기 + presentation = SecondScreenPresentation(this, secondDisplay) + + var prm1: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm1.leftMargin = 0 + prm1.topMargin = 0 + videoView.surfaceView.layoutParams = prm1 + + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm2.leftMargin = 0 + prm2.topMargin = 0 + videoView.surfaceSelfView.layoutParams = prm2 + presentation?.setContentView(R.layout.presentation_layout) + val presentationView = presentation?.window?.decorView?.findViewById(R.id.presentationLayout) + try { + presentationView?.addView(videoView.surfaceSelfView) + } catch(e : java.lang.Exception) { + } + try { + presentationView?.addView(videoView.standbyView) + } catch(e : java.lang.Exception) { + } + videoView.standbyView.bringToFront() + presentation?.show() + } + } + + private fun addVideoLayoutViews() { + var connectedCount = 0 + var useSplit = false + for(idx in 0..1) { + if (Utils.checkDisplayConnection(idx) == "connected") + connectedCount++ + } + + BaresipService.connectedDisplayCount = connectedCount + + if(connectedCount < 2) + useSplit = true + + //videoLayout.addView(videoView.surfaceView) + if(useSplit) { + var prm: FrameLayout.LayoutParams = + FrameLayout.LayoutParams( + 1920, + 1080 + ) + prm.leftMargin = 0 + prm.topMargin = 0 + videoView.surfaceView.layoutParams = prm + videoLayout.addView(videoView.surfaceView) + //videoView.surfaceSelfView.bringToFront() + + var prm2: FrameLayout.LayoutParams = + FrameLayout.LayoutParams( + 480, + 270 + ) + prm2.leftMargin = 1440 + prm2.topMargin = 810 + + videoView.surfaceSelfView.layoutParams = prm2 + videoLayout.addView(videoView.surfaceSelfView) + } else { + val useSecondScreenAsFar = false; + // DisplayManager 가져오기 + val displayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager + val displays = displayManager.displays + + if (displays.size > 1) { // 보조 디스플레이가 있는 경우 + println("디스플레이 상태 : [0]${Utils.checkDisplayConnection(0)} [1]${Utils.checkDisplayConnection(1)}") + val secondDisplay = displays[1] // 두 번째 디스플레이 가져오기 + presentation = SecondScreenPresentation(this, secondDisplay) + if(useSecondScreenAsFar) { + presentation?.setContentView(videoView.surfaceView) + } else { + //presentation?.setContentView(videoView.surfaceSelfView) + var prm2: FrameLayout.LayoutParams = + FrameLayout.LayoutParams( + 1920, + 1080 + ) + prm2.leftMargin = 0 + prm2.topMargin = 0 + videoView.surfaceSelfView.layoutParams = prm2 + //videoLayout.addView(videoView.surfaceSelfView) + presentation?.setContentView(R.layout.presentation_layout) + val presentationView = presentation?.window?.decorView?.findViewById(R.id.presentationLayout) + presentationView?.addView(videoView.surfaceSelfView) + presentationView?.addView(videoView.standbyView) + //presentation?.setContentView(videoView.standbyView) + } + presentation?.show() + } else { + var prm2: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams( + 1920, + 1080 + ) + prm2.leftMargin = 1919 + prm2.topMargin = 1079 + videoView.surfaceSelfView.layoutParams = prm2 + videoLayout.addView(videoView.surfaceSelfView) + //videoView.surfaceSelfView.visibility = View.INVISIBLE + } + + if(useSecondScreenAsFar) { + videoLayout.addView(videoView.surfaceSelfView) + } else { + videoLayout.addView(videoView.surfaceView) + } + } + + + // Video Button + val vb = ImageButton(this) + vb.id = View.generateViewId() + vb.setImageResource(R.drawable.video_off) + vb.setBackgroundResource(0) + var prm: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_LEFT) + prm.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM) + prm.marginStart = 15 + prm.bottomMargin = 15 + vb.layoutParams = prm + vb.setOnClickListener { + Call.call("connected")?.setVideoDirection(Api.SDP_INACTIVE) + } + videoLayout.addView(vb) + vb.visibility = View.INVISIBLE // by ritoseo + + // Camera Button + val cb = ImageButton(this) + if (!Utils.isCameraAvailable(this)) + cb.visibility = View.INVISIBLE + cb.visibility = View.INVISIBLE // by ritoseo + cb.id = View.generateViewId() + cb.setImageResource(R.drawable.camera_front) + cb.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT + ) + prm.addRule(RelativeLayout.ALIGN_PARENT_LEFT) + prm.addRule(RelativeLayout.ALIGN_PARENT_TOP) + prm.marginStart = 15 + prm.topMargin = 15 + cb.layoutParams = prm + cb.setOnClickListener { + val call = Call.call("connected") + if (call != null) { + if (call.setVideoSource(!BaresipService.cameraFront) != 0) + Log.w(TAG, "Failed to set video source") + else + BaresipService.cameraFront = !BaresipService.cameraFront + if (BaresipService.cameraFront) + cb.setImageResource(R.drawable.camera_front) + else + cb.setImageResource(R.drawable.camera_rear) + } + } + videoLayout.addView(cb) + + // Snapshot Button + if ((Build.VERSION.SDK_INT >= 29) || + Utils.checkPermissions(this, arrayOf(WRITE_EXTERNAL_STORAGE))) { + val sb = ImageButton(this) + sb.setImageResource(R.drawable.snapshot) + sb.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_LEFT) + prm.addRule(RelativeLayout.BELOW, cb.id) + prm.marginStart = 15 + prm.topMargin= 24 + sb.layoutParams = prm + sb.setOnClickListener { + val sdf = SimpleDateFormat("yyyyMMdd_hhmmss", Locale.getDefault()) + val fileName = "IMG_" + sdf.format(Date()) + ".png" + val filePath = BaresipService.filesPath + "/" + fileName + if (Api.cmd_exec("snapshot_recv $filePath") != 0) + Log.e(TAG, "Command 'snapshot_recv $filePath' failed") + else + MediaActionSound().play(MediaActionSound.SHUTTER_CLICK) + } + videoLayout.addView(sb) + sb.visibility = View.INVISIBLE // by ritoseo + } + + // Lock Button + videoSecurityButton = ImageButton(this) + videoSecurityButton.visibility = View.INVISIBLE + videoSecurityButton.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_LEFT) + prm.addRule(RelativeLayout.ABOVE, vb.id) + prm.marginStart = 15 + prm.bottomMargin= 24 + videoSecurityButton.layoutParams = prm + videoSecurityButton.setOnClickListener { + when (securityButton.tag) { + R.drawable.unlocked -> { + Utils.alertView(this, getString(R.string.alert), + getString(R.string.call_not_secure)) + } + R.drawable.locked_yellow -> { + Utils.alertView(this, getString(R.string.alert), + getString(R.string.peer_not_verified)) + } + R.drawable.locked_green -> { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.info) + setMessage(getString(R.string.call_is_secure)) + setPositiveButton(getString(R.string.unverify)) { dialog, _ -> + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val call = ua.currentCall() + if (call != null) { + if (Api.cmd_exec("zrtp_unverify " + call.zid) != 0) { + Log.e(TAG, "Command 'zrtp_unverify ${call.zid}' failed") + } else { + securityButton.tag = R.drawable.locked_yellow + videoSecurityButton.setImageResource(R.drawable.locked_video_yellow) + } + } + dialog.dismiss() + } + setNeutralButton(getString(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + } + } + videoLayout.addView(videoSecurityButton) + videoSecurityButton.visibility = View.INVISIBLE // by ritoseo + + // Speaker Button + speakerButton = ImageButton(this) + speakerButton.id = View.generateViewId() + speakerButton.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_RIGHT) + prm.addRule(RelativeLayout.ALIGN_PARENT_TOP) + prm.marginEnd = 15 + prm.topMargin = 15 + speakerButton.layoutParams = prm + speakerButton.setOnClickListener { + Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(this), am) + setSpeakerButtonAndIcon() + } + setSpeakerButtonAndIcon() + videoLayout.addView(speakerButton) + speakerButton.visibility = View.INVISIBLE // by ritoseo + + // Mic Button + val mb = ImageButton(this) + mb.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_RIGHT) + prm.addRule(RelativeLayout.BELOW, speakerButton.id) + prm.marginEnd = 15 + prm.topMargin= 24 + mb.layoutParams = prm + if (BaresipService.isMicMuted) + mb.setImageResource(R.drawable.mic_off_button) + else + mb.setImageResource(R.drawable.mic_on_button) + mb.setOnClickListener { + BaresipService.isMicMuted = !BaresipService.isMicMuted + if (BaresipService.isMicMuted) { + mb.setImageResource(R.drawable.mic_off_button) + Api.calls_mute(true) + } else { + mb.setImageResource(R.drawable.mic_on_button) + Api.calls_mute(false) + } + } + videoLayout.addView(mb) + mb.visibility = View.INVISIBLE // by ritoseo + + // Hangup Button + val hb = ImageButton(this) + hb.id = View.generateViewId() + hb.setImageResource(R.drawable.hangup) + hb.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_RIGHT) + prm.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM) + prm.marginEnd = 15 + prm.bottomMargin = 15 + hb.layoutParams = prm + hb.setOnClickListener { + if (!Utils.isCameraAvailable(this)) + Call.call("connected")?.setVideoDirection(Api.SDP_INACTIVE) + hangupButton.performClick() + } + videoLayout.addView(hb) + + // Info Button + val ib = ImageButton(this) + ib.setImageResource(R.drawable.video_info) + ib.setBackgroundResource(0) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.ALIGN_PARENT_RIGHT) + prm.addRule(RelativeLayout.ABOVE, hb.id) + prm.marginEnd = 15 + prm.bottomMargin= 24 + ib.layoutParams = prm + ib.setOnClickListener { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val calls = ua.calls() + if (calls.size > 0) { + val call = calls[0] + val stats = call.stats("video") + if (stats != "") { + val parts = stats.split(",") + val codecs = call.videoCodecs().split(',') + val duration = call.duration() + val txCodec = codecs[0] + val rxCodec = codecs[1] + Utils.alertView(this, getString(R.string.call_info), + "${String.format(getString(R.string.duration), duration)}\n" + + "${getString(R.string.codecs)}: $txCodec/$rxCodec\n" + + "${String.format(getString(R.string.rate), parts[0])}\n" + + "${String.format(getString(R.string.average_rate), parts[1])}\n" + + "${String.format(getString(R.string.jitter), parts[4])}\n" + + "${getString(R.string.packets)}: ${parts[2]}\n" + + "${getString(R.string.lost)}: ${parts[3]}") + } else { + Utils.alertView(this, getString(R.string.call_info), + getString(R.string.call_info_not_available)) + } + } + } + videoLayout.addView(ib) + ib.visibility = View.INVISIBLE // by ritoseo + + // OnHold Notice + videoOnHoldNotice = TextView(this) + prm = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT) + prm.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE) + prm.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE) + videoOnHoldNotice.layoutParams = prm + videoOnHoldNotice.text = getString(R.string.call_is_on_hold) + videoOnHoldNotice.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f) + videoOnHoldNotice.setTextColor(ContextCompat.getColor(this, R.color.colorAccent)) + videoOnHoldNotice.visibility = View.GONE + videoLayout.addView(videoOnHoldNotice) + videoOnHoldNotice.visibility = View.INVISIBLE // by ritoseo + + } + + private fun setSpeakerButtonAndIcon() { + if (Utils.isSpeakerPhoneOn(am)) { + speakerButton.setImageResource(R.drawable.speaker_on_button) + if (speakerIcon != null) speakerIcon!!.setIcon(R.drawable.speaker_on) + } else { + speakerButton.setImageResource(R.drawable.speaker_off_button) + if (speakerIcon != null) speakerIcon!!.setIcon(R.drawable.speaker_off) + } + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + if (dtmf.isEnabled) + dtmf.requestFocus() + } + + override fun onNewIntent(intent: Intent) { + // Called when MainActivity already exists at the top of current task + super.onNewIntent(intent) + + this.setShowWhenLocked(true) + this.setTurnScreenOn(true) + + resumeAction = "" + resumeUri = "" + + Log.d(TAG, "onNewIntent with action/data '${intent.action}/${intent.data}'") + + when (intent.action) { + ACTION_DIAL, ACTION_CALL, ACTION_VIEW -> { + callAction(intent.data, if (intent.action == ACTION_CALL) "call" else "dial") + } + else -> { + val action = intent.getStringExtra("action") + if (action != null) { + intent.removeExtra("action") + handleIntent(intent, action) + } + } + } + } + + private fun callAction(uri: Uri?, action: String) { + if (Call.inCall() || BaresipService.uas.size == 0) + return + Log.d(TAG, "Action $action to $uri") + if (uri != null) { + when (uri.scheme) { + "sip" -> { + val uriStr = Utils.uriUnescape(uri.toString()) + var ua = UserAgent.ofDomain(Utils.uriHostPart(uriStr)) + if (ua == null && BaresipService.uas.size > 0) + ua = BaresipService.uas[0] + if (ua == null) { + Log.w(TAG, "No accounts for '$uriStr'") + return + } + spinToAor(ua.account.aor) + resumeAction = action + ua.account.resumeUri = uriStr + } + "tel" -> { + val uriStr = uri.toString().replace("%2B", "+") + .replace("%20", "") + .filterNot{setOf('-', ' ', '(', ')').contains(it)} + var account: Account? = null + for (a in Account.accounts()) + if (a.telProvider != "") { + account = a + break + } + if (account == null) { + Log.w(TAG, "No telephony providers for '$uriStr'") + return + } + spinToAor(account.aor) + resumeAction = action + account.resumeUri = uriStr + } + else -> { + Log.w(TAG, "Unsupported URI scheme ${uri.scheme}") + return + } + } + } + } + + private fun handleIntent(intent: Intent, action: String) { + Log.d(TAG, "Handling intent '$action'") + val ev = action.split(",") + when (ev[0]) { + "no network" -> { // 네트워크 안잡힌 경우 + /* + Utils.alertView(this, getString(R.string.notice), + getString(R.string.no_network)) + */ + return + } + /* Added by ritoseo */ + "network available" -> { + val tv = findViewById(R.id.textViewHeaderIp) + tv.setText(intent.getStringExtra("address")!!) + } + "video call" -> { + callUri.setText(intent.getStringExtra("peer")!!) + println("resumeUri : ${callUri.text}") + makeCall("video", false) + } + "hangup" -> { + hangupButton.performClick() + } + "update display" -> { + updateDisplay() + } + "update layout" -> { + updateDisplayLayout() + } + "update info" -> { + updateInfo() + } + /********************/ + "call", "dial" -> { + if (Call.inCall()) { + Toast.makeText(applicationContext, getString(R.string.call_already_active), + Toast.LENGTH_SHORT).show() + return + } + val uap = intent.getLongExtra("uap", 0L) + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w(TAG, "handleIntent 'call' did not find ua $uap") + return + } + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + resumeAction = action + ua.account.resumeUri = intent.getStringExtra("peer")!! + } + "call show", "call answer" -> { + val callp = intent.getLongExtra("callp", 0L) + val call = Call.ofCallp(callp) + if (call == null) { + Log.w(TAG, "handleIntent '$action' did not find call $callp") + return + } + val ua = call.ua + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + resumeAction = action + resumeCall = call + + if(ev[0] == "call answer") { + videoButton.performClick() + } + } + "call missed" -> { + val uap = intent.getLongExtra("uap", 0L) + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w(TAG, "handleIntent did not find ua $uap") + return + } + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + resumeAction = action + } + "call transfer", "transfer show", "transfer accept" -> { + val callp = intent.getLongExtra("callp", 0L) + val call = Call.ofCallp(callp) + if (call == null) { + Log.w(TAG, "handleIntent '$action' did not find call $callp") + moveTaskToBack(true) + return + } + resumeAction = ev[0] + resumeCall = call + resumeUri = if (ev[0] == "call transfer") + ev[1] + else + intent.getStringExtra("uri")!! + } + "message", "message show", "message reply" -> { + val uap = intent.getLongExtra("uap", 0L) + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w(TAG, "handleIntent did not find ua $uap") + return + } + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + resumeAction = action + resumeUap = uap + resumeUri = intent.getStringExtra("peer")!! + } + } + } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + val BTN_MISC = 188 + //println("onKeyDown : ${keyCode}") + val stream = if (am.mode == AudioManager.MODE_RINGTONE) + AudioManager.STREAM_RING + else + AudioManager.STREAM_MUSIC + when (keyCode) { + KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_VOLUME_UP -> { + am.adjustStreamVolume(stream, + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) + AudioManager.ADJUST_LOWER else + AudioManager.ADJUST_RAISE, + AudioManager.FLAG_SHOW_UI) + Log.d(TAG, "Adjusted volume $keyCode of stream $stream to ${am.getStreamVolume(stream)}") + return true + } + KeyEvent.KEYCODE_BACK -> { + callVideoButton.requestFocus() + return true + } + BTN_MISC -> { + return true + } + } + + + return super.onKeyDown(keyCode, event) + } + + private fun handleServiceEvent(event: String, params: ArrayList) { + + fun handleNextEvent(logMessage: String? = null) { + if (logMessage != null) + Log.w(TAG, logMessage) + if (BaresipService.serviceEvents.isNotEmpty()) { + val first = BaresipService.serviceEvents.removeAt(0) + handleServiceEvent(first.event, first.params) + } + } + + if (taskId == -1) { + handleNextEvent("Omit service event '$event' for task -1") + return + } + + if (event == "started") { + val uriString = params[0] as String + Log.d(TAG, "Handling service event 'started' with URI '$uriString'") + if (!this::uaAdapter.isInitialized) { + // Android has restarted baresip when permission has been denied in app settings + recreate() + return + } + uaAdapter.notifyDataSetChanged() + if (uriString != "") { + callAction(uriString.toUri(), "dial") + } else { + if ((aorSpinner.selectedItemPosition == -1) && (BaresipService.uas.size > 0)) { + aorSpinner.setSelection(0) + aorSpinner.tag = BaresipService.uas[0].account.aor + } + } + if (Preferences(applicationContext).displayTheme != AppCompatDelegate.getDefaultNightMode()) { + AppCompatDelegate.setDefaultNightMode(Preferences(applicationContext).displayTheme) + delegate.applyDayNight() + } + handleNextEvent() + return + } + + if (event == "stopped") { + Log.d(TAG, "Handling service event 'stopped' with start error '${params[0]}'") + if (params[0] != "") { + Utils.alertView(this, getString(R.string.notice), getString(R.string.start_failed)) + } else { + finishAndRemoveTask() + if (restart) + reStart() + else + exitProcess(0) + } + return + } + + val uap = params[0] as Long + val ua = UserAgent.ofUap(uap) + if (ua == null) { + handleNextEvent("handleServiceEvent '$event' did not find ua $uap") + return + } + + val ev = event.split(",") + Log.d(TAG, "Handling service event '${ev[0]}' for $uap") + val acc = ua.account + val aor = ua.account.aor + + when (ev[0]) { + "call rejected" -> { + if (aor == aorSpinner.tag) { + callsButton.setImageResource(R.drawable.calls_missed) + } + } + "call incoming", "call outgoing" -> { + val callp = params[1] as Long + if (BaresipService.isMainVisible) { + uaAdapter.notifyDataSetChanged() + if (aor != aorSpinner.tag) + spinToAor(aor) + showCall(ua, Call.ofCallp(callp)) + } else { + Log.d(TAG, "Reordering to front") + BaresipService.activities.clear() + BaresipService.serviceEvents.clear() + val i = Intent(applicationContext, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP + i.putExtra("action", "call show") + i.putExtra("callp", callp) + startActivity(i) + return + } + } + "call answered" -> { + showCall(ua) + } + "call redirect", "video call redirect" -> { + val redirectUri = ev[1] + val target = Utils.friendlyUri(this, redirectUri, acc) + if (acc.autoRedirect) { + redirect(ev[0], ua, redirectUri) + Toast.makeText(applicationContext, + String.format(getString(R.string.redirect_notice), target), + Toast.LENGTH_SHORT + ).show() + } else { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.redirect_request) + setMessage(String.format(getString(R.string.redirect_request_query), target)) + setPositiveButton(getString(R.string.yes)) { dialog, _ -> + redirect(ev[0], ua, redirectUri) + dialog.dismiss() + } + setNeutralButton(getString(R.string.no)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + showCall(ua) + } + "call established" -> { + if (aor == aorSpinner.tag) { + dtmf.text = null + dtmf.hint = getString(R.string.dtmf) + showCall(ua) + } + } + "call update" -> { + showCall(ua) + } + "call video request" -> { + val callp = params[1] as Long + val dir = params[2] as Int + val call = Call.ofCallp(callp) + if (call == null) { + Log.w(TAG, "Video request call $callp not found") + return + } + if (!isFinishing && !alerting) { + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.video_request) + val peerUri = Utils.friendlyUri(this@MainActivity, call.peerUri, acc) + val msg = when (dir) { + 1 -> String.format(getString(R.string.allow_video_recv), peerUri) + 2 -> String.format(getString(R.string.allow_video_send), peerUri) + 3 -> String.format(getString(R.string.allow_video), peerUri) + else -> "" + } + setMessage(msg) + setPositiveButton(getString(R.string.yes)) { dialog, _ -> + call.videoRequest = dir + videoButton.performClick() + dialog.dismiss() + alerting = false + } + setNeutralButton(getString(R.string.no)) { dialog, _ -> + dialog.dismiss() + alerting = false + } + alerting = true + show() + } + } + } + "call verify" -> { + val callp = params[1] as Long + val call = Call.ofCallp(callp) + if (call == null) { + handleNextEvent("Call $callp to be verified is not found") + return + } + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.verify) + setMessage(String.format(getString(R.string.verify_sas), ev[1])) + setPositiveButton(getString(R.string.yes)) { dialog, _ -> + call.security = if (Api.cmd_exec("zrtp_verify ${ev[2]}") != 0) { + Log.e(TAG, "Command 'zrtp_verify ${ev[2]}' failed") + R.drawable.locked_yellow + } else { + R.drawable.locked_green + } + call.zid = ev[2] + if (aor == aorSpinner.tag) { + securityButton.tag = call.security + securityButton.setImageResource(call.security) + setVideoSecurityButton(call.security) + } + dialog.dismiss() + } + setNeutralButton(getString(R.string.no)) { dialog, _ -> + call.security = R.drawable.locked_yellow + call.zid = ev[2] + if (aor == aorSpinner.tag) { + securityButton.tag = R.drawable.locked_yellow + securityButton.setImageResource(R.drawable.locked_yellow) + setVideoSecurityButton(R.drawable.locked_yellow) + } + dialog.dismiss() + } + show() + } + } + "call verified", "call secure" -> { + val callp = params[1] as Long + val call = Call.ofCallp(callp) + if (call == null) { + handleNextEvent("Call $callp that is verified is not found") + return + } + if (aor == aorSpinner.tag) { + securityButton.setImageResource(call.security) + securityButton.tag = call.security + setVideoSecurityButton(call.security) + } + } + "call transfer", "transfer show" -> { + val callp = params[1] as Long + if (!BaresipService.isMainVisible) { + Log.d(TAG, "Reordering to front") + BaresipService.activities.clear() + BaresipService.serviceEvents.clear() + val i = Intent(applicationContext, MainActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP + i.putExtra("action", event) + i.putExtra("callp", callp) + startActivity(i) + return + } + val call = Call.ofCallp(callp)!! + val target = Utils.friendlyUri(this, ev[1], acc) + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(R.string.transfer_request) + setMessage(String.format(getString(R.string.transfer_request_query), + target)) + setPositiveButton(getString(R.string.yes)) { dialog, _ -> + acceptTransfer(ua, call, ev[1]) + dialog.dismiss() + } + setNeutralButton(getString(R.string.no)) { dialog, _ -> + if (call in Call.calls()) + call.notifySipfrag(603, "Decline") + dialog.dismiss() + } + show() + } + } + "transfer accept" -> { + val callp = params[1] as Long + val call = Call.ofCallp(callp) + if (call in Call.calls()) + Api.ua_hangup(uap, callp, 0, "") + call(ua, ev[1], "voice") + showCall(ua) + } + "transfer failed" -> { + showCall(ua) + } + "call closed" -> { + uaAdapter.notifyDataSetChanged() + val call = ua.currentCall() + if (call != null) { + call.resume() + startCallTimer(call) + } else { + callTimer.stop() + } + if (aor == aorSpinner.tag) { + callUri.inputType = InputType.TYPE_CLASS_TEXT + + InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + dialpadButton.setImageResource(R.drawable.dialpad_off) + dialpadButton.tag = "off" + ua.account.resumeUri = "" + showCall(ua) + if (acc.missedCalls) + callsButton.setImageResource(R.drawable.calls_missed) + } + if (kgm.isDeviceLocked) + this.setShowWhenLocked(false) + + switchVideoLayout(false) + callVideoButton.requestFocus() + } + "message", "message show", "message reply" -> { + val i = Intent(applicationContext, ChatActivity::class.java) + i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP + val b = Bundle() + b.putString("aor", aor) + b.putString("peer", params[1] as String) + b.putBoolean("focus", ev[0] == "message reply") + i.putExtras(b) + chatRequests.launch(i) + } + "mwi notify" -> { + val lines = ev[1].split("\n") + for (line in lines) { + if (line.startsWith("Voice-Message:")) { + val counts = (line.split(" ")[1]).split("/") + acc.vmNew = counts[0].toInt() + acc.vmOld = counts[1].toInt() + break + } + } + if (aor == aorSpinner.tag) { + if (acc.vmNew > 0) + voicemailButton.setImageResource(R.drawable.voicemail_new) + else + voicemailButton.setImageResource(R.drawable.voicemail) + } + } + else -> Log.e(TAG, "Unknown event '${ev[0]}'") + } + + handleNextEvent() + } + + private fun redirect(event: String, ua: UserAgent, redirectUri: String) { + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + callUri.setText(redirectUri) + if (event == "call redirect") + callButton.performClick() + else + callVideoButton.performClick() + } + + private fun reStart() { + Log.d(TAG, "Trigger restart") + val pm = applicationContext.packageManager + val intent = pm.getLaunchIntentForPackage(this.packageName) + this.startActivity(intent) + exitProcess(0) + } + + override fun onPrepareOptionsMenu(menu: Menu): Boolean { + if(Utils.propertyGet("sys.rito.debug") == "1") { + if (Build.VERSION.SDK_INT >= 29) + menu.findItem(R.id.logcat).setVisible(true) + } + return super.onPrepareOptionsMenu(menu) + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + if(Utils.propertyGet("sys.rito.debug") == "1") { + menuInflater.inflate(R.menu.main_menu, menu) + } + + // main layout 툴바 상단 아이콘 숨김 - by ritoseo +/* + menuInflater.inflate(R.menu.rec_icon, menu) + recIcon = menu.findItem(R.id.recIcon) + if (BaresipService.isRecOn) + recIcon!!.setIcon(R.drawable.rec_on) + else + recIcon!!.setIcon(R.drawable.rec_off) + + menuInflater.inflate(R.menu.mic_icon, menu) + micIcon = menu.findItem(R.id.micIcon) + if (BaresipService.isMicMuted) + micIcon!!.setIcon(R.drawable.mic_off) + else + micIcon!!.setIcon(R.drawable.mic_on) + + menuInflater.inflate(R.menu.speaker_icon, menu) + speakerIcon = menu.findItem(R.id.speakerIcon) + if (Utils.isSpeakerPhoneOn(am)) + speakerIcon!!.setIcon(R.drawable.speaker_on) + else + speakerIcon!!.setIcon(R.drawable.speaker_off) + + */ + + return super.onCreateOptionsMenu(menu) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + + when (item.itemId) { + + R.id.recIcon -> { + if (Call.call("connected") == null) { + BaresipService.isRecOn = !BaresipService.isRecOn + if (BaresipService.isRecOn) { + item.setIcon(R.drawable.rec_on) + Api.module_load("sndfile") + } else { + item.setIcon(R.drawable.rec_off) + Api.module_unload("sndfile") + } + } else { + Toast.makeText( + applicationContext, + R.string.rec_in_call, + Toast.LENGTH_SHORT + ).show() + } + } + + R.id.micIcon -> { + if (Call.call("connected") != null) { + BaresipService.isMicMuted = !BaresipService.isMicMuted + if (BaresipService.isMicMuted) { + item.setIcon(R.drawable.mic_off) + Api.calls_mute(true) + } else { + item.setIcon(R.drawable.mic_on) + Api.calls_mute(false) + } + } + } + + R.id.speakerIcon -> { + if (Build.VERSION.SDK_INT >= 31) + Log.d(TAG, "Toggling speakerphone when dev/mode is " + + "${am.communicationDevice!!.type}/${am.mode}") + Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(this), am) + setSpeakerButtonAndIcon() + } + + R.id.config -> { + configRequest.launch(Intent(this, ConfigActivity::class.java)) + } + + R.id.accounts -> { + val i = Intent(this, AccountsActivity::class.java) + val b = Bundle() + b.putString("aor", aorSpinner.tag.toString()) + i.putExtras(b) + accountsRequest.launch(i) + } + + R.id.backup -> { + when { + Build.VERSION.SDK_INT >= 29 -> pickupFileFromDownloads("backup") + ContextCompat.checkSelfPermission( + this, + WRITE_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_GRANTED -> { + Log.d(TAG, "Write External Storage permission granted") + val path = Utils.downloadsPath("baresip+.bs") + downloadsOutputUri = File(path).toUri() + askPassword(getString(R.string.encrypt_password)) + } + ActivityCompat.shouldShowRequestPermissionRationale( + this, + WRITE_EXTERNAL_STORAGE) -> { + defaultLayout.showSnackBar( + binding.root, + getString(R.string.no_backup), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE) + } + } + else -> { + requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE) + } + } + } + + R.id.restore -> { + when { + Build.VERSION.SDK_INT >= 29 -> + pickupFileFromDownloads("restore") + ContextCompat.checkSelfPermission( + this, + READ_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_GRANTED -> { + Log.d(TAG, "Read External Storage permission granted") + val path = Utils.downloadsPath("baresip+.bs") + downloadsInputUri = File(path).toUri() + askPassword(getString(R.string.decrypt_password)) + } + ActivityCompat.shouldShowRequestPermissionRationale( + this, + READ_EXTERNAL_STORAGE) -> { + defaultLayout.showSnackBar( + binding.root, + getString(R.string.no_restore), + Snackbar.LENGTH_INDEFINITE, + getString(R.string.ok) + ) { + requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE) + } + } + else -> { + requestPermissionLauncher.launch(READ_EXTERNAL_STORAGE) + } + } + } + + R.id.logcat -> { + if (Build.VERSION.SDK_INT >= 29) + pickupFileFromDownloads("logcat") + } + + R.id.about -> { + startActivity(Intent(this, AboutActivity::class.java)) + } + + R.id.restart, R.id.quit -> { + quitRestart(item.itemId == R.id.restart) + } + } + + return true + } + + private fun quitRestart(reStart: Boolean) { + Log.d(TAG, "quitRestart Restart = $reStart") + window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, + WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) + if (BaresipService.isServiceRunning) { + restart = reStart + baresipService.action = "Stop" + startService(baresipService) + } else { + finishAndRemoveTask() + if (reStart) + reStart() + else + exitProcess(0) + } + } + + private fun makeTransfer(ua: UserAgent) { + + val layout = LayoutInflater.from(this) + .inflate(R.layout.call_transfer_dialog, findViewById(android.R.id.content), false) + val blind: CheckBox = layout.findViewById(R.id.blind) + val attended: CheckBox = layout.findViewById(R.id.attended) + + val transferUri: AutoCompleteTextView = layout.findViewById(R.id.transferUri) + transferUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item, + Contact.contactNames())) + transferUri.threshold = 2 + transferUri.requestFocus() + + val builder = MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme) + with(builder) { + setView(layout) + setPositiveButton(R.string.transfer) { dialog, _ -> + imm.hideSoftInputFromWindow(transferUri.windowToken, 0) + dialog.dismiss() + var uriText = transferUri.text.toString().trim() + if (uriText.isNotEmpty()) { + val uris = Contact.contactUris(uriText) + if (uris.size > 1) { + val destinationBuilder = MaterialAlertDialogBuilder( + this@MainActivity, + R.style.AlertDialogTheme + ) + with(destinationBuilder) { + setTitle(R.string.choose_destination_uri) + setItems(uris.toTypedArray()) { _, which -> + uriText = uris[which] + transfer( + ua, + if (Utils.isTelNumber(uriText)) "tel:$uriText" else uriText, + attended.isChecked + ) + } + setNeutralButton(getString(R.string.cancel)) { _: DialogInterface, _: Int -> } + show() + } + } else { + if (uris.size == 1) + uriText = uris[0] + } + transfer(ua, if (Utils.isTelNumber(uriText)) "tel:$uriText" else uriText, + attended.isChecked) + } + } + setNeutralButton(android.R.string.cancel) { dialog, _ -> + imm.hideSoftInputFromWindow(transferUri.windowToken, 0) + dialog.cancel() + } + } + val alertDialog = builder.create() + + val call = ua.currentCall() ?: return + val blindOrAttended: RelativeLayout = layout.findViewById(R.id.blindOrAttended) + if (call.replaces()) { + blind.setOnClickListener { + if (blind.isChecked) { + attended.isChecked = false + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).text = getString(R.string.transfer) + } + } + attended.setOnClickListener { + if (attended.isChecked) { + blind.isChecked = false + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).text = getString(R.string.call) + } + } + blindOrAttended.visibility = View.VISIBLE + } else { + blindOrAttended.visibility = View.GONE + } + + // This needs to be done after dialog has been created and before it is shown + alertDialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + alertDialog.show() + } + + @RequiresApi(29) + private fun pickupFileFromDownloads(action: String) { + when (action) { + "backup" -> { + backupRequest.launch(Intent(Intent.ACTION_CREATE_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "application/octet-stream" + putExtra(Intent.EXTRA_TITLE, "baresip+_" + + SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.getDefault()).format(Date())) + putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI) + }) + } + "restore" -> { + restoreRequest.launch(Intent(Intent.ACTION_OPEN_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "application/octet-stream" + putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI) + }) + } + "logcat" -> { + logcatRequest.launch(Intent(Intent.ACTION_CREATE_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "text/plain" + putExtra(Intent.EXTRA_TITLE, "baresip_logcat_" + + SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.getDefault()).format(Date())) + putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI) + }) + } + } + } + + private fun transfer(ua: UserAgent, uriText: String, attended: Boolean) { + val uri = if (Utils.isTelUri(uriText)) + Utils.telToSip(uriText, ua.account) + else + Utils.uriComplete(uriText, ua.account.aor) + if (!Utils.checkUri(uri)) { + Utils.alertView(this@MainActivity, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_or_tel_uri), uri)) + } else { + val call = ua.currentCall() + if (call != null) { + if (attended) { + if (call.hold()) { + call.referTo = uri + call(ua, uri, "voice", call) + } + } else { + if (!call.transfer(uri)) { + Utils.alertView(this@MainActivity, getString(R.string.notice), + String.format(getString(R.string.transfer_failed))) + } + } + showCall(ua) + } + } + } + private fun askPassword(title: String, ua: UserAgent? = null) { + val layout = LayoutInflater.from(this) + .inflate(R.layout.password_dialog, findViewById(android.R.id.content), + false) + val titleView: TextView = layout.findViewById(R.id.title) + titleView.text = title + if (ua != null) { + val messageView: TextView = layout.findViewById(R.id.message) + val message = getString(R.string.account) + " " + Utils.plainAor(activityAor) + messageView.text = message + } + val input: EditText = layout.findViewById(R.id.password) + input.requestFocus() + with (MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setView(layout) + setPositiveButton(android.R.string.ok) { dialog, _ -> + imm.hideSoftInputFromWindow(input.windowToken, 0) + dialog.dismiss() + var password = input.text.toString().trim() + if (!Account.checkAuthPass(password)) { + Toast.makeText( + applicationContext, + String.format(getString(R.string.invalid_authentication_password), password), + Toast.LENGTH_SHORT + ).show() + password = "" + } + when (title) { + getString(R.string.encrypt_password) -> + if (password != "") backup(password) + getString(R.string.decrypt_password) -> + if (password != "") restore(password) + else -> + if (password == "") { + askPassword(title, ua!!) + } else { + Api.account_set_auth_pass(ua!!.account.accp, password) + ua.account.authPass = Api.account_auth_pass(ua.account.accp) + BaresipService.aorPasswords[ua.account.aor] = ua.account.authPass + if (ua.account.regint == 0) + Api.ua_unregister(ua.uap) + else + Api.ua_register(ua.uap) + } + } + } + setNeutralButton(android.R.string.cancel) { dialog, _ -> + imm.hideSoftInputFromWindow(input.windowToken, 0) + dialog.cancel() + } + val dialog = this.create() + dialog.setCancelable(false) + dialog.setCanceledOnTouchOutside(false) + dialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + dialog.show() + } + } + + private fun askPasswords(accounts: MutableList) { + if (accounts.isNotEmpty()) { + val account = accounts.removeAt(0) + val params = account.substringAfter(">") + if ((Utils.paramValue(params, "auth_user") != "") && + (Utils.paramValue(params, "auth_pass") == "")) { + val aor = account.substringAfter("<").substringBefore(">") + val layout = LayoutInflater.from(this) + .inflate(R.layout.password_dialog, findViewById(android.R.id.content), + false) + val titleView: TextView = layout.findViewById(R.id.title) + titleView.text = getString(R.string.authentication_password) + val messageView: TextView = layout.findViewById(R.id.message) + val message = getString(R.string.account) + " " + Utils.plainAor(aor) + messageView.text = message + val input: EditText = layout.findViewById(R.id.password) + input.requestFocus() + with (MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setView(layout) + setPositiveButton(android.R.string.ok) { dialog, _ -> + imm.hideSoftInputFromWindow(input.windowToken, 0) + dialog.dismiss() + val password = input.text.toString().trim() + if (!Account.checkAuthPass(password)) { + Toast.makeText( + applicationContext, + String.format(getString(R.string.invalid_authentication_password), + password), + Toast.LENGTH_SHORT + ).show() + accounts.add(0, account) + } else { + BaresipService.aorPasswords[aor] = password + } + askPasswords(accounts) + } + setNeutralButton(android.R.string.cancel) { dialog, _ -> + imm.hideSoftInputFromWindow(input.windowToken, 0) + dialog.cancel() + BaresipService.aorPasswords[aor] = NO_AUTH_PASS + askPasswords(accounts) + } + val dialog = this.create() + dialog.setCancelable(false) + dialog.setCanceledOnTouchOutside(false) + dialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) + dialog.show() + } + } else { + askPasswords(accounts) + } + } else { + requestPermissionsLauncher.launch(permissions) + } + } + + private fun startBaresip() { + if (!BaresipService.isStartReceived) { + baresipService.action = "Start" + startService(baresipService) + if (atStartup) + moveTaskToBack(true) + } + } + + private fun backup(password: String) { + val files = arrayListOf("accounts", "config", "contacts", "call_history", + "messages", "gzrtp.zid", "cert.pem", "ca_cert", "ca_certs.crt") + File(BaresipService.filesPath).walk().forEach { + if (it.name.endsWith(".png")) + files.add(it.name) + } + val zipFile = getString(R.string.app_name_plus) + ".zip" + val zipFilePath = BaresipService.filesPath + "/$zipFile" + if (!Utils.zip(files, zipFile)) { + Log.w(TAG, "Failed to write zip file '$zipFile'") + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.backup_failed), + Utils.fileNameOfUri(applicationContext, downloadsOutputUri!!))) + return + } + val content = Utils.getFileContents(zipFilePath) + if (content == null) { + Log.w(TAG, "Failed to read zip file '$zipFile'") + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.backup_failed), + Utils.fileNameOfUri(applicationContext, downloadsOutputUri!!))) + return + } + if (!Utils.encryptToUri(applicationContext, downloadsOutputUri!!, content, password)) { + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.backup_failed), + Utils.fileNameOfUri(applicationContext, downloadsOutputUri!!))) + return + } + Utils.alertView(this, getString(R.string.info), + String.format(getString(R.string.backed_up), + Utils.fileNameOfUri(applicationContext, downloadsOutputUri!!))) + Utils.deleteFile(File(zipFilePath)) + } + + private fun restore(password: String) { + val zipFile = getString(R.string.app_name_plus) + ".zip" + val zipFilePath = BaresipService.filesPath + "/$zipFile" + val zipData = Utils.decryptFromUri(applicationContext, downloadsInputUri!!, password) + if (zipData == null) { + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.restore_failed), + Utils.fileNameOfUri(applicationContext, downloadsInputUri!!))) + return + } + if (!Utils.putFileContents(zipFilePath, zipData)) { + Log.w(TAG, "Failed to write zip file '$zipFile'") + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.restore_failed), + Utils.fileNameOfUri(applicationContext, downloadsInputUri!!))) + return + } + if (!Utils.unZip(zipFilePath)) { + Log.w(TAG, "Failed to unzip file '$zipFile'") + Utils.alertView(this, getString(R.string.error), + String.format(getString(R.string.restore_unzip_failed), "baresip+", "47.0.0")) + return + } + Utils.deleteFile(File(zipFilePath)) + + File("${BaresipService.filesPath}/recordings").walk().forEach { + if (it.name.startsWith("dump")) + Utils.deleteFile(it) + } + + CallHistoryNew.restore() + for (h in BaresipService.callHistory) + h.recording = arrayOf("", "") + CallHistoryNew.save() + + with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) { + setTitle(getString(R.string.info)) + setMessage(getString(R.string.restored)) + setPositiveButton(getText(R.string.restart)) { dialog, _ -> + quitRestart(true) + dialog.dismiss() + } + setNeutralButton(getText(R.string.cancel)) { dialog, _ -> + dialog.dismiss() + } + show() + } + } + + private fun spinToAor(aor: String) { + for (accountIndex in BaresipService.uas.indices) + if (BaresipService.uas[accountIndex].account.aor == aor) { + aorSpinner.setSelection(accountIndex) + aorSpinner.tag = aor + return + } + if (BaresipService.uas.isNotEmpty()) { + aorSpinner.setSelection(0) + aorSpinner.tag = BaresipService.uas[0].account.aor + } else { + aorSpinner.setSelection(-1) + aorSpinner.tag = "" + } + } + + private fun makeCall(kind: String, lookForContact: Boolean = true) { + callUri.setAdapter(null) + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + val aor = ua.account.aor + if (!Call.inCall()) { + var uriText = callUri.text.toString().trim() + if (uriText.isNotEmpty()) { + if (lookForContact) { + val uris = Contact.contactUris(uriText) + if (uris.size == 1) + uriText = uris[0] + else if (uris.size > 1) { + val builder = MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme) + with(builder) { + setTitle(R.string.choose_destination_uri) + setItems(uris.toTypedArray()) { _, which -> + callUri.setText(uris[which]) + makeCall(kind, false) + } + setNeutralButton(getString(R.string.cancel)) { _: DialogInterface, _: Int -> } + show() + } + return + } + } + if (Utils.isTelNumber(uriText)) + uriText = "tel:$uriText" + val uri = if (Utils.isTelUri(uriText)) { + if (ua.account.telProvider == "") { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.no_telephony_provider), aor)) + return + } + Utils.telToSip(uriText, ua.account) + } else { + Utils.uriComplete(uriText, aor) + } + if (!Utils.checkUri(uri)) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_sip_or_tel_uri), uri)) + } else if (!BaresipService.requestAudioFocus(applicationContext)) { + Toast.makeText(applicationContext, R.string.audio_focus_denied, + Toast.LENGTH_SHORT).show() + } else { + callUri.isFocusable = false + uaAdapter.notifyDataSetChanged() + callButton.visibility = View.INVISIBLE + callButton.isEnabled = false + callVideoButton.visibility = View.INVISIBLE + callVideoButton.isEnabled = false + switchVideoLayout(true) + hangupButton.visibility = View.VISIBLE + hangupButton.isEnabled = true + if (Build.VERSION.SDK_INT < 31) { + Log.d(TAG, "Setting audio mode to MODE_IN_COMMUNICATION") + am.mode = AudioManager.MODE_IN_COMMUNICATION + runCall(ua, uri, kind) + } else { + if (am.mode == AudioManager.MODE_IN_COMMUNICATION) { + runCall(ua, uri, kind) + } else { + audioModeChangedListener = AudioManager.OnModeChangedListener { mode -> + if (mode == AudioManager.MODE_IN_COMMUNICATION) { + Log.d(TAG, "Audio mode changed to MODE_IN_COMMUNICATION using " + + "device ${am.communicationDevice!!.type}") + if (audioModeChangedListener != null) { + am.removeOnModeChangedListener(audioModeChangedListener!!) + audioModeChangedListener = null + } + runCall(ua, uri, kind) + } else { + Log.d(TAG, "Audio mode changed to mode ${am.mode} using " + + "device ${am.communicationDevice!!.type}") + } + } + am.addOnModeChangedListener(mainExecutor, audioModeChangedListener!!) + Log.d(TAG, "Setting audio mode to MODE_IN_COMMUNICATION") + am.mode = AudioManager.MODE_IN_COMMUNICATION + } + } + } + } else { + val latestPeerUri = CallHistoryNew.aorLatestPeerUri(aor) + if (latestPeerUri != null) + callUri.setText(Utils.friendlyUri(this, latestPeerUri, ua.account)) + } + } + } + + private fun call(ua: UserAgent, uri: String, kind: String, onHoldCall: Call? = null): Boolean { + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + val videoDir = when { + kind == "voice" -> Api.SDP_INACTIVE + Utils.isCameraAvailable(this) -> Api.SDP_SENDRECV + else -> Api.SDP_RECVONLY + } + val callp = ua.callAlloc(0L, Api.VIDMODE_ON) + return if (callp != 0L) { + Log.d(TAG, "Adding outgoing $kind call ${ua.uap}/$callp/$uri") + val call = Call(callp, ua, uri, "out", "outgoing", Utils.dtmfWatcher(callp)) + call.onHoldCall = onHoldCall + call.setMediaDirection(Api.SDP_SENDRECV, videoDir) + call.add() + if (onHoldCall != null) + onHoldCall.newCall = call + if (call.connect(uri)) { + showCall(ua) + true + } else { + Log.w(TAG, "call_connect $callp failed") + if (onHoldCall != null) + onHoldCall.newCall = null + call.remove() + call.destroy() + showCall(ua) + false + } + } else { + Log.w(TAG, "callAlloc for ${ua.uap} to $uri failed") + false + } + } + + private fun acceptTransfer(ua: UserAgent, call: Call, uri: String) { + val newCallp = ua.callAlloc(call.callp, Api.VIDMODE_OFF) + if (newCallp != 0L) { + Log.d(TAG, "Adding outgoing call ${ua.uap}/$newCallp/$uri") + val newCall = Call(newCallp, ua, uri, "out", "transferring", + Utils.dtmfWatcher(newCallp)) + newCall.add() + if (newCall.connect(uri)) { + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + showCall(ua) + } else { + Log.w(TAG, "call_connect $newCallp failed") + call.notifySipfrag(500, "Call Error") + } + } else { + Log.w(TAG, "callAlloc for ua ${ua.uap} call ${call.callp} transfer failed") + call.notifySipfrag(500, "Call Error") + } + } + + private fun setVideoSecurityButton(security: Int) { + when (security) { + R.drawable.unlocked -> { + videoSecurityButton.setImageResource(R.drawable.unlocked_video) + } + R.drawable.locked_yellow -> { + videoSecurityButton.setImageResource(R.drawable.locked_video_yellow) + } + R.drawable.locked_green -> { + videoSecurityButton.setImageResource(R.drawable.locked_video_green) + } + } + } + + private fun runCall(ua: UserAgent, uri: String, kind: String) { + callRunnable = Runnable { + callRunnable = null + if (!call(ua, uri, kind)) { + BaresipService.abandonAudioFocus(applicationContext) + if(BaresipService.isSupportAudioCall) { + callButton.visibility = View.VISIBLE + callButton.isEnabled = true + } + callVideoButton.visibility = View.VISIBLE + callVideoButton.isEnabled = true + hangupButton.visibility = View.INVISIBLE + hangupButton.isEnabled = false + } + } + callHandler.postDelayed(callRunnable!!, BaresipService.audioDelay) + } + + private fun showCall(ua: UserAgent, showCall: Call? = null) { + val call = showCall ?: ua.currentCall() + if (call == null) { + swipeRefresh.isEnabled = true + videoLayout.visibility = View.INVISIBLE + defaultLayout.visibility = View.VISIBLE + callTitle.text = getString(R.string.outgoing_call_to_dots) + callTimer.visibility = View.INVISIBLE + if (ua.account.resumeUri != "") + callUri.setText(ua.account.resumeUri) + else + callUri.text.clear() + callUri.hint = getString(R.string.callee) + callUri.isFocusable = true + callUri.isFocusableInTouchMode = true + imm.hideSoftInputFromWindow(callUri.windowToken, 0) + callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item, + Contact.contactNames())) + securityButton.visibility = View.INVISIBLE + diverter.visibility = View.GONE + if(BaresipService.isSupportAudioCall) { + callButton.visibility = View.VISIBLE + callButton.isEnabled = true + } + + callVideoButton.visibility = View.VISIBLE + callVideoButton.isEnabled = true + hangupButton.visibility = View.INVISIBLE + answerButton.visibility = View.INVISIBLE + answerVideoButton.visibility = View.INVISIBLE + rejectButton.visibility = View.INVISIBLE + callControl.visibility = View.INVISIBLE + dialpadButton.isEnabled = true + videoButton.visibility = View.INVISIBLE + if (BaresipService.isMicMuted) { + BaresipService.isMicMuted = false + if(micIcon != null) { + micIcon!!.setIcon(R.drawable.mic_on) + } + } + onHoldNotice.visibility = View.GONE + } else { + + swipeRefresh.isEnabled = false + callUri.isFocusable = false + when (call.status) { + "outgoing", "transferring", "answered" -> { + callTitle.text = if (call.status == "answered") + getString(R.string.incoming_call_from_dots) + else + getString(R.string.outgoing_call_to_dots) + callTimer.visibility = View.INVISIBLE + callUri.setText(Utils.friendlyUri(this, call.peerUri, ua.account, + call.status == "answered")) + videoButton.visibility = View.INVISIBLE + securityButton.visibility = View.INVISIBLE + diverter.visibility = View.GONE + callButton.visibility = View.INVISIBLE + hangupButton.visibility = View.VISIBLE + hangupButton.isEnabled = true + answerButton.visibility = View.INVISIBLE + answerVideoButton.visibility = View.INVISIBLE + rejectButton.visibility = View.INVISIBLE + callControl.visibility = View.INVISIBLE + onHoldNotice.visibility = View.GONE + dialpadButton.isEnabled = false + } + "incoming" -> { + callTitle.text = getString(R.string.incoming_call_from_dots) + callTimer.visibility = View.INVISIBLE + val caller = Utils.friendlyUri(this, call.peerUri, ua.account) + callUri.setText(caller) + callUri.setAdapter(null) + videoButton.visibility = View.INVISIBLE + securityButton.visibility = View.INVISIBLE + val uri = call.diverterUri() + if (uri != "") { + diverterUri.text = Utils.friendlyUri(this, uri, ua.account) + diverter.visibility = View.VISIBLE + } else { + diverter.visibility = View.GONE + } + callButton.visibility = View.INVISIBLE + callVideoButton.visibility = View.INVISIBLE + switchVideoLayout(true) + hangupButton.visibility = View.INVISIBLE + answerButton.visibility = View.VISIBLE + answerButton.isEnabled = true + if (call.hasVideo()) { + answerVideoButton.visibility = View.VISIBLE + answerVideoButton.isEnabled = true + } else { + answerVideoButton.visibility = View.INVISIBLE + answerVideoButton.isEnabled = false + } + rejectButton.visibility = View.VISIBLE + rejectButton.isEnabled = true + callControl.visibility = View.INVISIBLE + onHoldNotice.visibility = View.GONE + dialpadButton.isEnabled = false + } + "connected" -> { + if (call.videoEnabled()) { + if (defaultLayout.visibility == View.VISIBLE) { + defaultLayout.visibility = View.INVISIBLE + videoLayout.visibility = View.VISIBLE + } + videoOnHoldNotice.visibility = if (call.held) View.VISIBLE else View.GONE + if (ua.account.mediaEnc == "") { + videoSecurityButton.visibility = View.INVISIBLE + } else { + securityButton.tag = call.security + setVideoSecurityButton(call.security) + videoSecurityButton.visibility = View.INVISIBLE // 암호화 상태 버튼 표시 안함 by ritoseo + //videoSecurityButton.visibility = View.VISIBLE + } + return + } + if (defaultLayout.visibility == View.INVISIBLE) { + videoLayout.visibility = View.INVISIBLE + defaultLayout.visibility = View.VISIBLE + } + callControl.post { + callControl.scrollTo(videoButton.left, videoButton.top) + } + if (call.referTo != "") { + callTitle.text = getString(R.string.transferring_call_to_dots) + callUri.setText(Utils.friendlyUri(this, call.referTo, ua.account)) + transferButton.isEnabled = false + } else { + if (call.dir == "out") { + callTitle.text = getString(R.string.outgoing_call_to_dots) + callUri.setText(Utils.friendlyUri(this, call.peerUri, ua.account)) + } else { + callTitle.text = getString(R.string.incoming_call_from_dots) + callUri.setText(Utils.friendlyUri(this, call.peerUri, ua.account)) + } + transferButton.isEnabled = true + } + if (call.onHoldCall == null) + transferButton.setImageResource(R.drawable.call_transfer) + else + transferButton.setImageResource(R.drawable.call_transfer_execute) + startCallTimer(call) + callTimer.visibility = View.VISIBLE + videoButton.setImageResource(R.drawable.video_on) + videoButton.visibility = View.VISIBLE + videoButton.isClickable = true + if (ua.account.mediaEnc == "") { + securityButton.visibility = View.INVISIBLE + } else { + securityButton.tag = call.security + securityButton.setImageResource(call.security) + securityButton.visibility = View.VISIBLE + } + callButton.visibility = View.INVISIBLE + callVideoButton.visibility = View.INVISIBLE + + switchVideoLayout(true) + + hangupButton.visibility = View.VISIBLE + hangupButton.isEnabled = true + answerButton.visibility = View.INVISIBLE + answerVideoButton.visibility = View.INVISIBLE + rejectButton.visibility = View.INVISIBLE + /* + if (call.onhold) { + holdButton.setImageResource(R.drawable.resume) + } else { + holdButton.setImageResource(R.drawable.call_hold) + } + dialpadButton.setImageResource(R.drawable.dialpad_on) + dialpadButton.tag = "on" + dialpadButton.isEnabled = false + infoButton.isEnabled = true + callControl.visibility = View.VISIBLE + Handler(Looper.getMainLooper()).postDelayed({ + onHoldNotice.visibility = if (call.held) View.VISIBLE else View.GONE + }, 100) + + if (call.held) { + imm.hideSoftInputFromWindow(dtmf.windowToken, 0) + dtmf.isEnabled = false + } else { + dtmf.isEnabled = true + dtmf.requestFocus() + if (resources.configuration.orientation == ORIENTATION_PORTRAIT) + imm.showSoftInput(dtmf, InputMethodManager.SHOW_IMPLICIT) + if (dtmfWatcher != null) dtmf.removeTextChangedListener(dtmfWatcher) + dtmfWatcher = call.dtmfWatcher + dtmf.addTextChangedListener(dtmfWatcher) + } + + */ + } + } + } + } + + private fun updateIcons(acc: Account) { + if (acc.missedCalls) + callsButton.setImageResource(R.drawable.calls_missed) + else + callsButton.setImageResource(R.drawable.calls) + if (acc.unreadMessages) + messagesButton.setImageResource(R.drawable.messages_unread) + else + messagesButton.setImageResource(R.drawable.messages) + if (acc.vmUri != "") { + if (acc.vmNew > 0) + voicemailButton.setImageResource(R.drawable.voicemail_new) + else + voicemailButton.setImageResource(R.drawable.voicemail) + voicemailButton.visibility = View.VISIBLE + voicemailButtonSpace.visibility = View.VISIBLE + } else { + voicemailButton.visibility = View.GONE + voicemailButtonSpace.visibility =View.GONE + } + } + + private fun restoreActivities() { + if (BaresipService.activities.isEmpty()) return + Log.d(TAG, "Activity stack ${BaresipService.activities}") + val activity = BaresipService.activities[0].split(",") + BaresipService.activities.removeAt(0) + when (activity[0]) { + "main" -> { + if (!Call.inCall() && (BaresipService.activities.size > 1)) + restoreActivities() + } + "config" -> { + configRequest.launch(Intent(this, ConfigActivity::class.java)) + } + "audio" -> { + startActivity(Intent(this, AudioActivity::class.java)) + } + "accounts" -> { + val i = Intent(this, AccountsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + i.putExtras(b) + accountsRequest.launch(i) + } + "account" -> { + val i = Intent(this, AccountActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + i.putExtras(b) + accountsRequest.launch(i) + } + "codecs" -> { + val i = Intent(this, CodecsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + b.putString("media", activity[2]) + i.putExtras(b) + startActivity(i) + } + "about" -> { + startActivity(Intent(this, AboutActivity::class.java)) + } + "contacts" -> { + val i = Intent(this, ContactsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + i.putExtras(b) + contactsRequest.launch(i) + + } + "contact" -> { + val i = Intent(this, ContactActivity::class.java) + val b = Bundle() + if (activity[1] == "true") { + b.putBoolean("new", true) + b.putString("uri", activity[2]) + } else { + b.putBoolean("new", false) + b.putInt("index", activity[2].toInt()) + } + i.putExtras(b) + startActivity(i) + } + "chats" -> { + val i = Intent(this, ChatsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + i.putExtras(b) + chatRequests.launch(i) + } + "chat" -> { + val i = Intent(this, ChatActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + b.putString("peer", activity[2]) + b.putBoolean("focus", activity[3] == "true") + i.putExtras(b) + chatRequests.launch(i) + } + "calls" -> { + val i = Intent(this, CallsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + i.putExtras(b) + callsRequest.launch(i) + } + "call_details" -> { + val i = Intent(this, CallDetailsActivity::class.java) + val b = Bundle() + b.putString("aor", activity[1]) + b.putString("peer", activity[2]) + b.putInt("position", activity[3].toInt()) + i.putExtras(b) + callsRequest.launch(i) + } + } + return + } + + private fun saveCallUri() { + if (BaresipService.uas.isNotEmpty() && aorSpinner.selectedItemPosition >= 0) { + val ua = BaresipService.uas[aorSpinner.selectedItemPosition] + if (ua.calls().isEmpty()) + ua.account.resumeUri = callUri.text.toString() + else + ua.account.resumeUri = "" + } + } + + private fun startCallTimer(call: Call) { + callTimer.stop() + callTimer.base = SystemClock.elapsedRealtime() - (call.duration() * 1000L) + callTimer.start() + } + + companion object { + + var accountRequest: ActivityResultLauncher? = null + var activityAor = "" + + lateinit var videoView: VideoView + + } + + init { + if (!BaresipService.libraryLoaded) { + Log.i(TAG, "Loading baresip library") + System.loadLibrary("baresip") + BaresipService.libraryLoaded = true + } + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Message.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Message.kt new file mode 100644 index 0000000..8378bd5 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Message.kt @@ -0,0 +1,72 @@ +package com.tutpro.baresip.plus + +import java.io.* +import java.util.ArrayList + +class Message(val aor: String, val peerUri: String, val message: String, val timeStamp: Long, + var direction: Int, var responseCode: Int, var responseReason: String, + var new: Boolean): Serializable { + + fun add() { + BaresipService.messages.add(this) + var count = 0 + var firstIndex = -1 + for (i in BaresipService.messages.indices) + if (BaresipService.messages[i].aor == this.aor) { + if (count == 0) firstIndex = i + count++ + if (count > MESSAGE_HISTORY_SIZE) { + break + } + } + if (count > MESSAGE_HISTORY_SIZE) + BaresipService.messages.removeAt(firstIndex) + } + + companion object { + + const val MESSAGE_HISTORY_SIZE = 100 + + fun messages(): ArrayList { + return BaresipService.messages + } + + fun clear(aor: String) { + val it = BaresipService.messages.iterator() + while (it.hasNext()) if (it.next().aor == aor) it.remove() + } + + fun save() { + val file = File(BaresipService.filesPath, "messages") + try { + val fos = FileOutputStream(file) + val oos = ObjectOutputStream(fos) + oos.writeObject(BaresipService.messages) + oos.close() + fos.close() + Log.d(TAG, "Saved ${BaresipService.messages.size} messages") + } catch (e: IOException) { + Log.e(TAG, "OutputStream exception: $e") + e.printStackTrace() + } + } + + fun restore() { + val file = File(BaresipService.filesPath, "messages") + if (file.exists()) { + try { + val fis = FileInputStream(file) + val ois = ObjectInputStream(fis) + @Suppress("UNCHECKED_CAST") + BaresipService.messages = ois.readObject() as ArrayList + ois.close() + fis.close() + Log.d(TAG, "Restored ${BaresipService.messages.size} messages") + } catch (e: Exception) { + Log.e(TAG, "InputStream exception: - $e") + } + } + } + + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/MessageListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/MessageListAdapter.kt new file mode 100644 index 0000000..182217a --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/MessageListAdapter.kt @@ -0,0 +1,141 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.content.DialogInterface +import android.content.Intent +import android.graphics.Typeface +import android.os.Bundle +import android.text.format.DateUtils.isToday +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.LinearLayout +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import java.text.DateFormat +import java.util.* + +class MessageListAdapter(private val ctx: Context, private val peerUri: String, + private val chatPeer: String, private val rows: ArrayList) : + ArrayAdapter(ctx, R.layout.message, rows) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val layoutView: LinearLayout = view?.findViewById(R.id.message)!! + val infoView: TextView = view?.findViewById(R.id.info)!! + val textView: TextView = view?.findViewById(R.id.text)!! + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.message, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val listener = View.OnClickListener { + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_POSITIVE -> { + val i = Intent(ctx, ContactActivity::class.java) + val b = Bundle() + b.putBoolean("new", true) + b.putString("uri", peerUri) + i.putExtras(b) + ctx.startActivity(i) + } + DialogInterface.BUTTON_NEGATIVE -> { + Message.messages().remove(rows[position]) + Message.save() + rows.removeAt(position) + this.notifyDataSetChanged() + //if (rows.size == 0) { + // listView.removeFooterView(footerView) + //} + } + DialogInterface.BUTTON_NEUTRAL -> { + } + } + } + val builder = MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme) + if (chatPeer == peerUri) + with (builder) { + setTitle(R.string.confirmation) + setMessage(String.format(ctx.getString(R.string.long_message_question), + peerUri)) + setNeutralButton(ctx.getString(R.string.cancel), dialogClickListener) + setNegativeButton(ctx.getString(R.string.delete), dialogClickListener) + setPositiveButton(ctx.getString(R.string.add_contact), dialogClickListener) + show() + } + else + with (builder) { + setTitle(R.string.confirmation) + setMessage(ctx.getText(R.string.short_message_question)) + setNeutralButton(ctx.getString(R.string.cancel), dialogClickListener) + setNegativeButton(ctx.getString(R.string.delete), dialogClickListener) + show() + } + } + + viewHolder.layoutView.setOnClickListener(listener) + viewHolder.infoView.setOnClickListener(listener) + viewHolder.textView.setOnClickListener(listener) + + val message = rows[position] + + val down = message.direction == MESSAGE_DOWN + val lp = viewHolder.layoutView.layoutParams as LinearLayout.LayoutParams + val peer: String = if (down) { + lp.setMargins(0, 10, 75, 10) + viewHolder.layoutView.setBackgroundResource(R.drawable.message_in_bg) + if (chatPeer.startsWith("sip:") && + (Utils.uriHostPart(message.peerUri) == Utils.uriHostPart(message.aor))) + Utils.uriUserPart(message.peerUri) + else + chatPeer + } else { + lp.setMargins(75, 10, 0, 10) + viewHolder.layoutView.setBackgroundResource(R.drawable.message_out_bg) + ctx.getString(R.string.you) + } + + viewHolder.layoutView.layoutParams = lp + + var info: String + val cal = GregorianCalendar() + cal.timeInMillis = message.timeStamp + val fmt: DateFormat = if (isToday(message.timeStamp)) + DateFormat.getTimeInstance(DateFormat.SHORT) + else + DateFormat.getDateInstance(DateFormat.SHORT) + info = fmt.format(cal.time) + if (info.length < 6) info = "${ctx.getString(R.string.today)} $info" + info = "$info - $peer" + if (message.direction == MESSAGE_UP_FAIL) { + info = if (message.responseCode != 0) + "$info - ${ctx.getString(R.string.message_failed)}: " + "${message.responseCode} ${message.responseReason}" + else + "$info - ${ctx.getString(R.string.sending_failed)}" + viewHolder.infoView.setTextColor(ContextCompat.getColor(ctx, R.color.colorAccent)) + } + viewHolder.infoView.text = info + + viewHolder.textView.text = message.message + if (message.new) + viewHolder.textView.setTypeface(null, Typeface.BOLD) + + return rowView + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/OnSwipeTouchListener.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/OnSwipeTouchListener.kt new file mode 100644 index 0000000..589ceb1 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/OnSwipeTouchListener.kt @@ -0,0 +1,79 @@ +package com.tutpro.baresip.plus + +import android.annotation.SuppressLint +import android.content.Context +import android.view.GestureDetector +import android.view.MotionEvent +import android.view.View +import kotlin.math.abs + +open class OnSwipeTouchListener(ctx: Context) : View.OnTouchListener { + + private val gestureDetector: GestureDetector + + companion object { + private const val SWIPE_THRESHOLD = 100 + private const val SWIPE_VELOCITY_THRESHOLD = 100 + } + + init { + gestureDetector = GestureDetector(ctx, GestureListener()) + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouch(view: View?, event: MotionEvent): Boolean { + return try { + gestureDetector.onTouchEvent(event) + } catch (e: Exception) { + Log.e(TAG, "onTouch exception $e") + e.printStackTrace() + false + } + } + + private inner class GestureListener : GestureDetector.SimpleOnGestureListener() { + + override fun onDown(event: MotionEvent): Boolean { + return true + } + + override fun onFling(e1: MotionEvent?, e2: MotionEvent, velX: Float, velY: Float): Boolean { + var result = false + try { + val diffY = e2.y - e1!!.y + val diffX = e2.x - e1.x + if (abs(diffX) > abs(diffY)) { + if (abs(diffX) > SWIPE_THRESHOLD && abs(velX) > SWIPE_VELOCITY_THRESHOLD) { + if (diffX > 0) { + onSwipeRight() + } else { + onSwipeLeft() + } + result = true + } + } else if (abs(diffY) > SWIPE_THRESHOLD && abs(velY) > SWIPE_VELOCITY_THRESHOLD) { + result = if (diffY > 0) { + onSwipeBottom() + false + } else { + onSwipeTop() + true + } + } + } catch (e: Exception) { + Log.e(TAG, "onFling exception $e") + // e.printStackTrace() + } + return result + } + + } + + open fun onSwipeRight() {} + + open fun onSwipeLeft() {} + + open fun onSwipeTop() {} + + open fun onSwipeBottom() {} +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Preferences.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Preferences.kt new file mode 100644 index 0000000..5daeb68 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Preferences.kt @@ -0,0 +1,17 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import androidx.preference.PreferenceManager + +class Preferences(context: Context) { + + companion object { + private const val DISPLAY_THEME = "com.tutpro.baresip.plus.DISPLAY_THEME" + } + + private val preferences = PreferenceManager.getDefaultSharedPreferences(context) + + var displayTheme = preferences.getInt(DISPLAY_THEME, -1) + set(value) = preferences.edit().putInt(DISPLAY_THEME, value).apply() + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/ServiceEvent.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/ServiceEvent.kt new file mode 100644 index 0000000..7181e6a --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/ServiceEvent.kt @@ -0,0 +1,3 @@ +package com.tutpro.baresip.plus + +class ServiceEvent (val event: String, val params: ArrayList, val timeStamp: Long) \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/TaskReceiver.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/TaskReceiver.kt new file mode 100644 index 0000000..c29e512 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/TaskReceiver.kt @@ -0,0 +1,56 @@ +package com.tutpro.baresip.plus + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent + +class TaskReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + + Log.d(TAG, "TaskReceiver: received intent ${intent.action}") + + when (intent.action) { + + "com.tutpro.baresip.plus.REGISTER", "com.tutpro.baresip.plus.UNREGISTER" -> { + var aor = intent.getStringExtra("aor") + if (aor == null) { + Log.i(TAG, "TaskReceiver: 'aor' extra is missing") + return + } + if (!aor.startsWith("sip:")) + aor = "sip:$aor" + val ua = UserAgent.ofAor(aor) + if (ua == null) { + Log.i(TAG, "TaskReceiver: user agent of AoR $aor is not found") + return + } + val acc = ua.account + if (intent.action == "com.tutpro.baresip.plus.REGISTER") { + Log.d(TAG, "TaskReceiver: registering $aor") + Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL) + Api.ua_register(ua.uap) + acc.regint = Api.account_regint(acc.accp) + AccountsActivity.saveAccounts() + } else { + Log.d(TAG, "TaskReceiver: un-registering $aor") + Api.account_set_regint(acc.accp, 0) + Api.ua_unregister(ua.uap) + acc.regint = Api.account_regint(acc.accp) + AccountsActivity.saveAccounts() + } + } + + "com.tutpro.baresip.plus.QUIT" -> { + Log.d(TAG, "TaskReceiver: quiting") + val baresipService = Intent(context, BaresipService::class.java) + if (BaresipService.isServiceRunning) { + baresipService.action = "Stop" + context.startService(baresipService) + } + } + + } + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/UaSpinnerAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/UaSpinnerAdapter.kt new file mode 100644 index 0000000..1715d8f --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/UaSpinnerAdapter.kt @@ -0,0 +1,57 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.graphics.Typeface +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.ImageView +import android.widget.TextView + +class UaSpinnerAdapter(cxt: Context, private val uas: ArrayList) : + ArrayAdapter(cxt, android.R.layout.simple_spinner_item, uas) { + + private val layoutInflater = LayoutInflater.from(context) + + private class ViewHolder(view: View?) { + val textView: TextView = view?.findViewById(R.id.spinnerText)!! + val imageView: ImageView = view?.findViewById(R.id.spinnerImage)!! + } + + override fun getDropDownView(position: Int, view: View?, parent: ViewGroup): View { + return getImageForPosition(position, view, parent) + } + + override fun getView(position: Int, view: View?, parent: ViewGroup): View { + return getImageForPosition(position, view, parent) + } + + private fun getImageForPosition(position: Int, view: View?, parent: ViewGroup): View { + + val viewHolder: ViewHolder + val rowView: View + + if (view == null) { + rowView = layoutInflater.inflate(R.layout.account_spinner, parent, false) + viewHolder = ViewHolder(rowView) + rowView.tag = viewHolder + } else { + rowView = view + viewHolder = rowView.tag as ViewHolder + } + + val ua = uas[position] + viewHolder.textView.text = if (ua.account.nickName != "") + ua.account.nickName + "(${ua.account.aor.split(":")[1]})" + else + ua.account.aor.split(":")[1] + viewHolder.textView.textSize = 17f + if (BaresipService.uas.size > 1 && ua.calls().isNotEmpty()) + viewHolder.textView.setTypeface(null, Typeface.BOLD) + viewHolder.imageView.setImageResource(ua.status) + + return rowView + } + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/UserAgent.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/UserAgent.kt new file mode 100644 index 0000000..9f81608 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/UserAgent.kt @@ -0,0 +1,94 @@ +package com.tutpro.baresip.plus + +class UserAgent(val uap: Long) { + + val account = Account(Api.ua_account(uap)) + var status = R.drawable.circle_white + + fun callAlloc(xCall: Long, videoMode: Int): Long { + return Api.ua_call_alloc(uap, xCall, videoMode) + } + + fun add() { + BaresipService.uas.add(this) + } + + fun remove() { + BaresipService.uas.remove(this) + } + + fun calls(dir: String = ""): ArrayList { + val result = ArrayList() + for (c in BaresipService.calls) + if ((c.ua == this) && ((dir == "") || c.dir == dir)) result.add(c) + return result + } + + fun currentCall(): Call? { + for (c in BaresipService.calls) + if (c.ua == this) + return c + return null + } + + companion object { + + fun ofAor(aor: String): UserAgent? { + for (ua in BaresipService.uas) + if (ua.account.aor == aor) return ua + return null + } + + fun ofDomain(domain: String): UserAgent? { + for (ua in BaresipService.uas) + if (Utils.aorDomain(ua.account.aor) == domain) return ua + return null + } + + fun ofUap(uap: Long): UserAgent? { + for (ua in BaresipService.uas) + if (ua.uap == uap) return ua + return null + } + + fun uaAlloc(uri: String): UserAgent? { + val uap = Api.ua_alloc(uri) + return if (uap == 0L) { + Log.e(TAG, "Failed to allocate UserAgent for $uri") + null + } else { + UserAgent(uap) + } + } + + fun findAorIndex(aor: String): Int? { + for (i in BaresipService.uas.indices) { + if (BaresipService.uas[i].account.aor == aor) return i + } + return null + } + + fun register() { + for (ua in BaresipService.uas) { + if (ua.account.regint > 0) { + if (Api.ua_register(ua.uap) != 0) + Log.d(TAG, "Failed to register ${ua.account.aor}") + } + } + } + + /* Added by ritoseo */ + fun deleteAllUas() { + for (ua in BaresipService.uas) { + println("Trying to remove[${ua.uap}") + Api.ua_unregister(ua.uap) + Api.ua_destroy(ua.uap) + ua.remove() + } + + BaresipService.uas.clear() + } + /********************/ + } +} + diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/Utils.kt new file mode 100644 index 0000000..32b2270 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/Utils.kt @@ -0,0 +1,1355 @@ +package com.tutpro.baresip.plus + +import android.Manifest +import android.app.Activity +import android.app.KeyguardManager +import android.content.ContentResolver +import android.content.ContentValues +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.content.res.Configuration +import android.graphics.Bitmap +import android.graphics.Bitmap.createScaledBitmap +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.graphics.Color +import android.media.AudioAttributes +import android.hardware.camera2.CameraAccessException +import android.hardware.camera2.CameraCharacteristics +import android.hardware.camera2.CameraManager +import android.hardware.camera2.CameraMetadata.LENS_FACING_BACK +import android.hardware.camera2.CameraMetadata.LENS_FACING_FRONT +import android.media.AudioDeviceInfo +import android.media.AudioManager +import android.media.MediaPlayer +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.net.Uri +import android.net.wifi.WifiManager +import android.os.Build +import android.os.Bundle +import android.os.Environment +import android.provider.DocumentsContract +import android.provider.MediaStore +import android.provider.OpenableColumns +import android.text.Editable +import android.text.TextWatcher +import android.text.format.DateUtils +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.activity.result.ActivityResultLauncher +import androidx.annotation.RequiresApi +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.core.net.toUri +import androidx.core.text.isDigitsOnly +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.ProcessLifecycleOwner +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar +import java.io.* +import java.lang.reflect.Method +import java.net.Inet4Address +import java.net.InetAddress +import java.net.NetworkInterface +import java.net.SocketException +import java.nio.ByteBuffer +import java.nio.channels.FileChannel +import java.security.SecureRandom +import java.text.DateFormat +import java.util.* +import java.util.concurrent.Executor +import java.util.zip.ZipEntry +import java.util.zip.ZipFile +import java.util.zip.ZipOutputStream +import javax.crypto.Cipher +import javax.crypto.SecretKeyFactory +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.PBEKeySpec +import javax.crypto.spec.SecretKeySpec + +object Utils { + + fun getNameValue(string: String, name: String): ArrayList { + val lines = string.split("\n") + val result = ArrayList() + for (line in lines) { + if (line.startsWith(name)) + result.add((line.substring(name.length).trim()).split(" \t")[0]) + } + return result + } + + fun removeLinesStartingWithString(lines: String, string: String): String { + var result = "" + for (line in lines.split("\n")) + if (!line.startsWith(string) && (line.isNotEmpty())) result += line + "\n" + return result + } + + fun alertView(context: Context, title: String, message: String, action: () -> (Unit) = {}) { + with(MaterialAlertDialogBuilder(context, R.style.AlertDialogTheme)) { + setTitle(title) + setMessage(message) + setPositiveButton(R.string.ok) { dialog, _ -> + dialog.dismiss() + action() + } + val dialog = this.create() + dialog.show() + } + } + + fun uriHostPart(uri: String): String { + return if (uri.contains("@")) { + uri.substringAfter("@") + .substringBefore(":") + .substringBefore(";") + .substringBefore("?") + .substringBefore(">") + } else { + val parts = uri.split(":") + when (parts.size) { + 2 -> parts[1].substringBefore(";") + .substringBefore("?") + .substringBefore(">") + 3 -> parts[1] + else -> "" + } + } + } + + fun uriUserPart(uri: String): String { + return if (uri.contains("@")) + uri.substringAfter(":").substringBefore("@") + else + "" + } + + fun uriMatch(firstUri: String, secondUri: String): Boolean { + if (firstUri.startsWith("tel:")) + return firstUri == secondUri || firstUri.substringAfter(":") == uriUserPart(secondUri) + if (firstUri.startsWith("sip:")) + return uriUserPart(firstUri) == uriUserPart(secondUri) && + uriHostPart(firstUri) == uriHostPart(secondUri) + return false + } + + private fun uriParams(uri: String): List { + val params = uri.split(";") + return if (params.size == 1) listOf() else params.subList(1, params.size) + } + + fun friendlyUri(ctx: Context, uri: String, account: Account, e164Check: Boolean = true): String { + var u = Contact.contactName(uri) + if (u != uri) + return u + if (e164Check) { + val e164Uri = e164Uri(uri, account.countryCode) + u = Contact.contactName(e164Uri) + if (u != e164Uri) + return u + } + if (u.contains("@")) { + val user = uriUserPart(u) + val host = uriHostPart(u) + val params = uriParams(u).filter{it != "transport=udp"} + return if (host == aorDomain(account.aor) || params.contains("user=phone")) + user + else if (host == "anonymous.invalid") + ctx.getString(R.string.anonymous) + else if (host == "unknown.invalid") + ctx.getString(R.string.unknown) + else + if (params.isEmpty()) + "$user@$host" + else + "$user@$host;" + params.joinToString(";") + } + if (uri.startsWith("<") && (uri.endsWith(">"))) + u = uri.substring(1).substringBeforeLast(">") + u = u.substringBefore("?") + u = u.replace(":5060", "") + u = u.replace(";transport=udp", "", true) + return u + } + + fun e164Uri(uri: String, countryCode: String): String { + if (countryCode == "") return uri + val scheme = uri.substring(0, 4) + val userPart = uriUserPart(uri) + return if (userPart.isDigitsOnly()) { + when { + userPart.startsWith("00") -> uri.replace("$scheme$userPart", + scheme + userPart.substring(2)) + userPart.startsWith("0") -> uri.replace("${scheme}0", + "$scheme$countryCode") + else -> uri.replace(scheme, "$scheme$countryCode") + } + } else + uri + } + + fun uriComplete(uri: String, aor: String): String { + val res = if (!uri.startsWith("sip:")) "sip:$uri" else uri + return if (checkUriUser(uri)) "$res@${aorDomain(aor)}" else res + } + + private fun String.replace(vararg pairs: Pair): String = + pairs.fold(this) { acc, (old, new) -> acc.replace(old, new, ignoreCase = true) } + + fun uriUnescape(uri: String): String { + return uri.replace("%2B" to "+", "%3A" to ":", "%3B" to ";", "%40" to "@", "%3D" to "=") + } + + fun aorDomain(aor: String): String { + return uriHostPart(aor) + } + + fun plainAor(aor: String): String { + return uriUserPart(aor) + "@" + uriHostPart(aor) + } + + fun checkAor(aor: String): Boolean { + if (!checkSipUri(aor)) return false + val params = uriParams(aor) + return params.isEmpty() || + ((params.size == 1) && + params[0] in arrayOf("transport=udp", "transport=tcp", "transport=tls")) + } + + private fun checkTransport(transport: String, transports: Set): Boolean { + return transport.split("=")[0] == "transport" && + transport.split("=")[1].lowercase() in transports + } + + fun checkStunUri(uri: String): Boolean { + if (uri.substringBefore(":").lowercase() !in setOf("stun", "stuns", "turn", "turns")) + return false + return checkHostPort(uri.substringAfter(":").substringBefore("?")) && + (uri.indexOf("?") == -1 || + checkTransport(uri.substringAfter("?"), setOf("udp", "tcp"))) + } + + fun checkIpV4(ip: String): Boolean { + return Regex("^(([0-1]?[0-9]{1,2}\\.)|(2[0-4][0-9]\\.)|(25[0-5]\\.)){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$").matches(ip) + } + + private fun checkIpV6(ip: String): Boolean { + return Regex("^(([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4})$").matches(ip) + } + + private fun checkIpv6InBrackets(bracketedIp: String): Boolean { + return bracketedIp.startsWith("[") && bracketedIp.endsWith("]") && + checkIpV6(bracketedIp.substring(1, bracketedIp.length - 2)) + } + + fun checkUriUser(user: String): Boolean { + val escaped = """%(\d|A|B|C|D|E|F|a|b|c|d|e|f){2}""".toRegex() + escaped.replace(user, "").forEach { + if (!(it.isLetterOrDigit() || "-_.!~*\'()&=+\$,;?/".contains(it))) return false } + return user.isNotEmpty() && !checkIpV4(user) && !checkIpV6(user) + } + + fun checkDomain(domain: String): Boolean { + val parts = domain.split(".") + for (p in parts) { + if (p.endsWith("-") || p.startsWith("-") || + !Regex("^[-a-zA-Z0-9]+\$").matches(p)) + return false + } + return true + } + + private fun checkPort(port: String): Boolean { + val number = port.toIntOrNull() ?: return false + return (number > 0) && (number < 65536) + } + + fun checkIpPort(ipPort: String): Boolean { + return if (ipPort.startsWith("[")) + checkIpv6InBrackets(ipPort.substringBeforeLast(":")) && + checkPort(ipPort.substringAfterLast(":")) + else + checkIpV4(ipPort.substringBeforeLast(":")) && + checkPort(ipPort.substringAfterLast(":")) + } + + private fun checkDomainPort(domainPort: String): Boolean { + return checkDomain(domainPort.substringBeforeLast(":")) && + checkPort(domainPort.substringAfterLast(":")) + } + + private fun checkHostPort(hostPort: String): Boolean { + return checkIpV4(hostPort) || checkIpv6InBrackets(hostPort) || checkDomain(hostPort) || + checkIpPort(hostPort) || checkDomainPort(hostPort) + } + + private fun checkParams(params: String): Boolean { + for (param in params.split(";")) + if (!checkParam(param)) return false + return true + } + + private fun checkParam(param: String): Boolean { + val nameValue = param.split("=") + if (nameValue.size == 1) + return checkParamChars(nameValue[0]) + if (nameValue.size == 2) { + if (nameValue[0] == "transport") + return setOf("udp", "tcp", "tls", "wss").contains(nameValue[1].lowercase()) + return checkParamChars(nameValue[1]) + } + return false + } + + private fun checkParamChars(s: String): Boolean { + // Does not currently allow escaped characters + val allowed = "[]/:&+$-_.!~*'()" + for (c in s) + if (!allowed.contains(c) && !c.isLetterOrDigit()) + return false + return true + } + + fun paramValue(params: String, name: String): String { + if (params == "") return "" + for (param in params.split(";")) + if (param.substringBefore("=") == name) return param.substringAfter("=") + return "" + } + + fun paramExists(params: String, name: String): Boolean { + for (param in params.split(";")) + if (param.substringBefore("=") == name) return true + return false + } + + fun checkHostPortParams(hpp: String) : Boolean { + val restParams = hpp.split(";", limit = 2) + return if (restParams.size == 1) + checkHostPort(restParams[0]) + else + checkHostPort(restParams[0]) && checkParams(restParams[1]) + } + + private fun checkSipUri(uri: String): Boolean { + return if (uri.startsWith("sip:")) { + val userRest = uri.substring(4).split("@") + when (userRest.size) { + 1 -> + checkHostPortParams(userRest[0]) + 2 -> + checkUriUser(userRest[0]) && checkHostPortParams(userRest[1]) + else -> false + } + } else { + false + } + } + + fun isTelNumber(no: String): Boolean { + return no.isNotEmpty() && Regex("^([+][1-9])?[0-9- (),#]{0,24}\$").matches(no) + } + + fun isTelUri(uri: String): Boolean { + return uri.startsWith("tel:") && isTelNumber(uri.substring(4)) + } + + fun checkUri(uri: String): Boolean { + return checkSipUri(uri) || isTelUri(uri) + } + + fun telToSip(telUri: String, account: Account): String { + val hostPart = if (account.telProvider != "") + account.telProvider + else + aorDomain(account.aor) + return "sip:" + telUri.substring(4) + .filterNot{setOf('-', ' ', '(', ')').contains(it)} + .replace("#", "%23") + + "@" + hostPart + ";user=phone" + } + + fun checkName(name: String): Boolean { + return name.isNotEmpty() && name == String(name.toByteArray(), Charsets.UTF_8) && + name.lines().size == 1 && !name.contains('"') + } + + fun checkCountryCode(cc: String): Boolean { + return cc.startsWith("+") && cc.length > 1 && cc.length < 5 && + cc.substring(1).isDigitsOnly() && cc[1] != '0' + } + + fun checkServerVal(server: String): Boolean { + val parts = server.replace(Regex("[(][^()\\\\]+[)]"), "") + .trim().split("\\s+".toRegex()) + for (part in parts) + if (!checkProduct(part)) + return false + return true + } + + private fun checkProduct(product: String): Boolean { + val parts = product.split("/", limit = 2) + return if (parts.count() == 2) + checkToken(parts[0]) && checkToken(parts[1]) + else + checkToken(parts[0]) + } + + private fun checkToken(token: String): Boolean { + return Regex("^[-a-zA-Z0-9.!%*_+`'~]+\$").matches(token) + } + + fun setAvatar(ctx: Context, imageView: ImageView, textView: TextView, uri: String) { + + when (val contact = Contact.findContact(uri)) { + + is Contact.BaresipContact -> { + val avatarImage = contact.avatarImage + if (avatarImage != null) { + imageView.setImageBitmap(avatarImage) + } else { + textView.background.setTint(contact.color) + if (contact.name.isNotEmpty()) + textView.text = "${contact.name[0]}" + else + textView.text = "" + imageView.setImageBitmap(bitmapFromView(textView)) + } + } + + is Contact.AndroidContact -> { + val thumbnailUri = contact.thumbnailUri + if (thumbnailUri != null) { + imageView.setImageURI(thumbnailUri) + } else { + textView.background.setTint(contact.color) + if (contact.name.isNotEmpty()) + textView.text = "${contact.name[0]}" + else + textView.text = "" + imageView.setImageBitmap(bitmapFromView(textView)) + } + } + + null -> { + val bitmap = BitmapFactory.decodeResource(ctx.resources, R.drawable.person_image) + imageView.setImageBitmap(bitmap) + } + + } + } + + @Suppress("unused") + fun checkIfName(name: String): Boolean { + if ((name.length < 2) || !name.first().isLetter()) return false + for (c in name) + if (!c.isLetterOrDigit()) return false + return true + } + + fun implode(list: List, sep: String): String { + var res = "" + for (s in list) { + res = if (res == "") + s + else + res + sep + s + } + return res + } + + fun isVisible(): Boolean { + return ProcessLifecycleOwner.get().lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED) + } + + fun isHotSpotOn(wm: WifiManager): Boolean { + try { + val method: Method = wm.javaClass.getDeclaredMethod("isWifiApEnabled") + method.isAccessible = true + return method.invoke(wm) as Boolean + } catch (ignored: Throwable) { + } + return false + } + + fun hotSpotAddresses(): Map { + val result = mutableMapOf() + try { + val interfaces: Enumeration = NetworkInterface.getNetworkInterfaces() + while (interfaces.hasMoreElements()) { + val iface: NetworkInterface = interfaces.nextElement() + val ifName = iface.name + Log.d(TAG, "Found interface with name $ifName") + if (ifName.startsWith("ap") || ifName.contains("wlan")) { + val addresses: Enumeration = iface.inetAddresses + while (addresses.hasMoreElements()) { + val inetAddress: InetAddress = addresses.nextElement() + if (inetAddress.isSiteLocalAddress) + result[inetAddress.hostAddress!!] = ifName + } + if (result.isNotEmpty()) return result + } + } + } catch (ex: SocketException) { + Log.e(TAG, "hotSpotAddresses SocketException: $ex") + } catch (ex: NullPointerException) { + Log.e(TAG, "hotSpotAddresses NullPointerException: $ex") + } + return result + } + + fun dtmfWatcher(callp: Long): TextWatcher { + return object : TextWatcher { + override fun beforeTextChanged(sequence: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(sequence: CharSequence, start: Int, before: Int, count: Int) { + val text = sequence.subSequence(start, start + count).toString() + if (text.isNotEmpty()) { + val digit = text[0] + val call = Call.ofCallp(callp) + if (call == null) { + Log.w(TAG, "dtmfWatcher did not find call $callp") + } else { + Log.d(TAG, "Got DTMF digit '$digit'") + if (((digit >= '0') && (digit <= '9')) || (digit == '*') || (digit == '#')) + call.sendDigit(digit) + } + } + } + override fun afterTextChanged(sequence: Editable) { + // KEYCODE_REL + // call_send_digit(callp, 4.toChar()) + } + } + } + + fun checkPermissions(ctx: Context, permissions: Array) : Boolean { + for (p in permissions) { + if (ContextCompat.checkSelfPermission(ctx, p) != PackageManager.PERMISSION_GRANTED) { + Log.d(TAG, "Permission $p is denied") + return false + } else { + Log.d(TAG, "Permission $p is granted") + } + } + return true + } + + fun isCameraAvailable(ctx: Context): Boolean { + return BaresipService.supportedCameras && + ContextCompat.checkSelfPermission(ctx, Manifest.permission.CAMERA) == + PackageManager.PERMISSION_GRANTED + } + + fun View.showSnackBar( + view: View, + msg: String, + length: Int, + actionMessage: CharSequence?, + action: (View) -> Unit + ) { + val snackBar = Snackbar.make(view, msg, length) + if (actionMessage != null) { + snackBar.setAction(actionMessage) { + action(this) + }.show() + } else { + snackBar.show() + } + } + + fun copyAssetToFile(context: Context, asset: String, path: String) { + try { + val `is` = context.assets.open(asset) + val os = FileOutputStream(path) + val buffer = ByteArray(512) + var byteRead: Int = `is`.read(buffer) + while (byteRead != -1) { + os.write(buffer, 0, byteRead) + byteRead = `is`.read(buffer) + } + os.fd.sync() // added by ritoseo + os.close() + `is`.close() + } catch (e: IOException) { + Log.e(TAG, "Failed to copy asset '$asset' to file: $e") + } + } + + fun deleteFile(file: File) { + if (file.exists()) { + try { + file.delete() + } catch (e: IOException) { + Log.e(TAG, "Could not delete file ${file.absolutePath}") + } + } + } + + fun getFileContents(filePath: String): ByteArray? { + return try { + File(filePath).readBytes() + } catch (e: FileNotFoundException) { + Log.e(TAG, "File '$filePath' not found: ${e.printStackTrace()}") + null + } catch (e: Exception) { + Log.e(TAG, "Failed to read file '$filePath': ${e.printStackTrace()}") + null + } + } + + fun putFileContents(filePath: String, contents: ByteArray): Boolean { + try { + File(filePath).writeBytes(contents) + + RandomAccessFile(filePath, "rw").use { raf -> + raf.fd.sync() // eMMC에 확실히 기록 + } + } + catch (e: IOException) { + Log.e(TAG, "Failed to write file '$filePath': $e") + return false + } + return true + } + + fun File.copyInputStreamToFile(inputStream: InputStream): Boolean { + try { + this.outputStream().use { fileOut -> + inputStream.copyTo(fileOut) + } + return true + } + catch (e: IOException) { + Log.e(TAG, "Failed to write file '${this.absolutePath}': $e") + } + return false + } + + @RequiresApi(29) + fun selectInputFile(request: ActivityResultLauncher) { + val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "*/*" + putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI) + } + request.launch(intent) + } + + @RequiresApi(29) + @Suppress("unused") + fun selectOutputFile(title: String) { + Intent(Intent.ACTION_CREATE_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "application/octet-stream" + putExtra(Intent.EXTRA_TITLE, title) + putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI) + } + } + + fun downloadsPath(fileName: String): String { + return Environment.getExternalStoragePublicDirectory( + Environment.DIRECTORY_DOWNLOADS).path + "/$fileName" + } + + fun fileNameOfUri(ctx: Context, uri: Uri): String { + val cursor = ctx.contentResolver.query(uri, null, null, null, null) + var name = "" + if (cursor != null) { + val index = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME) + cursor.moveToFirst() + name = cursor.getString(index) + cursor.close() + } + return if (name == "") + "$uri".substringAfterLast("/") + else + name + } + + fun saveBitmap(bitmap: Bitmap, file: File): Boolean { + if (file.exists()) file.delete() + try { + val out = FileOutputStream(file) + val scaledBitmap = createScaledBitmap(bitmap, 96, 96, true) + scaledBitmap.compress(Bitmap.CompressFormat.PNG, 100, out) + out.flush() + out.fd.sync() // added by ritoseo + out.close() + Log.d(TAG, "Saved bitmap to ${file.absolutePath} of length ${file.length()}") + } catch (e: Exception) { + Log.e(TAG, "Failed to save bitmap to ${file.absolutePath}") + return false + } + return true + } + + class Crypto(val salt: ByteArray, val iter: Int, val iv: ByteArray, val data: ByteArray): Serializable { + companion object { + @Suppress("ConstPropertyName") + private const val serialVersionUID: Long = -29238082928391L + } + } + + private fun encrypt(content: ByteArray, password: CharArray): ByteArray? { + fun intToByteArray(int: Int): ByteArray { + val bytes = ByteArray(2) + bytes[0] = (int shr 0).toByte() + bytes[1] = (int shr 8).toByte() + return bytes + } + try { + val sr = SecureRandom() + val salt = ByteArray(128) + sr.nextBytes(salt) + val iterationCount = Random().nextInt(1024) + 512 + val pbKeySpec = PBEKeySpec(password, salt, iterationCount, 128) + val secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1") + val keyBytes = secretKeyFactory.generateSecret(pbKeySpec).encoded + val keySpec = SecretKeySpec(keyBytes, "AES") + val ivRandom = SecureRandom() + val iv = ByteArray(16) + ivRandom.nextBytes(iv) + val ivSpec = IvParameterSpec(iv) + val cipher = Cipher.getInstance("AES/CBC/PKCS7Padding") + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec) + val cipherData = cipher.doFinal(content) + val res = ByteArray(128 + 2 + 16 + cipherData.size) + salt.copyInto(res, 0) + intToByteArray(iterationCount).copyInto(res, salt.size) + iv.copyInto(res, salt.size + 2) + cipherData.copyInto(res, salt.size + 2 + iv.size) + return res + } catch (e: Exception) { + Log.e(TAG, "Encrypt failed: ${e.printStackTrace()}") + } + return null + } + + private fun decrypt(content: ByteArray, password: CharArray): ByteArray? { + fun byteArrayToInt(bytes: ByteArray) : Int { + return (bytes[1].toInt() and 0xff shl 8) or (bytes[0].toInt() and 0xff) + } + try { + val salt = content.copyOfRange(0, 128) + val iterationCount = byteArrayToInt(content.copyOfRange(128, 130)) + val iv = content.copyOfRange(130, 146) + val data = content.copyOfRange(146, content.size) + val pbKeySpec = PBEKeySpec(password, salt, iterationCount, 128) + val secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1") + val keyBytes = secretKeyFactory.generateSecret(pbKeySpec).encoded + val keySpec = SecretKeySpec(keyBytes, "AES") + val cipher = Cipher.getInstance("AES/CBC/PKCS7Padding") + val ivSpec = IvParameterSpec(iv) + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec) + return cipher.doFinal(data) + } catch (e: Exception) { + Log.e(TAG, "Decrypt failed: ${e.printStackTrace()}") + } + return null + } + + private fun decryptOld(obj: Crypto, password: CharArray): ByteArray? { + var plainData: ByteArray? = null + try { + val pbKeySpec = PBEKeySpec(password, obj.salt, obj.iter, 128) + val secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1") + val keyBytes = secretKeyFactory.generateSecret(pbKeySpec).encoded + val keySpec = SecretKeySpec(keyBytes, "AES") + val cipher = Cipher.getInstance("AES/CBC/PKCS7Padding") + val ivSpec = IvParameterSpec(obj.iv) + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec) + plainData = cipher.doFinal(obj.data) + } catch (e: Exception) { + Log.e(TAG, "Decrypt failed: ${e.printStackTrace()}") + } + return plainData + } + + fun encryptToUri(ctx: Context, uri: Uri, content: ByteArray, password: String): Boolean { + val obj = encrypt(content, password.toCharArray()) + val stream = ctx.contentResolver.openOutputStream(uri) as FileOutputStream + try { + ObjectOutputStream(stream).use { + it.writeObject(obj) + } + } catch (e: Exception) { + Log.w(TAG, "encryptToUri failed: $e") + return false + } + return true + } + + fun decryptFromUri(ctx: Context, uri: Uri, password: String): ByteArray? { + var plainData: ByteArray? = null + var stream: FileInputStream + try { + stream = ctx.contentResolver.openInputStream(uri) as FileInputStream + } catch(e: Exception) { + Log.w(TAG, "decryptFromUri could not open stream: $e") + return null + } + try { + ObjectInputStream(stream).use { + val content = it.readObject() as ByteArray + plainData = decrypt(content, password.toCharArray()) + } + stream.close() + } catch (e: Exception) { + Log.w(TAG, "decryptFromUri as ByteArray failed: $e") + stream.close() + try { + stream = ctx.contentResolver.openInputStream(uri) as FileInputStream + ObjectInputStream(stream).use { + val obj = it.readObject() as Crypto + plainData = decryptOld(obj, password.toCharArray()) + } + stream.close() + } catch (e: Exception) { + Log.w(TAG, "decryptFromUri as Crypto failed: $e") + } + } + return plainData + } + + fun zip(fileNames: ArrayList, zipFileName: String): Boolean { + val zipFilePath = BaresipService.filesPath + "/" + zipFileName + try { + ZipOutputStream(BufferedOutputStream(FileOutputStream(zipFilePath))).use { out -> + val data = ByteArray(1024) + for (fileName in fileNames) { + val filePath = BaresipService.filesPath + "/" + fileName + if (File(filePath).exists()) { + FileInputStream(filePath).use { fi -> + BufferedInputStream(fi).use { origin -> + val entry = ZipEntry(fileName) + out.putNextEntry(entry) + while (true) { + val readBytes = origin.read(data) + if (readBytes == -1) break + out.write(data, 0, readBytes) + } + } + } + } + } + } + } catch (e: IOException) { + Log.e(TAG, "Failed to zip file '$zipFilePath': $e") + return false + } + return true + } + + fun unZip(zipFilePath: String): Boolean { + val allFiles = listOf("accounts", "history", "config", "contacts", "messages", "uuid", + "gzrtp.zid", "cert.pem", "ca_cert", "ca_certs.crt") + val zipFiles = mutableListOf() + try { + ZipFile(File(zipFilePath)).use { zip -> + zip.entries().asSequence().forEach { entry -> + val entryName = if (entry.name.startsWith("/")) + entry.name.substringAfterLast("/") + else + entry.name + zipFiles.add(entryName) + zip.getInputStream(entry).use { input -> + File(BaresipService.filesPath + "/" + entryName).outputStream().use { output -> + input.copyTo(output) + } + } + } + } + } catch (e: IOException) { + Log.e(TAG, "Failed to unzip file '$zipFilePath': $e") + return false + } + (allFiles - zipFiles.toSet()).iterator().forEach { + deleteFile(File(BaresipService.filesPath, it)) + } + return true + } + + fun requestDismissKeyguard(activity: Activity) { + val keyguardManager = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + keyguardManager.requestDismissKeyguard(activity, null) + } + + @Suppress("unused") + fun dumpIntent(intent: Intent) { + val bundle: Bundle = intent.extras ?: return + val keys = bundle.keySet() + val it = keys.iterator() + Log.d(TAG, "Dumping intent start") + while (it.hasNext()) { + val key = it.next() + Log.d(TAG, "[" + key + "=" + bundle.getBundle(key) + "]") + } + Log.d(TAG, "Dumping intent finish") + } + + fun randomColor(): Int { + val rnd = Random() + return Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), + rnd.nextInt(256)) + } + + fun addActivity(activity: String) { + if ((BaresipService.activities.size == 0) || (BaresipService.activities[0] != activity)) + BaresipService.activities.add(0, activity) + } + + fun supportedCameras(ctx: Context): Map { + val cameras = mutableMapOf() + val cm = ctx.getSystemService(AppCompatActivity.CAMERA_SERVICE) as CameraManager + try { + for (id in cm.cameraIdList) { + if(id == "0") { + cameras[id] = LENS_FACING_BACK; + Log.e(TAG, "[RITO] cameraIdList id: ${id}") + } else if(id == "120") { + cameras[id] = LENS_FACING_FRONT; + Log.e(TAG, "[RITO] cameraIdList id: ${id}") + } else + continue + + val chars = cm.getCameraCharacteristics(id) + val level = chars.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) + if ((level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL) || + (level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3)) { + val dir = chars.get(CameraCharacteristics.LENS_FACING) + if (dir != null) cameras[id] = dir + } + + + + //cameras[id] = LENS_FACING_BACK; + } + } catch (e: CameraAccessException) { + Log.e(TAG, "Could not get supportedCameras: ${e.printStackTrace()}") + } + return cameras + } + + @Throws(IOException::class) + fun savePicture(ctx: Context, bitmap: Bitmap, name: String) { + if (Build.VERSION.SDK_INT >= 29) { + val contentValues = ContentValues() + contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name) + contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/png") + contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES) + val resolver: ContentResolver = ctx.contentResolver + val contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI + val uri = resolver.insert(contentUri, contentValues) + ?: throw IOException("Failed to create new MediaStore record") + val stream = resolver.openOutputStream(uri) + ?: throw IOException("Failed to open output stream") + if (!bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream)) { + resolver.delete(uri, null, null) + stream.close() + throw IOException("Failed to save bitmap") + } + stream.close() + } else { + val imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + val stream = FileOutputStream(File(imagesDir, name)) + if (!bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream)) { + stream.close() + throw IOException("Failed to save bitmap") + } + stream.close() + } + } + + fun relativeTime(ctx: Context, time: GregorianCalendar): String { + return if (DateUtils.isToday(time.timeInMillis)) { + val fmt = DateFormat.getTimeInstance(DateFormat.SHORT) + ctx.getString(R.string.today) + "\n" + fmt.format(time.time) + } else { + val month = time.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault()) + val day = time.get(Calendar.DAY_OF_MONTH) + val currentYear = Calendar.getInstance().get(Calendar.YEAR) + if (time.get(Calendar.YEAR) == currentYear) { + val fmt = DateFormat.getTimeInstance(DateFormat.SHORT) + "$month $day" + "\n" + fmt.format(time.time) + } else { + "$month $day" + "\n" + time.get(Calendar.YEAR) + } + } + } + + fun bitmapFromView(view: View): Bitmap { + val bitmap = Bitmap.createBitmap(view.layoutParams.width, view.layoutParams.height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + view.layout(0, 0, view.layoutParams.width, view.layoutParams.height) + view.draw(canvas) + return bitmap + } + + fun isSpeakerPhoneOn(am: AudioManager): Boolean { + return if (Build.VERSION.SDK_INT >= 31) + am.communicationDevice!!.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + else + @Suppress("DEPRECATION") + am.isSpeakerphoneOn + } + + private fun setSpeakerPhone(executor: Executor, am: AudioManager, enable: Boolean) { + if (Build.VERSION.SDK_INT > 31) { + val current = am.communicationDevice!!.type + Log.d(TAG, "Current com dev/mode is $current/${am.mode}") + var speakerDevice: AudioDeviceInfo? = null + if (enable) { + for (device in am.availableCommunicationDevices) + if (device.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { + speakerDevice = device + break + } + } else { + for (device in am.availableCommunicationDevices) + if (device.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { + speakerDevice = device + break + } + } + if (speakerDevice == null) { + Log.w(TAG,"Could not find requested communication device") + return + } + if (current != speakerDevice.type) { + if (speakerDevice.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { + clearCommunicationDevice(am) + Log.d(TAG, "Setting com device to TYPE_BUILTIN_EARPIECE") + if (!am.setCommunicationDevice(speakerDevice)) + Log.e(TAG, "Could not set com device") + if (BaresipService.audioFocusRequest != null && am.mode == AudioManager.MODE_NORMAL) { + Log.d(TAG, "Setting mode to communication") + am.mode = AudioManager.MODE_IN_COMMUNICATION + } + } else { + // Currently at API levels 31+, speakerphone needs normal mode + if (am.mode == AudioManager.MODE_NORMAL) { + Log.d(TAG, "Setting com device to ${speakerDevice.type} in MODE_NORMAL") + if (!am.setCommunicationDevice(speakerDevice)) + Log.e(TAG, "Could not set com device") + } else { + val normalListener = object : AudioManager.OnModeChangedListener { + override fun onModeChanged(mode: Int) { + if (mode == AudioManager.MODE_NORMAL) { + am.removeOnModeChangedListener(this) + Log.d( + TAG, "Setting com device to ${speakerDevice.type}" + + " in mode ${am.mode}" + ) + if (!am.setCommunicationDevice(speakerDevice)) + Log.e(TAG, "Could not set com device") + } + } + } + am.addOnModeChangedListener(executor, normalListener) + Log.d(TAG, "Setting mode to NORMAL") + am.mode = AudioManager.MODE_NORMAL + } + } + Log.d(TAG, "New com device/mode is ${am.communicationDevice!!.type}/${am.mode}") + } + } else { + @Suppress("DEPRECATION") + am.isSpeakerphoneOn = enable + Log.d(TAG, "Speakerphone is $enable") + } + } + + fun toggleSpeakerPhone(executor: Executor, am: AudioManager) { + if (Build.VERSION.SDK_INT >= 31) { + if (am.communicationDevice!!.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) + setSpeakerPhone(executor, am, true) + else if (am.communicationDevice!!.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) + setSpeakerPhone(executor, am, false) + } else { + @Suppress("DEPRECATION") + setSpeakerPhone(executor, am, !am.isSpeakerphoneOn) + } + } + + @RequiresApi(Build.VERSION_CODES.S) + fun setCommunicationDevice(am: AudioManager, type: Int) { + val current = am.communicationDevice!!.type + Log.d(TAG, "Current com dev/mode $current/${am.mode}") + for (device in am.availableCommunicationDevices) + if (device.type == type) { + am.setCommunicationDevice(device) + break + } + Log.d(TAG, "New com dev/mode ${am.communicationDevice!!.type}/${am.mode}") + } + + private fun clearCommunicationDevice(am: AudioManager) { + if (Build.VERSION.SDK_INT >= 31) { + am.clearCommunicationDevice() + } else { + @Suppress("DEPRECATION") + if (am.isSpeakerphoneOn) + am.isSpeakerphoneOn = false + } + } + + @Suppress("unused") + fun playFile(ctx: Context, path: String) { + Log.d(TAG, "Playing file $path") + MediaPlayer().apply { + setAudioAttributes( + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + ) + setOnPreparedListener { + Log.d(TAG, "Starting MediaPlayer") + it.start() + Log.d(TAG, "MediaPlayer started") + } + setOnCompletionListener { + Log.d(TAG, "Stopping MediaPlayer") + it.stop() + it.release() + } + try { + Log.d(TAG, "Preparing $path") + setDataSource(ctx, path.toUri()) + prepareAsync() + } catch (e: IllegalArgumentException) { + Log.e(TAG, "MediaPlayer IllegalArgumentException: ${e.printStackTrace()}") + } catch (e: IOException) { + Log.e(TAG, "MediaPlayer IOException: ${e.printStackTrace()}") + } catch (e: Exception) { + Log.e(TAG, "MediaPlayer Exception: ${e.printStackTrace()}") + } + } + } + + fun isDarkTheme(ctx: Context): Boolean { + return ctx.resources.configuration.uiMode and + Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES + } + + fun readFileToByteBuffer(filePath: String): ByteBuffer { + val file = RandomAccessFile(filePath, "r") // 읽기 모드로 파일 열기 + val channel: FileChannel = file.channel + val buffer = ByteBuffer.allocate(channel.size().toInt()) // 파일 크기만큼 ByteBuffer 할당 + channel.read(buffer) // 파일 내용을 ByteBuffer에 읽기 + buffer.flip() // 읽기 모드로 변경 + channel.close() + file.close() + return buffer + } + + fun saveRGB565AsJPG(context: Context, rgb565Data: ByteBuffer, width: Int, height: Int, fileName: String) { + // RGB565 포맷의 빈 Bitmap 생성 + val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565) + + try { + // ByteBuffer를 사용하여 RGB565 데이터를 Bitmap에 복사 + bitmap.copyPixelsFromBuffer(rgb565Data) + + // 저장할 파일 경로 설정 + val file = File(fileName) + + try { + FileOutputStream(file).use { fos -> + // Bitmap을 JPG 형식으로 저장 (품질 90%) + bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos) + fos.flush() + //println("JPEG 파일 저장 완료: ${file.absolutePath}") + } + } catch (e: IOException) { + e.printStackTrace() + } + } catch(e: java.lang.Exception) { + + } + } + + fun copyFile(sourcePath: String, destinationPath: String): Boolean { + return try { + FileInputStream(sourcePath).use { input -> + FileOutputStream(destinationPath).use { output -> + val buffer = ByteArray(1024) // 1KB 버퍼 + var length: Int + while (input.read(buffer).also { length = it } > 0) { + output.write(buffer, 0, length) + } + + output.fd.sync() + } + } + + val destFile = File(destinationPath) + destFile.setReadable(true, false) + + true // 성공적으로 복사 완료 + } catch (e: IOException) { + //e.printStackTrace() + false // 예외 발생 시 복사 실패 + } + } + + fun propertySet(key: String, value: String) { + try { + val systemProperties = Class.forName("android.os.SystemProperties") + val setMethod = systemProperties.getMethod("set", String::class.java, String::class.java) + setMethod.invoke(systemProperties, key, value) + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } catch (e: Exception) { + e.printStackTrace() + } + } + + fun propertyGet(key: String): String { + var result = "" + try { + val systemProperties = Class.forName("android.os.SystemProperties") + val getMethod = systemProperties.getMethod("get", String::class.java) + result = getMethod.invoke(systemProperties, key) as String + } catch (e: IllegalArgumentException) { + result = "" + e.printStackTrace() + Log.e(TAG, "IllegalArgumentException: ${e.message}") + } catch (e: Exception) { + result = "" + e.printStackTrace() + Log.e(TAG, "Exception: ${e.message}") + } + return result + } + + fun getAppVersion(context: Context): String { + return try { + val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0) + val versionName = packageInfo.versionName + "$versionName" + } catch (e: PackageManager.NameNotFoundException) { + "Unknown Version" + } + } + + fun deleteFiles(directoryPath: String, fileExt: String) { + val directory = File(directoryPath) + + if (directory.exists() && directory.isDirectory) { + directory.listFiles { file -> file.extension.equals(fileExt, ignoreCase = true) } + ?.forEach { file -> + if (file.delete()) { + println("${file.name} 삭제됨") + } else { + println("${file.name} 삭제 실패") + } + } + } else { + println("디렉토리가 존재하지 않거나 유효하지 않습니다.") + } + } + + fun checkDisplayConnection(idx : Int): String { + val connId = idx + 1 + val file = File("/sys/class/drm/card0-HDMI-A-${connId}/status") // 파일 경로 설정 + file.bufferedReader().use { reader -> + val line = reader.readLine() // 첫 번째 줄 읽기 + return line + } + } + + fun checkCameraConnection(idx : Int): String { + if(idx == 0) { + val file = File("/d/hdmirx/status") // 파일 경로 설정 + file.bufferedReader().use { reader -> + val line = reader.readLine() // 첫 번째 줄 읽기 + return line.split(":")[1].trim() + } + } else if(idx == 1) { + val file = File("/sys/module/lt6911uxc/parameters/status") // 파일 경로 설정 + file.bufferedReader().use { reader -> + val line = reader.readLine() // 첫 번째 줄 읽기 + if(line.startsWith("1")) + return "plugin" + else + return "plugout" + } + } + + return "plugout" + } + + fun getEthernetInfo(context: Context): MutableMap { + val netInfo = mutableMapOf() + val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager + + cm?.allNetworks?.forEach { network -> + val networkCapabilities = cm.getNetworkCapabilities(network) + if (networkCapabilities != null && networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) { + val linkProperties = cm.getLinkProperties(network) + linkProperties?.let { + // Gateway (Default Route) + it.routes.forEach { route -> + if (route.isDefaultRoute) { + val value = route.gateway.toString() + Log.w("Network", "Gateway: ${route.gateway}") + netInfo["gateway"] = value.substring(1) + } + } + + // DNS Servers + it.dnsServers.forEach { dns -> + val value = dns.hostAddress + Log.w("Network", "DNS: $value") + if (value != "0.0.0.0") { + netInfo["dns"] = value + } + } + + // Get the local IPv4 address and subnet mask + try { + NetworkInterface.getNetworkInterfaces()?.toList()?.forEach { networkInterface -> + if (networkInterface.isUp && !networkInterface.isLoopback) { + networkInterface.inetAddresses.toList().forEach { inetAddress -> + if (inetAddress is Inet4Address) { + val ip = inetAddress.hostAddress + Log.w("Network", "Local IP Address: $ip") + netInfo["ip"] = ip + + // Subnet Mask (Netmask) + val prefixLength = it.linkAddresses[0].prefixLength + val netmask = calculateNetmask(prefixLength) + Log.w("Network", "Netmask: $netmask") + netInfo["netmask"] = netmask + } + } + } + } + } catch (e: SocketException) { + e.printStackTrace() + } + } + } + } + + return netInfo + } + + fun calculateNetmask(prefixLength: Int): String { + val mask = (0xFFFFFFFF shl (32 - prefixLength)) + return listOf( + (mask shr 24) and 0xFF, + (mask shr 16) and 0xFF, + (mask shr 8) and 0xFF, + mask and 0xFF + ).joinToString(".") + } + + +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/plus/VideoView.kt b/app/src/main/kotlin/com/tutpro/baresip/plus/VideoView.kt new file mode 100644 index 0000000..2f79413 --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/plus/VideoView.kt @@ -0,0 +1,112 @@ +package com.tutpro.baresip.plus + +import android.content.Context +import android.util.AttributeSet +import android.view.Surface +import android.view.SurfaceHolder +import android.view.SurfaceView +import android.widget.ImageView + +class VideoView(val context: Context) { + + external fun set_surface(surface: Surface?) + external fun set_surfaceSelf(surface: Surface?) + external fun on_start() + external fun on_resume() + external fun on_pause() + external fun on_stop() + external fun get_frameFormat(): Int // added by ritoseo + + private val surfaceHolderCallback: SurfaceHolderCallback? + private val surfaceHolderCallbackSelf: SurfaceHolderCallbackSelf? + val surfaceView: View + val surfaceSelfView: View + val standbyView: ImageView + var afterCreate = false + + init { + surfaceHolderCallback = SurfaceHolderCallback() + surfaceHolderCallbackSelf = SurfaceHolderCallbackSelf() + + surfaceSelfView = View(surfaceHolderCallbackSelf, context) + surfaceView = View(surfaceHolderCallback, context) + standbyView = ImageView(context) + standbyView.setImageResource(R.drawable.osvc_splash) + } + + inner class View: SurfaceView { + constructor(callback: SurfaceHolder.Callback, context: Context) : super(context) { + holder.addCallback(callback) + } + + constructor(callback: SurfaceHolder.Callback, context: Context, attrs: AttributeSet) : + super(context, attrs) { + holder.addCallback(callback) + } + + constructor(callback: SurfaceHolder.Callback, context: Context, attrs: AttributeSet, defStyle: Int) : + super(context, attrs, defStyle) { + holder.addCallback(callback) + } + + constructor(callback: SurfaceHolder.Callback, context: Context, attrs: AttributeSet, defStyle: Int, defStyleRes: Int) : + super(context, attrs, defStyle, defStyleRes) { + holder.addCallback(callback) + } + } + + inner class SurfaceHolderCallback: SurfaceHolder.Callback { + + override fun surfaceCreated(holder: SurfaceHolder) { + Log.d(TAG, "Surface created") + afterCreate = true + } + + override fun surfaceChanged(holder: SurfaceHolder, format: Int, w: Int, h: Int) { + Log.d(TAG, "Surface changed") + set_surface(holder.surface) + if (afterCreate) { + for (call in Call.calls()) + if (call.hasVideo()) { + if (call.startVideoDisplay() != 0) + Log.e(TAG, "Failed to start video display") + break + } + + /* Added by ritoseo */ +// surfaceView.setScaleX(1920f / 1280f) +// surfaceView.setScaleY(1080f / 720f) + /********************/ + afterCreate = false + } + } + + override fun surfaceDestroyed(holder: SurfaceHolder) { + Log.d(TAG, "Surface destroyed") + for (call in Call.calls()) + if (call.hasVideo()) + call.stopVideoDisplay() + set_surface(null) + } + + } + + + inner class SurfaceHolderCallbackSelf: SurfaceHolder.Callback { + + override fun surfaceCreated(holder: SurfaceHolder) { + Log.d(TAG, "SurfaceSelf created") + } + + override fun surfaceChanged(holder: SurfaceHolder, format: Int, w: Int, h: Int) { + Log.d(TAG, "SurfaceSelf changed") + set_surfaceSelf(holder.surface) + } + + override fun surfaceDestroyed(holder: SurfaceHolder) { + Log.d(TAG, "SurfaceSelf destroyed") + set_surfaceSelf(null) + } + + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_action_check.png b/app/src/main/res/drawable-hdpi/ic_action_check.png new file mode 100644 index 0000000..3dd87d5 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_check.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat.png b/app/src/main/res/drawable-hdpi/ic_stat.png new file mode 100644 index 0000000..8243d73 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_call.png b/app/src/main/res/drawable-hdpi/ic_stat_call.png new file mode 100644 index 0000000..fe82d6d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_call.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_call_end.png b/app/src/main/res/drawable-hdpi/ic_stat_call_end.png new file mode 100644 index 0000000..5bcc20b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_call_end.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_delete.png b/app/src/main/res/drawable-hdpi/ic_stat_delete.png new file mode 100644 index 0000000..08df7d8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_delete.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_message.png b/app/src/main/res/drawable-hdpi/ic_stat_message.png new file mode 100644 index 0000000..f6822da Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_message.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_phone_missed.png b/app/src/main/res/drawable-hdpi/ic_stat_phone_missed.png new file mode 100644 index 0000000..2796f0f Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_phone_missed.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_reply.png b/app/src/main/res/drawable-hdpi/ic_stat_reply.png new file mode 100644 index 0000000..5b53455 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_reply.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_save.png b/app/src/main/res/drawable-hdpi/ic_stat_save.png new file mode 100644 index 0000000..34b7ab1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_save.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_check.png b/app/src/main/res/drawable-mdpi/ic_action_check.png new file mode 100644 index 0000000..c9cc502 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_check.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat.png b/app/src/main/res/drawable-mdpi/ic_stat.png new file mode 100644 index 0000000..19d3e3e Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_call.png b/app/src/main/res/drawable-mdpi/ic_stat_call.png new file mode 100644 index 0000000..962d811 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_call.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_call_end.png b/app/src/main/res/drawable-mdpi/ic_stat_call_end.png new file mode 100644 index 0000000..4150353 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_call_end.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_delete.png b/app/src/main/res/drawable-mdpi/ic_stat_delete.png new file mode 100644 index 0000000..8f10392 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_delete.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_message.png b/app/src/main/res/drawable-mdpi/ic_stat_message.png new file mode 100644 index 0000000..ed25696 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_message.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_phone_missed.png b/app/src/main/res/drawable-mdpi/ic_stat_phone_missed.png new file mode 100644 index 0000000..958254d Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_phone_missed.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_reply.png b/app/src/main/res/drawable-mdpi/ic_stat_reply.png new file mode 100644 index 0000000..5df1ed8 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_reply.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_save.png b/app/src/main/res/drawable-mdpi/ic_stat_save.png new file mode 100644 index 0000000..b707a33 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_save.png differ diff --git a/app/src/main/res/drawable-night/message_in_bg.xml b/app/src/main/res/drawable-night/message_in_bg.xml new file mode 100644 index 0000000..41c222c --- /dev/null +++ b/app/src/main/res/drawable-night/message_in_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-night/message_out_bg.xml b/app/src/main/res/drawable-night/message_out_bg.xml new file mode 100644 index 0000000..ca170a1 --- /dev/null +++ b/app/src/main/res/drawable-night/message_out_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-night/spinner_bg.xml b/app/src/main/res/drawable-night/spinner_bg.xml new file mode 100644 index 0000000..3bbad56 --- /dev/null +++ b/app/src/main/res/drawable-night/spinner_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/ic_action_check.png b/app/src/main/res/drawable-xhdpi/ic_action_check.png new file mode 100644 index 0000000..8ca726d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_check.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat.png b/app/src/main/res/drawable-xhdpi/ic_stat.png new file mode 100644 index 0000000..039bd20 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_call.png b/app/src/main/res/drawable-xhdpi/ic_stat_call.png new file mode 100644 index 0000000..8a9181c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_call.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_call_end.png b/app/src/main/res/drawable-xhdpi/ic_stat_call_end.png new file mode 100644 index 0000000..e5a7cd0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_call_end.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_delete.png b/app/src/main/res/drawable-xhdpi/ic_stat_delete.png new file mode 100644 index 0000000..a1b828b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_delete.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_message.png b/app/src/main/res/drawable-xhdpi/ic_stat_message.png new file mode 100644 index 0000000..2563516 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_message.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_phone_missed.png b/app/src/main/res/drawable-xhdpi/ic_stat_phone_missed.png new file mode 100644 index 0000000..eebfd2b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_phone_missed.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_reply.png b/app/src/main/res/drawable-xhdpi/ic_stat_reply.png new file mode 100644 index 0000000..8e06d70 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_reply.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_save.png b/app/src/main/res/drawable-xhdpi/ic_stat_save.png new file mode 100644 index 0000000..cdf6220 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_save.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_check.png b/app/src/main/res/drawable-xxhdpi/ic_action_check.png new file mode 100644 index 0000000..d47fe17 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_check.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat.png b/app/src/main/res/drawable-xxhdpi/ic_stat.png new file mode 100644 index 0000000..fcfe697 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_call.png b/app/src/main/res/drawable-xxhdpi/ic_stat_call.png new file mode 100644 index 0000000..fbb9d4e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_call.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_call_end.png b/app/src/main/res/drawable-xxhdpi/ic_stat_call_end.png new file mode 100644 index 0000000..e718293 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_call_end.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_delete.png b/app/src/main/res/drawable-xxhdpi/ic_stat_delete.png new file mode 100644 index 0000000..bd11b4c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_delete.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_message.png b/app/src/main/res/drawable-xxhdpi/ic_stat_message.png new file mode 100644 index 0000000..d1cbcd3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_message.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_phone_missed.png b/app/src/main/res/drawable-xxhdpi/ic_stat_phone_missed.png new file mode 100644 index 0000000..6994f93 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_phone_missed.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_reply.png b/app/src/main/res/drawable-xxhdpi/ic_stat_reply.png new file mode 100644 index 0000000..8d76eb3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_reply.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_save.png b/app/src/main/res/drawable-xxhdpi/ic_stat_save.png new file mode 100644 index 0000000..2741944 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_save.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_check.png b/app/src/main/res/drawable-xxxhdpi/ic_action_check.png new file mode 100644 index 0000000..781f6f6 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_check.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_call.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_call.png new file mode 100644 index 0000000..c7d6378 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_call.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_call_end.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_call_end.png new file mode 100644 index 0000000..f3fc861 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_call_end.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_delete.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_delete.png new file mode 100644 index 0000000..a8358eb Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_delete.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_message.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_message.png new file mode 100644 index 0000000..25a0765 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_message.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_phone_missed.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_phone_missed.png new file mode 100644 index 0000000..cfc5e17 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_phone_missed.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_reply.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_reply.png new file mode 100644 index 0000000..2c5ea87 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_reply.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_save.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_save.png new file mode 100644 index 0000000..f907c8e Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_stat_save.png differ diff --git a/app/src/main/res/drawable.zip b/app/src/main/res/drawable.zip new file mode 100644 index 0000000..fb3e32b Binary files /dev/null and b/app/src/main/res/drawable.zip differ diff --git a/app/src/main/res/drawable/call.xml b/app/src/main/res/drawable/call.xml new file mode 100644 index 0000000..a113377 --- /dev/null +++ b/app/src/main/res/drawable/call.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/call_down_green.xml b/app/src/main/res/drawable/call_down_green.xml new file mode 100644 index 0000000..3025e62 --- /dev/null +++ b/app/src/main/res/drawable/call_down_green.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_down_red.xml b/app/src/main/res/drawable/call_down_red.xml new file mode 100644 index 0000000..b950329 --- /dev/null +++ b/app/src/main/res/drawable/call_down_red.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_hold.xml b/app/src/main/res/drawable/call_hold.xml new file mode 100644 index 0000000..9844ec9 --- /dev/null +++ b/app/src/main/res/drawable/call_hold.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/call_missed_in.xml b/app/src/main/res/drawable/call_missed_in.xml new file mode 100644 index 0000000..41d2ff0 --- /dev/null +++ b/app/src/main/res/drawable/call_missed_in.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_missed_out.xml b/app/src/main/res/drawable/call_missed_out.xml new file mode 100644 index 0000000..15c93a8 --- /dev/null +++ b/app/src/main/res/drawable/call_missed_out.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_small.xml b/app/src/main/res/drawable/call_small.xml new file mode 100644 index 0000000..a30621e --- /dev/null +++ b/app/src/main/res/drawable/call_small.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/call_transfer.xml b/app/src/main/res/drawable/call_transfer.xml new file mode 100644 index 0000000..51cf2ad --- /dev/null +++ b/app/src/main/res/drawable/call_transfer.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/call_transfer_execute.xml b/app/src/main/res/drawable/call_transfer_execute.xml new file mode 100644 index 0000000..6c91027 --- /dev/null +++ b/app/src/main/res/drawable/call_transfer_execute.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/call_up_green.xml b/app/src/main/res/drawable/call_up_green.xml new file mode 100644 index 0000000..61ad5b8 --- /dev/null +++ b/app/src/main/res/drawable/call_up_green.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_up_red.xml b/app/src/main/res/drawable/call_up_red.xml new file mode 100644 index 0000000..0fdb1c2 --- /dev/null +++ b/app/src/main/res/drawable/call_up_red.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/call_video.xml b/app/src/main/res/drawable/call_video.xml new file mode 100644 index 0000000..8c3bdd3 --- /dev/null +++ b/app/src/main/res/drawable/call_video.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/call_video_new.xml b/app/src/main/res/drawable/call_video_new.xml new file mode 100644 index 0000000..a2a1163 --- /dev/null +++ b/app/src/main/res/drawable/call_video_new.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/calls.xml b/app/src/main/res/drawable/calls.xml new file mode 100644 index 0000000..dea2289 --- /dev/null +++ b/app/src/main/res/drawable/calls.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/calls_missed.xml b/app/src/main/res/drawable/calls_missed.xml new file mode 100644 index 0000000..9fe57e6 --- /dev/null +++ b/app/src/main/res/drawable/calls_missed.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/drawable/camera_front.xml b/app/src/main/res/drawable/camera_front.xml new file mode 100644 index 0000000..829080c --- /dev/null +++ b/app/src/main/res/drawable/camera_front.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/camera_rear.xml b/app/src/main/res/drawable/camera_rear.xml new file mode 100644 index 0000000..ec70d7f --- /dev/null +++ b/app/src/main/res/drawable/camera_rear.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml new file mode 100644 index 0000000..55866b8 --- /dev/null +++ b/app/src/main/res/drawable/circle.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/circle_green.xml b/app/src/main/res/drawable/circle_green.xml new file mode 100644 index 0000000..d47778d --- /dev/null +++ b/app/src/main/res/drawable/circle_green.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_red.xml b/app/src/main/res/drawable/circle_red.xml new file mode 100644 index 0000000..b060591 --- /dev/null +++ b/app/src/main/res/drawable/circle_red.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/circle_white.xml b/app/src/main/res/drawable/circle_white.xml new file mode 100644 index 0000000..02e9001 --- /dev/null +++ b/app/src/main/res/drawable/circle_white.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/drawable/circle_yellow.xml b/app/src/main/res/drawable/circle_yellow.xml new file mode 100644 index 0000000..2a83258 --- /dev/null +++ b/app/src/main/res/drawable/circle_yellow.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/drawable/contacts.xml b/app/src/main/res/drawable/contacts.xml new file mode 100644 index 0000000..fc8a097 --- /dev/null +++ b/app/src/main/res/drawable/contacts.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/custom_borer.xml b/app/src/main/res/drawable/custom_borer.xml new file mode 100644 index 0000000..6dbeea1 --- /dev/null +++ b/app/src/main/res/drawable/custom_borer.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/delete.xml b/app/src/main/res/drawable/delete.xml new file mode 100644 index 0000000..0d26c02 --- /dev/null +++ b/app/src/main/res/drawable/delete.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/dialpad_off.xml b/app/src/main/res/drawable/dialpad_off.xml new file mode 100644 index 0000000..432dfcf --- /dev/null +++ b/app/src/main/res/drawable/dialpad_off.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/dialpad_on.xml b/app/src/main/res/drawable/dialpad_on.xml new file mode 100644 index 0000000..a27db0e --- /dev/null +++ b/app/src/main/res/drawable/dialpad_on.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/edit.xml b/app/src/main/res/drawable/edit.xml new file mode 100644 index 0000000..d424897 --- /dev/null +++ b/app/src/main/res/drawable/edit.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/hangup.xml b/app/src/main/res/drawable/hangup.xml new file mode 100644 index 0000000..6605ad3 --- /dev/null +++ b/app/src/main/res/drawable/hangup.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/info.xml b/app/src/main/res/drawable/info.xml new file mode 100644 index 0000000..9e29873 --- /dev/null +++ b/app/src/main/res/drawable/info.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/locked_green.xml b/app/src/main/res/drawable/locked_green.xml new file mode 100644 index 0000000..e486aaf --- /dev/null +++ b/app/src/main/res/drawable/locked_green.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/locked_video_green.xml b/app/src/main/res/drawable/locked_video_green.xml new file mode 100644 index 0000000..1e3ccd0 --- /dev/null +++ b/app/src/main/res/drawable/locked_video_green.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/locked_video_yellow.xml b/app/src/main/res/drawable/locked_video_yellow.xml new file mode 100644 index 0000000..7f82bc9 --- /dev/null +++ b/app/src/main/res/drawable/locked_video_yellow.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/locked_yellow.xml b/app/src/main/res/drawable/locked_yellow.xml new file mode 100644 index 0000000..2587b98 --- /dev/null +++ b/app/src/main/res/drawable/locked_yellow.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/message.xml b/app/src/main/res/drawable/message.xml new file mode 100644 index 0000000..a8e114e --- /dev/null +++ b/app/src/main/res/drawable/message.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/message_in_bg.xml b/app/src/main/res/drawable/message_in_bg.xml new file mode 100644 index 0000000..eac3733 --- /dev/null +++ b/app/src/main/res/drawable/message_in_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/message_out_bg.xml b/app/src/main/res/drawable/message_out_bg.xml new file mode 100644 index 0000000..03aa287 --- /dev/null +++ b/app/src/main/res/drawable/message_out_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/messages.xml b/app/src/main/res/drawable/messages.xml new file mode 100644 index 0000000..4491701 --- /dev/null +++ b/app/src/main/res/drawable/messages.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/messages_unread.xml b/app/src/main/res/drawable/messages_unread.xml new file mode 100644 index 0000000..3d3e147 --- /dev/null +++ b/app/src/main/res/drawable/messages_unread.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/mic_off.xml b/app/src/main/res/drawable/mic_off.xml new file mode 100644 index 0000000..2eff648 --- /dev/null +++ b/app/src/main/res/drawable/mic_off.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/mic_off_button.xml b/app/src/main/res/drawable/mic_off_button.xml new file mode 100644 index 0000000..2eff648 --- /dev/null +++ b/app/src/main/res/drawable/mic_off_button.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/mic_on.xml b/app/src/main/res/drawable/mic_on.xml new file mode 100644 index 0000000..4f84462 --- /dev/null +++ b/app/src/main/res/drawable/mic_on.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/mic_on_button.xml b/app/src/main/res/drawable/mic_on_button.xml new file mode 100644 index 0000000..79be3e2 --- /dev/null +++ b/app/src/main/res/drawable/mic_on_button.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/osvc_splash.png b/app/src/main/res/drawable/osvc_splash.png new file mode 100644 index 0000000..7788ebe Binary files /dev/null and b/app/src/main/res/drawable/osvc_splash.png differ diff --git a/app/src/main/res/drawable/person_image.png b/app/src/main/res/drawable/person_image.png new file mode 100644 index 0000000..c2cb228 Binary files /dev/null and b/app/src/main/res/drawable/person_image.png differ diff --git a/app/src/main/res/drawable/plus.xml b/app/src/main/res/drawable/plus.xml new file mode 100644 index 0000000..46e3f8a --- /dev/null +++ b/app/src/main/res/drawable/plus.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/rec_off.xml b/app/src/main/res/drawable/rec_off.xml new file mode 100644 index 0000000..ce5c9ff --- /dev/null +++ b/app/src/main/res/drawable/rec_off.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/rec_on.xml b/app/src/main/res/drawable/rec_on.xml new file mode 100644 index 0000000..2512585 --- /dev/null +++ b/app/src/main/res/drawable/rec_on.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/reorder.xml b/app/src/main/res/drawable/reorder.xml new file mode 100644 index 0000000..57af84b --- /dev/null +++ b/app/src/main/res/drawable/reorder.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/resume.xml b/app/src/main/res/drawable/resume.xml new file mode 100644 index 0000000..24dcacc --- /dev/null +++ b/app/src/main/res/drawable/resume.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/send.xml b/app/src/main/res/drawable/send.xml new file mode 100644 index 0000000..61ea51c --- /dev/null +++ b/app/src/main/res/drawable/send.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/snapshot.xml b/app/src/main/res/drawable/snapshot.xml new file mode 100644 index 0000000..c3ce76f --- /dev/null +++ b/app/src/main/res/drawable/snapshot.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/speaker_off.xml b/app/src/main/res/drawable/speaker_off.xml new file mode 100644 index 0000000..fe9d6ce --- /dev/null +++ b/app/src/main/res/drawable/speaker_off.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/speaker_off_button.xml b/app/src/main/res/drawable/speaker_off_button.xml new file mode 100644 index 0000000..cc638e5 --- /dev/null +++ b/app/src/main/res/drawable/speaker_off_button.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/speaker_on.xml b/app/src/main/res/drawable/speaker_on.xml new file mode 100644 index 0000000..b4907e4 --- /dev/null +++ b/app/src/main/res/drawable/speaker_on.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/speaker_on_button.xml b/app/src/main/res/drawable/speaker_on_button.xml new file mode 100644 index 0000000..0e955a2 --- /dev/null +++ b/app/src/main/res/drawable/speaker_on_button.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/spinner_bg.xml b/app/src/main/res/drawable/spinner_bg.xml new file mode 100644 index 0000000..a80b6da --- /dev/null +++ b/app/src/main/res/drawable/spinner_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/unlocked.xml b/app/src/main/res/drawable/unlocked.xml new file mode 100644 index 0000000..e27302b --- /dev/null +++ b/app/src/main/res/drawable/unlocked.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/unlocked_video.xml b/app/src/main/res/drawable/unlocked_video.xml new file mode 100644 index 0000000..07c1c55 --- /dev/null +++ b/app/src/main/res/drawable/unlocked_video.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/video_info.xml b/app/src/main/res/drawable/video_info.xml new file mode 100644 index 0000000..2439551 --- /dev/null +++ b/app/src/main/res/drawable/video_info.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/video_off.xml b/app/src/main/res/drawable/video_off.xml new file mode 100644 index 0000000..a9bdac3 --- /dev/null +++ b/app/src/main/res/drawable/video_off.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/video_on.xml b/app/src/main/res/drawable/video_on.xml new file mode 100644 index 0000000..33c4693 --- /dev/null +++ b/app/src/main/res/drawable/video_on.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/drawable/video_pending.xml b/app/src/main/res/drawable/video_pending.xml new file mode 100644 index 0000000..43453b0 --- /dev/null +++ b/app/src/main/res/drawable/video_pending.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/voicemail.xml b/app/src/main/res/drawable/voicemail.xml new file mode 100644 index 0000000..169f952 --- /dev/null +++ b/app/src/main/res/drawable/voicemail.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/voicemail_new.xml b/app/src/main/res/drawable/voicemail_new.xml new file mode 100644 index 0000000..76d4d7f --- /dev/null +++ b/app/src/main/res/drawable/voicemail_new.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/account_row.xml b/app/src/main/res/layout/account_row.xml new file mode 100644 index 0000000..2a3a70c --- /dev/null +++ b/app/src/main/res/layout/account_row.xml @@ -0,0 +1,34 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/account_spinner.xml b/app/src/main/res/layout/account_spinner.xml new file mode 100644 index 0000000..0e7efd9 --- /dev/null +++ b/app/src/main/res/layout/account_spinner.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml new file mode 100644 index 0000000..4b512e8 --- /dev/null +++ b/app/src/main/res/layout/activity_about.xml @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml new file mode 100644 index 0000000..203ed7e --- /dev/null +++ b/app/src/main/res/layout/activity_account.xml @@ -0,0 +1,522 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_accounts.xml b/app/src/main/res/layout/activity_accounts.xml new file mode 100644 index 0000000..38bb6a5 --- /dev/null +++ b/app/src/main/res/layout/activity_accounts.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_android_contact.xml b/app/src/main/res/layout/activity_android_contact.xml new file mode 100644 index 0000000..97ff796 --- /dev/null +++ b/app/src/main/res/layout/activity_android_contact.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_audio.xml b/app/src/main/res/layout/activity_audio.xml new file mode 100644 index 0000000..3c39878 --- /dev/null +++ b/app/src/main/res/layout/activity_audio.xml @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_call_details.xml b/app/src/main/res/layout/activity_call_details.xml new file mode 100644 index 0000000..8a60fde --- /dev/null +++ b/app/src/main/res/layout/activity_call_details.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_calls.xml b/app/src/main/res/layout/activity_calls.xml new file mode 100644 index 0000000..bf0a971 --- /dev/null +++ b/app/src/main/res/layout/activity_calls.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml new file mode 100644 index 0000000..8300af0 --- /dev/null +++ b/app/src/main/res/layout/activity_chat.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_chats.xml b/app/src/main/res/layout/activity_chats.xml new file mode 100644 index 0000000..34309fe --- /dev/null +++ b/app/src/main/res/layout/activity_chats.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_codecs.xml b/app/src/main/res/layout/activity_codecs.xml new file mode 100644 index 0000000..2db1574 --- /dev/null +++ b/app/src/main/res/layout/activity_codecs.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml new file mode 100644 index 0000000..a0e667c --- /dev/null +++ b/app/src/main/res/layout/activity_config.xml @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_contact.xml b/app/src/main/res/layout/activity_contact.xml new file mode 100644 index 0000000..85b309d --- /dev/null +++ b/app/src/main/res/layout/activity_contact.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml new file mode 100644 index 0000000..1bd03da --- /dev/null +++ b/app/src/main/res/layout/activity_contacts.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..e284aaf --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,510 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_start.xml b/app/src/main/res/layout/activity_start.xml new file mode 100644 index 0000000..f21bdc5 --- /dev/null +++ b/app/src/main/res/layout/activity_start.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/alert_title.xml b/app/src/main/res/layout/alert_title.xml new file mode 100644 index 0000000..3ff963a --- /dev/null +++ b/app/src/main/res/layout/alert_title.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/android_uri_row.xml b/app/src/main/res/layout/android_uri_row.xml new file mode 100644 index 0000000..a5da582 --- /dev/null +++ b/app/src/main/res/layout/android_uri_row.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/call_detail_row.xml b/app/src/main/res/layout/call_detail_row.xml new file mode 100644 index 0000000..fc2e876 --- /dev/null +++ b/app/src/main/res/layout/call_detail_row.xml @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/call_row.xml b/app/src/main/res/layout/call_row.xml new file mode 100644 index 0000000..ec473a6 --- /dev/null +++ b/app/src/main/res/layout/call_row.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/call_transfer_dialog.xml b/app/src/main/res/layout/call_transfer_dialog.xml new file mode 100644 index 0000000..133aa93 --- /dev/null +++ b/app/src/main/res/layout/call_transfer_dialog.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/chat_row.xml b/app/src/main/res/layout/chat_row.xml new file mode 100644 index 0000000..ea34e7d --- /dev/null +++ b/app/src/main/res/layout/chat_row.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/codec.xml b/app/src/main/res/layout/codec.xml new file mode 100644 index 0000000..6f0db4e --- /dev/null +++ b/app/src/main/res/layout/codec.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/contact_row.xml b/app/src/main/res/layout/contact_row.xml new file mode 100644 index 0000000..7e4ef8c --- /dev/null +++ b/app/src/main/res/layout/contact_row.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/custom_toast.xml b/app/src/main/res/layout/custom_toast.xml new file mode 100644 index 0000000..eda06e6 --- /dev/null +++ b/app/src/main/res/layout/custom_toast.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/layout/message.xml b/app/src/main/res/layout/message.xml new file mode 100644 index 0000000..513805e --- /dev/null +++ b/app/src/main/res/layout/message.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/password_dialog.xml b/app/src/main/res/layout/password_dialog.xml new file mode 100644 index 0000000..e10ab58 --- /dev/null +++ b/app/src/main/res/layout/password_dialog.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/presentation_layout.xml b/app/src/main/res/layout/presentation_layout.xml new file mode 100644 index 0000000..c7ca9bf --- /dev/null +++ b/app/src/main/res/layout/presentation_layout.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/layout/status_notification.xml b/app/src/main/res/layout/status_notification.xml new file mode 100644 index 0000000..7a8323c --- /dev/null +++ b/app/src/main/res/layout/status_notification.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/accounts_menu.xml b/app/src/main/res/menu/accounts_menu.xml new file mode 100644 index 0000000..9d5fd68 --- /dev/null +++ b/app/src/main/res/menu/accounts_menu.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/menu/call_icon.xml b/app/src/main/res/menu/call_icon.xml new file mode 100644 index 0000000..45f31c9 --- /dev/null +++ b/app/src/main/res/menu/call_icon.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/menu/calls_menu.xml b/app/src/main/res/menu/calls_menu.xml new file mode 100644 index 0000000..a0e7b79 --- /dev/null +++ b/app/src/main/res/menu/calls_menu.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/app/src/main/res/menu/chats_menu.xml b/app/src/main/res/menu/chats_menu.xml new file mode 100644 index 0000000..6a56b4b --- /dev/null +++ b/app/src/main/res/menu/chats_menu.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/menu/check_icon.xml b/app/src/main/res/menu/check_icon.xml new file mode 100644 index 0000000..30eeeb4 --- /dev/null +++ b/app/src/main/res/menu/check_icon.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/menu/hangup_icon.xml b/app/src/main/res/menu/hangup_icon.xml new file mode 100644 index 0000000..c1fc2bd --- /dev/null +++ b/app/src/main/res/menu/hangup_icon.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml new file mode 100644 index 0000000..1b61813 --- /dev/null +++ b/app/src/main/res/menu/main_menu.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/mic_icon.xml b/app/src/main/res/menu/mic_icon.xml new file mode 100644 index 0000000..09eebb2 --- /dev/null +++ b/app/src/main/res/menu/mic_icon.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/menu/rec_icon.xml b/app/src/main/res/menu/rec_icon.xml new file mode 100644 index 0000000..1ab37ee --- /dev/null +++ b/app/src/main/res/menu/rec_icon.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/speaker_icon.xml b/app/src/main/res/menu/speaker_icon.xml new file mode 100644 index 0000000..2f23e9c --- /dev/null +++ b/app/src/main/res/menu/speaker_icon.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..345888d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..37db5e6 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap/ic_launcher.png b/app/src/main/res/mipmap/ic_launcher.png new file mode 100644 index 0000000..69a10a2 Binary files /dev/null and b/app/src/main/res/mipmap/ic_launcher.png differ diff --git a/app/src/main/res/mipmap/ic_launcher_background.png b/app/src/main/res/mipmap/ic_launcher_background.png new file mode 100644 index 0000000..0f79019 Binary files /dev/null and b/app/src/main/res/mipmap/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap/ic_launcher_foreground.png b/app/src/main/res/mipmap/ic_launcher_foreground.png new file mode 100644 index 0000000..c748156 Binary files /dev/null and b/app/src/main/res/mipmap/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap/ic_launcher_monochrome.png b/app/src/main/res/mipmap/ic_launcher_monochrome.png new file mode 100644 index 0000000..7a2776c Binary files /dev/null and b/app/src/main/res/mipmap/ic_launcher_monochrome.png differ diff --git a/app/src/main/res/mipmap/ic_launcher_round.png b/app/src/main/res/mipmap/ic_launcher_round.png new file mode 100644 index 0000000..69a10a2 Binary files /dev/null and b/app/src/main/res/mipmap/ic_launcher_round.png differ diff --git a/app/src/main/res/raw/autoanswer.wav b/app/src/main/res/raw/autoanswer.wav new file mode 100644 index 0000000..713c67f Binary files /dev/null and b/app/src/main/res/raw/autoanswer.wav differ diff --git a/app/src/main/res/raw/busy_bg.wav b/app/src/main/res/raw/busy_bg.wav new file mode 100644 index 0000000..e36d5f9 Binary files /dev/null and b/app/src/main/res/raw/busy_bg.wav differ diff --git a/app/src/main/res/raw/busy_br.wav b/app/src/main/res/raw/busy_br.wav new file mode 100644 index 0000000..3591e36 Binary files /dev/null and b/app/src/main/res/raw/busy_br.wav differ diff --git a/app/src/main/res/raw/busy_cz.wav b/app/src/main/res/raw/busy_cz.wav new file mode 100644 index 0000000..5fa9ad6 Binary files /dev/null and b/app/src/main/res/raw/busy_cz.wav differ diff --git a/app/src/main/res/raw/busy_de.wav b/app/src/main/res/raw/busy_de.wav new file mode 100644 index 0000000..41bd75e Binary files /dev/null and b/app/src/main/res/raw/busy_de.wav differ diff --git a/app/src/main/res/raw/busy_es.wav b/app/src/main/res/raw/busy_es.wav new file mode 100644 index 0000000..8ba2f1c Binary files /dev/null and b/app/src/main/res/raw/busy_es.wav differ diff --git a/app/src/main/res/raw/busy_fi.wav b/app/src/main/res/raw/busy_fi.wav new file mode 100644 index 0000000..b19b6d6 Binary files /dev/null and b/app/src/main/res/raw/busy_fi.wav differ diff --git a/app/src/main/res/raw/busy_fr.wav b/app/src/main/res/raw/busy_fr.wav new file mode 100644 index 0000000..6af5ec4 Binary files /dev/null and b/app/src/main/res/raw/busy_fr.wav differ diff --git a/app/src/main/res/raw/busy_jp.wav b/app/src/main/res/raw/busy_jp.wav new file mode 100644 index 0000000..15d9e71 Binary files /dev/null and b/app/src/main/res/raw/busy_jp.wav differ diff --git a/app/src/main/res/raw/busy_no.wav b/app/src/main/res/raw/busy_no.wav new file mode 100644 index 0000000..e36d5f9 Binary files /dev/null and b/app/src/main/res/raw/busy_no.wav differ diff --git a/app/src/main/res/raw/busy_nz.wav b/app/src/main/res/raw/busy_nz.wav new file mode 100644 index 0000000..d4fd69a Binary files /dev/null and b/app/src/main/res/raw/busy_nz.wav differ diff --git a/app/src/main/res/raw/busy_ru.wav b/app/src/main/res/raw/busy_ru.wav new file mode 100644 index 0000000..b6ce0bf Binary files /dev/null and b/app/src/main/res/raw/busy_ru.wav differ diff --git a/app/src/main/res/raw/busy_se.wav b/app/src/main/res/raw/busy_se.wav new file mode 100644 index 0000000..3591e36 Binary files /dev/null and b/app/src/main/res/raw/busy_se.wav differ diff --git a/app/src/main/res/raw/busy_uk.wav b/app/src/main/res/raw/busy_uk.wav new file mode 100644 index 0000000..fc56165 Binary files /dev/null and b/app/src/main/res/raw/busy_uk.wav differ diff --git a/app/src/main/res/raw/busy_us.wav b/app/src/main/res/raw/busy_us.wav new file mode 100644 index 0000000..7906573 Binary files /dev/null and b/app/src/main/res/raw/busy_us.wav differ diff --git a/app/src/main/res/raw/callwaiting_bg.wav b/app/src/main/res/raw/callwaiting_bg.wav new file mode 100644 index 0000000..234b957 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_bg.wav differ diff --git a/app/src/main/res/raw/callwaiting_br.wav b/app/src/main/res/raw/callwaiting_br.wav new file mode 100644 index 0000000..57a0ce1 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_br.wav differ diff --git a/app/src/main/res/raw/callwaiting_cz.wav b/app/src/main/res/raw/callwaiting_cz.wav new file mode 100644 index 0000000..1651101 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_cz.wav differ diff --git a/app/src/main/res/raw/callwaiting_de.wav b/app/src/main/res/raw/callwaiting_de.wav new file mode 100644 index 0000000..9001b00 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_de.wav differ diff --git a/app/src/main/res/raw/callwaiting_es.wav b/app/src/main/res/raw/callwaiting_es.wav new file mode 100644 index 0000000..74b480d Binary files /dev/null and b/app/src/main/res/raw/callwaiting_es.wav differ diff --git a/app/src/main/res/raw/callwaiting_fi.wav b/app/src/main/res/raw/callwaiting_fi.wav new file mode 100644 index 0000000..9b2a18b Binary files /dev/null and b/app/src/main/res/raw/callwaiting_fi.wav differ diff --git a/app/src/main/res/raw/callwaiting_fr.wav b/app/src/main/res/raw/callwaiting_fr.wav new file mode 100644 index 0000000..e9ce4f6 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_fr.wav differ diff --git a/app/src/main/res/raw/callwaiting_jp.wav b/app/src/main/res/raw/callwaiting_jp.wav new file mode 100644 index 0000000..434f556 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_jp.wav differ diff --git a/app/src/main/res/raw/callwaiting_no.wav b/app/src/main/res/raw/callwaiting_no.wav new file mode 100644 index 0000000..c562682 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_no.wav differ diff --git a/app/src/main/res/raw/callwaiting_nz.wav b/app/src/main/res/raw/callwaiting_nz.wav new file mode 100644 index 0000000..ab361e1 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_nz.wav differ diff --git a/app/src/main/res/raw/callwaiting_ru.wav b/app/src/main/res/raw/callwaiting_ru.wav new file mode 100644 index 0000000..9438389 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_ru.wav differ diff --git a/app/src/main/res/raw/callwaiting_se.wav b/app/src/main/res/raw/callwaiting_se.wav new file mode 100644 index 0000000..a35e4e2 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_se.wav differ diff --git a/app/src/main/res/raw/callwaiting_uk.wav b/app/src/main/res/raw/callwaiting_uk.wav new file mode 100644 index 0000000..38c3e89 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_uk.wav differ diff --git a/app/src/main/res/raw/callwaiting_us.wav b/app/src/main/res/raw/callwaiting_us.wav new file mode 100644 index 0000000..e9ce4f6 Binary files /dev/null and b/app/src/main/res/raw/callwaiting_us.wav differ diff --git a/app/src/main/res/raw/error.wav b/app/src/main/res/raw/error.wav new file mode 100644 index 0000000..9ebd62a Binary files /dev/null and b/app/src/main/res/raw/error.wav differ diff --git a/app/src/main/res/raw/ringback_bg.wav b/app/src/main/res/raw/ringback_bg.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_bg.wav differ diff --git a/app/src/main/res/raw/ringback_br.wav b/app/src/main/res/raw/ringback_br.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_br.wav differ diff --git a/app/src/main/res/raw/ringback_cz.wav b/app/src/main/res/raw/ringback_cz.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_cz.wav differ diff --git a/app/src/main/res/raw/ringback_de.wav b/app/src/main/res/raw/ringback_de.wav new file mode 100644 index 0000000..71f5286 Binary files /dev/null and b/app/src/main/res/raw/ringback_de.wav differ diff --git a/app/src/main/res/raw/ringback_es.wav b/app/src/main/res/raw/ringback_es.wav new file mode 100644 index 0000000..200b26c Binary files /dev/null and b/app/src/main/res/raw/ringback_es.wav differ diff --git a/app/src/main/res/raw/ringback_fi.wav b/app/src/main/res/raw/ringback_fi.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_fi.wav differ diff --git a/app/src/main/res/raw/ringback_fr.wav b/app/src/main/res/raw/ringback_fr.wav new file mode 100644 index 0000000..afedc92 Binary files /dev/null and b/app/src/main/res/raw/ringback_fr.wav differ diff --git a/app/src/main/res/raw/ringback_jp.wav b/app/src/main/res/raw/ringback_jp.wav new file mode 100644 index 0000000..3883165 Binary files /dev/null and b/app/src/main/res/raw/ringback_jp.wav differ diff --git a/app/src/main/res/raw/ringback_no.wav b/app/src/main/res/raw/ringback_no.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_no.wav differ diff --git a/app/src/main/res/raw/ringback_nz.wav b/app/src/main/res/raw/ringback_nz.wav new file mode 100644 index 0000000..c2b097b Binary files /dev/null and b/app/src/main/res/raw/ringback_nz.wav differ diff --git a/app/src/main/res/raw/ringback_ru.wav b/app/src/main/res/raw/ringback_ru.wav new file mode 100644 index 0000000..d3e101e Binary files /dev/null and b/app/src/main/res/raw/ringback_ru.wav differ diff --git a/app/src/main/res/raw/ringback_se.wav b/app/src/main/res/raw/ringback_se.wav new file mode 100644 index 0000000..53736d6 Binary files /dev/null and b/app/src/main/res/raw/ringback_se.wav differ diff --git a/app/src/main/res/raw/ringback_uk.wav b/app/src/main/res/raw/ringback_uk.wav new file mode 100644 index 0000000..c2b097b Binary files /dev/null and b/app/src/main/res/raw/ringback_uk.wav differ diff --git a/app/src/main/res/raw/ringback_us.wav b/app/src/main/res/raw/ringback_us.wav new file mode 100644 index 0000000..417c3da Binary files /dev/null and b/app/src/main/res/raw/ringback_us.wav differ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml new file mode 100644 index 0000000..9dc389c --- /dev/null +++ b/app/src/main/res/values-bg/strings.xml @@ -0,0 +1,261 @@ + + + + Относно baresip + + SES потребителско приложение, базирано на библиотеката Baresip +

Juha Heinanen <jh@tutpro.com>

+

версия %1$s

+

Съвети за употреба

+
    +
  • Проверете дали стойностите по подразбиране на конфигурацията отговарят на вашите нужди (заглавия на елементите с докосване).
  • +
  • След това създайте един или повече акаунти (отново докоснете заглавия на артикули за помощ).
  • +
  • Участниците в обажданията и съобщенията могат да се добавят към контактите с по-продължителни докосвания.
  • +
  • По същия начин може да се премахват повиквания, чатове, съобщения и контакти.
  • +
  • Имате възможност да преизберете повторно последния абонат, като кликнете на иконата за повикване, когато полето е празно.
  • +
  • Ако не можете да чуете другата страна по време на разговор, опитайте се да увеличите силата на звука на Media устройството си или задайте силата на звука на разговора по подразбиране в конфигурация.
  • +
+

Програмен код

+ Изходният код е достъпен на адрес GitHub, + където също могат да се докладват проблеми. + ]]> +
+ + Акаунт + Показване на име + Твоето име + Публично име (ако има такова), използвано в URI на изходящи заявки. + Потребителско име за удостоверяване + Потребителско име за удостоверяване, ако се изисква от изходящ прокси. + Парола за удостоверяване + Парола за удостоверяване, ако се изисква от изходящ прокси. + Изходящи прокси + SIP URI на един или два прокси сървъра, които трябва да се използват при изпращане на заявки. + Ако са дадени две, заявките за РЕГИСТРИРАНЕ се изпращат и до двете, и до други заявки + тази, която отговаря. Ако не е даден изходящ прокси, заявките се изпращат въз основа на + DNS NAPTR / SRV / Търсене на запис на хоризонталната част на URI на повикващия. Ако хостпарт на SIP URI е IPv6 + адрес, адресът трябва да бъде написан в скоби []. +\nExamples: +\n • sip:foo.com:5060;transport=tls +\n • sip:[2001:67c:223:777::10]:5060;transport=tcp + + SIP URI на прокси сървър + SIP URI на друг прокси сървър + Регистрирай + Ако е отметнато, регистрацията е активирана и заявките за РЕГИСТРИРАНЕ се изпращат на + 12 минути интервали. + Аудио кодеци + Списък на поддържаните аудио кодеци в приоритетен ред. + NAT Traversal Average + Избира протокол за преминаване на носител NAT (ако има такъв). Възможният избор е STUN + (Помощни програми за сесионно преминаване за NAT, RFC 5389) и ICE (Интерактивна свързаност + Учредяване, RFC 5245). + + СТУН Сървър + STUN сървър на хост на формуляра [: port]. + Фабричната стойност по подразбиране е \'stun.l.google.com:19302\', сочещи към обществен сървър на Google STUN. + В момента потребителското име и паролата не се поддържат. + Шифроване на медиите + Избира протокол за криптиране на медийния транспорт (ако има такъв). +\n • ZRTP (препоръчително) означава, че след изпробване на преговорите за криптиране на медиите от край до край ZRTP + разговорът е установен. +\n • DTLS-SRTPF означава, че UDP / TLS / RTP / SAVPF се предлага при изходящо повикване и RTP / SAVP, + RTP / SAVPF, UDP / TLS / RTP / SAVP или UDP / TLS / RTP / SAVPF се използва, ако се предлага при входящо повикване. +\n • SRTP-MANDF означава, че RTP / SAVPF се предлага при изходящо повикване и се изисква при входящо повикване. +\n • SRTP-MAND означава, че RTP / SAVP се предлага при изходящо повикване и се изисква при входящо повикване. +\n • SRTP означава, че RTP / AVP се предлага при изходящо повикване и че RTP / SAVP или RTP / SAVPF се използва + ако се предлага при входящо повикване. + + Режим на отговори + Избира как се отговаря на входящите повиквания. + Ръчно + Автоматично + URI на гласова поща + SIP URI за проверка на гласови съобщения. Ако се остави празно, съобщенията на гласовата поща + (Индикации за чакане на съобщение) не са активирани. + + Профил по подразбиране + Ако е отметнато, този акаунт се избира при стартиране на baresip. + + Профили + потребител@домейн + Невалиден потребител@домейн \'%1$s\' + Профила \'%1$s\' вече съществува. + "Неуспешно разпределяне на нов акаунт. + Шифроване на парола + Дешифриране на парола + Искате ли да изтриете акаунта \'%1$s\'? + + Отговор + Отхвърляне + Обадете се от + Заявка за прехвърляне на обаждане до + Съобщение от + + История на обажданията + Обади се + повиквания + обади се + Искате ли да се обадите или да изпратите съобщение до \'%1$s\'? + Искате ли да добавите \'%1$s\' към контакти или изтриване + %2$s от историята на обажданията? + + Искате ли да изтриете \'%1$s\' %2$s от историята на обажданията? + Изтрий + Забрани история на обаждания + Разреши история на обаждания + Искате ли да изтриете историята на обажданията на акаунта \'%1$s\'? + + Съобщения в чата + Чатя с %1$s + Ново съобщение + Искате ли да изтриете съобщението или да добавите потребителя \'%1$s\' в контакти? + Искате ли да изтриете съобщението? + Добави контакт + Изпращането на съобщението не бе успешно + Неуспешно + + История на чата + днес + Вие + Нов потребител за чат + Невалиден SIP URI + Искате ли да изтриете чата с този потребител \'%1$s\' или + да го добавяне в контактите? + Искате ли да изтриете чата с \'%1$s\'? + Изтрий + Искате ли да изтриете историята на чата на акаунта \'%1$s\'? + + Конфигуриране + Стартирайте автоматично + Ако е отметнато, baresip се стартира автоматично след включване на устройството. + Слушане на адрес + IP адрес и порт на формата \'адрес: порт\', на който baresip слуша + за входящи SIP заявки. Ако IP адресът е IPv6 адрес, той трябва да бъде написан вътре в скоби []. + IPv4 адрес 0.0.0.0 или IPv6 адрес [::] позволява на baresip да слуша всички налични адреси. + Ако се остави празно (фабрично по подразбиране), baresip ще слуша на порт 5060 от всички налични адреси. + + Невалиден адрес за слушане + DNS сървъри + Списък разделен със запетая на адреси на DNS сървъри. Ако не е зададено, + адресите на DNS сървъра се получават динамично от системата. Всеки DNS адрес е във форма \'ip:port\' + или \'ip\'. Ако портът е пропуснат, той по подразбиране е 53. Ако ip е IPv6 адрес и също е зададен порт, + ip трябва да бъде написани вътре в скоби []. Като пример, посочете \`8.8.8.8:53,[2001:4860:4860::8888]:53 \' + сочи към IPv4 и IPv6 адреси на обществени DNS сървъри на Google. + + Невалидни DNS сървъри + Неуспешно задаване на DNS сървъри + Файл за сертификати TLS + Ако е поставена отметка, файл \'cert.pem\' съдържащ TLS сертификатът и личният ключ на този екземпляр baresip е бил или ще бъде зареден от директорията за Изтегляне. От съображения за сигурност изтрийте файла след зареждането му. + TLS CA File + Ако е поставено отметка, файл \'ca_certs.crt\' съдържащи TLS сертификати на Сертифициращите органи е бил или ще бъде зареден от директорията за Изтегляне. + Акустично отменяне на ехото + Ако е поставена отметка, се прави опит за отмяна на ехо при аудио повикване. + Opus Bit Rate + Средна максимална битова скорост, използвана от аудио поток на Opus. + Валидните стойности са 6000-510000. Фабрично по подразбиране е 28000. + + Очаквана загуба на пакети Opus + Очакван процент загуба на пакет от аудио поток на Opus, от 0–100. + По подразбиране 0 изключване на Opus Forward Error Correction (FEC). + + Невалиден битрейт на Opus + Невалиден процент загуба на пакет Opus + Усилване на повикването по подразбиране + Ако се задава, трябва да се избира сила на звука при + повикване по подразбиране в мащаб 1–10. + + Debug + Осигурява наличие на съобщения за грешки и информация на ниво информация в Logcat. + Възстановяване на фабричните настройки + Ако е отметнато, конфигурацията се нулира до фабрични стойности по подразбиране + Неуспешно четене на файл \'cert.pem\' от директорията за изтегляне. + Файлът не беше прочетен \'ca_certs.crt\' от директорията за изтегляне. + Трябва да рестартирате baresip, за да активирате новата конфигурация. Рестартирай сега? + + контакт + Нов контакт + име + Невалидно име за контакт \'%1$s\' + Този контакт \'%1$s\' вече съществува. + Невалиден SIP URI + + Контакти + Искате ли да се обадите или да изпратите съобщение до \'%1$s\'? + Изпрати съобщение + Искате ли да изтриете този контакт \'%1$s\'? + Вашият максимален брой контакти %1$d е надвишен. + + Внимание + Информация + известие + Отказ + Добре + да + не + приемам + отказвам + Потребителско Име + Парола + Добави + Изтрий + Редактиране + Изпращам + Статус + Грешка + + Създай Резервно копие + Възстанови от Резервно копие + Относно + Рестартирай + Отписване + Изходящо повикване до… + Входящо обаждане от… + Прехвърляне на обаждане до… + Невалиден SIP URI \'%1$s\' + Набиране + Затвори + Задържане + DTMF + Информация за обаждане + Продължителност %1$d (s) + Кодеци + Скорост: %1$s + Гласова поща + Съобщения за гласова поща + Ти имаш + едно ново съобщение + Нови съобщения + Едно старо съобщение + Стари съобщения + и + Нямате съобщения + Слушам + Съобщения + Бутони за набиране + Вече имате активно обаждане. + Baresip не успя да стартира. Това може да се дължи на невалиден адрес за слушане или TLS файл. + Те са нулирани. Рестартирайте baresip. + + Регистрация на \`%1$s\` се провали. + Потвърди + Искате ли да потвърдите <%1$s>\? + Приемате ли да прехвърлите обаждане до \'%1$s\'? + Обаждането не бе успешно + Обаждането е затворено + Това обаждане НЕ е сигурно! + Това обаждане е СИГУРНО, но другият абонат НЕ е потвърдил! + Този разговор е СИГУРЕН и другият абонат е ПРОВЕРЕН! Искате ли да го потвърдите? + Отмяна на потвърждението + Данните от приложението са архивирани във файла за изтегляне на папки \'%1$s\'. + Неуспешно архивиране на данни от приложението за изтегляне на файла с папки \'%1$s\'. Проверете Приложения → baresip → Разрешения → Съхранение + Данните за приложението са възстановени. baresip трябва да се рестартира. Рестартирай сега? + Възстановяването на данните на приложението от папката за изтегляне не бе успешно. Проверете Приложения → baresip → Разрешения → Съхранение и този архивен файл \'%1$s\' съществува в папката и ако е така, вие сте дали правилна парола за дешифриране. + Аудио модули + Аудио кодеци предоставени от проверените модули могат да бъдат използвани от акаунтите. + Не могат да бъдат заредени модулите. + Разговори не могат да бъдат осъществени без разрешен достъп до микрофона. + Порта и транспортния протокол на акаунта могат да бъдат посочени по избор, когато се създаде нов акаунт: потребителско име@домейн[:port] [;transport=udp|tcp|tls]. Ако е даден порт и транспортният протокол не е даден, транспортният протокол по подразбиране е udp. Ако порт не е даден и транспортният протокол е даден, портът по подразбиране е 5060 или 5061 (tls). Ако нито едното не е посочено и не е посочен изходящ прокси, регистраторът на акаунта (ако има такъв) се определя единствено въз основа на DNS информация от домейна. + Нов Акаунт +
\ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000..86de18e --- /dev/null +++ b/app/src/main/res/values-cs/strings.xml @@ -0,0 +1,425 @@ + + + O aplikaci baresip + O aplikaci baresip+ + Uživatelské jméno pro ověřování + Neplatné uživatelské jméno \'%1$s\' + Účet + Uživatelské jméno STUN/TURN + uživatel@doména + Neplatný uživatel@doména[:port][;transport=udp|tcp|tls] \'%1$s\' + Šifrovat heslo + %1$d zmeškaných hovorů + Video kodeky + Soubor TLS certifikátu + Datový tok Opus + Ladění + Již máte aktivní hovor. + Požadavek na restart + Neplatné zobrazované jméno \'%1$s\' + Neplatné ověřovací heslo \'%1$s\' + Neplatná přezdívka účtu \'%1$s\' + Přezdívka \'%1$s\' již existuje + Vaše jméno + SIP klient založený na knihovně Baresip s podporou video hovorů +

Juha Heinanen

+

Verze %1$s

+

Nápověda k používání

+
    +
  • Zkontrolujte, zda výchozí hodnoty v nastavení baresipu vyhovují vašim potřebám + (nápovědu získáte ťuknutím na názvy položek).
  • +
  • Poté v sekci Účty vytvořte jeden nebo více účtů (pro nápovědu opět ťukněte na názvy položek).
  • +
  • Stav registrace účtu je indikován barevnou tečkou: zelená (registrace + proběhla úspěšně), žlutá (registrace probíhá), červená (registrace se nezdařila), bílá (registrace + nezačala).
  • +
  • Ťuknutí na tečku spustí konfiguraci účtu.
  • +
  • Gesto přejetí prstem dolů zahájí opětovnou registraci aktuálně zobrazeného účtu.
  • +
  • Dlouhým dotykem na aktuálně zobrazený účet povolíte nebo zakážete jeho registraci.
  • +
  • Mezi účty se přepíná gestem přejetí vlevo/vpravo.
  • +
  • Naposledy volaný kontakt lze znovu vybrat dotykem na ikonu hovoru, pokud je pole Číslo nebo adresa prázdné.
  • +
  • Účastníky hovorů a zpráv lze přidávat do kontaktů dlouhými dotyky.
  • +
  • Dlouhými dotyky lze také odstraňovat hovory, chaty, zprávy a kontakty.
  • +
  • Dotyk/dlouhý dotyk na ikonu kontaktu lze použít k přidání/odstranění obrázkového avatara.
  • +
  • Navštivte Wiki pro více + informací.
  • +
+

Známé problémy

+
    +
  • Při videohovorech je třeba držet zařízení v režimu na šířku + otočeném o 90 stupňů doleva oproti orientaci na výšku.
  • +
  • Vlastní náhled volajícího se nezobrazuje správně, když je videoproud pouze v režimu odesílání (sendonly).
  • +
+

Zásady ochrany osobních údajů

+ Zásady ochrany osobních údajů jsou k dispozici zde. +

Zdrojový kód

+ Zdrojový kód je k dispozici na GitHubu, + kde lze také hlásit problémy. +

Licence

+
    +
  • BSD-3-Clause kromě následujících:
  • +
  • Apache 2.0 kodeky AMR a zabezpečení TLS
  • +
  • AGPLv4 šifrování médií ZRTP
  • +
  • GNU LGP 2.1 G.722, G.726, a Codec2 kodeky
  • +
  • GNU GPLv3 kodek G.729
  • +
  • GNU GPLv2 H.264 a H.265 kodeky
  • +
  • AOMedia AV1 kodek
  • +
+ ]]>
+ SIP klient založený na knihovně Baresip +

Juha Heinanen <jh@tutpro.com>

+

Verze %1$s

+

Nápověda

+
    +
  • Zkontrolujte, zda výchozí hodnoty v nastavení baresipu vyhovují vašim potřebám + (nápovědu získáte ťuknutím na názvy položek).
  • +
  • Poté v sekci Účty vytvořte jeden nebo více účtů (pro nápovědu opět ťukněte na názvy položek).
  • +
  • Stav registrace účtu je indikován barevnou tečkou: zelená (registrace + proběhla úspěšně), žlutá (registrace probíhá), červená (registrace se nezdařila), bílá (registrace + nezačala).
  • +
  • Ťuknutí na tečku spustí konfiguraci účtu.
  • +
  • Gesto přejetí prstem dolů zahájí opětovnou registraci aktuálně zobrazeného účtu.
  • +
  • Dlouhým dotykem na aktuálně zobrazený účet povolíte nebo zakážete jeho registraci.
  • +
  • Mezi účty se přepíná gestem přejetí vlevo/vpravo.
  • +
  • Naposledy volaný kontakt lze znovu vybrat dotykem na ikonu hovoru, pokud je pole Číslo nebo adresa prázdné.
  • +
  • Účastníky hovorů a zpráv lze přidávat do kontaktů dlouhými dotyky.
  • +
  • Dlouhými dotyky lze také odstraňovat hovory, chaty, zprávy a kontakty.
  • +
  • Dotyk/dlouhý dotyk na ikonu kontaktu lze použít k přidání/odstranění obrázkového avatara.
  • +
  • Navštivte Wiki + pro více informací.
  • +
+

Zásady ochrany osobních údajů

+ Zásady ochrany osobních údajů jsou k dispozici zde. +

Zdrojový kód

+ Zdrojový kód je k dispozici na GitHubu, + kde lze také hlásit problémy. +

Licence

+
    +
  • BSD-3-Clause kromě následujících:
  • +
  • Apache 2.0 AMR codecs a TLS security
  • +
  • AGPLv4 šifrování médií ZRTP
  • +
  • GNU LGPL 2.1 kodeky G.722, G.726 a Codec2
  • +
  • GNU GPLv3 kodek G.729
  • +
+ ]]>
+ Přezdívka účtu + Přezdívka (pokud existuje) používaná k identifikaci tohoto účtu v aplikaci baresip. + Přezdívka + Heslo pro ověření + Odchozí proxy servery + Registrace + Neplatná URI proxy serveru \'%1$s\' + SIP URI proxy serveru + SIP URI jednoho nebo dvou proxy serverů, které je třeba použít při odesílání požadavků. Pokud jsou zadány dva, jsou požadavky REGISTER zasílány oběma a ostatní požadavky jsou zasílány tomu, který odpoví. Pokud není zadán žádný odchozí proxy server, jsou požadavky odesílány na základě vyhledávání záznamů DNS NAPTR/SRV/A z hostitelského jména URI volaného. Pokud je hostitelské jméno URI SIP adresa IPv6, musí být adresa zapsána v závorkách []. +\nPříklady: +\n - sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + SIP URI dalšího proxy serveru + Udává, jak často (v sekundách) baresip odesílá požadavky REGISTER. Platné hodnoty jsou od 60 do 3600. + Neplatný interval registrace\'%1$s\' + Pokud je zatrženo, registrace je povolena a požadavky REGISTER jsou odesílány v intervalu určeném parametrem Interval registrace. + Interval registrace + Vybírá způsob přijímání příchozích hovorů. + průchod médií skrze NAT + Neplatná URI serveru STUN/TURN \'%1$s\' + Vybírá protokol pro průchod médií skrze NAT (pokud existuje). Možné volby jsou STUN (Session Traversal Utilities for NAT, RFC 5389) a ICE (Interactive Connectivity Establishment, RFC 5245). + Server STUN/TURN + URI serveru STUN/TURN + Uživatelské jméno, pokud ho server STUN/TURN vyžaduje + URI serveru STUN/TURN ve tvaru scheme:host[:port][\?transport=udp|tcp], kde scheme je \"stun\", \"stuns\", \"turn\" nebo \"turns\". Výchozí server STUN pro protokoly STUN a ICE je \'stun:stun.l.google.com:19302\', který ukazuje na veřejný server STUN společnosti Google. Výchozí server TURN neexistuje. + Heslo STUN/TURN + Heslo, pokud ho server STUN/TURN vyžaduje + Neplatné heslo \'%1$s\' + Šifrování médií + Pokud je zatrženo, pakety RTP a RTCP jsou multiplexovány na jednom portu (RFC 5761). + Multiplexování RTCP + Uživatelské jméno pro ověřování, pokud je vyžadováno ověřování požadavků SIP. Výchozí hodnotou je uživatelské jméno účtu. + Poskytovatel telefonních služeb + Čas + Odstranit + Zobrazované jméno + Název (pokud existuje) použitý v URI odchozích požadavků. + Neplatné uživatelské jméno pro ověřování \'%1$s\' + Ověřovací heslo až 64 znaků. Pokud je zadáno Uživatelské jméno pro ověřování, ale není zadáno Heslo, bude po spuštění baresipu požadováno. + Účastník + Směr + Chcete zavolat nebo odeslat zprávu \'%1$s\'\? + Chcete přidat \'%1$s\' do kontaktů nebo odstranit %2$s z historie hovorů\? + Chcete odstranit historii volání účtu \"%1$s\"\? + Trvání + Chcete smazat chat s účastníkem \'%1$s\' nebo přidat účastníka do kontaktů\? + Chcete odstranit zprávu nebo přidat účastníka \'%1$s\' do kontaktů\? + Zakázat + Zprávy chatu + Nová zpráva + Chcete zprávu odstranit\? + Chcete odstranit \'%1$s\' %2$s z historie hovorů\? + Smazat + Chatovat s %1$s + Odeslání zprávy se nezdařilo + Vy + Nový účastník chatu + Chcete odstranit chat s \'%1$s\'\? + Přidat kontakt + Historie chatu + Dnes + Nepodařilo se + Seznam zvukových kodeků v prioritním pořadí. Přetažením změníte pořadí, přejetím doprava je povolíte nebo zakážete. + Neplatné servery DNS + Neplatné URI účastníka chatu + Chcete odstranit historii chatu účtu \'%1$s\'\? + Zvukové kodeky + Pokud je zaškrtnuto, byl nebo bude načten soubor obsahující certifikát TLS a soukromý klíč této instance baresipu. Ve verzi systému Android 9 se soubor s názvem \'cert.pem\' načte ze složky Download. Z bezpečnostních důvodů tento soubor po načtení odstraňte. + Seznam kodeků videa v prioritním pořadí. Přetažením změníte pořadí, přejetím doprava je povolíte nebo zakážete. + Neplatná naslouchací adresa + Uspořádat + Nastavení + Optimalizace baterie + Naslouchací adresa + Spustit automaticky + Pokud je zaškrtnuto, baresip se spustí automaticky po (opětovném) spuštění zařízení. + Pokud chcete snížit pravděpodobnost, že systém Android omezí přístup zařízení baresip k síti nebo jej přepne do pohotovostního režimu, zakažte optimalizace baterie (doporučeno). + IP adresa a port ve tvaru \"address:port\", na kterém baresip naslouchá příchozím požadavkům SIP. Pokud je IP adresa IPv6, musí být zapsána v závorce []. IPv4 adresa 0.0.0.0 nebo IPv6 adresa [::] způsobí, že baresip bude naslouchat na všech dostupných adresách. Pokud zůstane prázdné (výchozí nastavení), bude baresip naslouchat na portu 5060 všech dostupných adres. + Servery DNS + Seznam adres serverů DNS oddělených čárkou. Pokud nejsou zadány, adresy serverů DNS jsou získávány dynamicky ze systému. Každá adresa DNS má tvar \'ip:port\' nebo \'ip\'. Pokud je port vynechán, je výchozí hodnota 53. Pokud je ip adresa IPv6 a je zadán i port, musí být ip zapsáno v závorkách []. Příklad: seznam \'8.8.8.8:53,[2001:4860:4860::8888]:53\' ukazuje na adresy IPv4 a IPv6 veřejných serverů Google DNS. + Soubor TLS CA + Nepodařilo se nastavit servery DNS + Ověřit certifikáty serveru + Pokud je tato možnost zaškrtnuta, ověřuje baresip certifikáty TLS uživatelského agenta SIP a proxy serverů SIP, pokud se používá přenos TLS. + Události v pásmu RTP + Žádosti SIP INFO + Vybere protokol šifrování přenosu média (pokud existuje). +\n • ZRTP (doporučeno) znamená, že se po navázání hovoru vyzkouší vyjednávání o koncové šifrování médií ZRTP. +\n • DTLS-SRTPF znamená, že v odchozím hovoru je nabízen UDP/TLS/RTP/SAVPF a že v případě příchozího hovoru je použit RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP nebo UDP/TLS/RTP/SAVPF. +\n • SRTP-MANDF znamená, že RTP/SAVPF je nabízen v odchozím hovoru a vyžadován v příchozím hovoru. +\n • SRTP-MAND znamená, že RTP/SAVP je nabízen v odchozím hovoru a vyžadován v příchozím hovoru. +\n • SRTP znamená, že RTP/AVP je nabízen v odchozím hovoru a že RTP/SAVP nebo RTP/SAVPF je použit, pokud je nabízen v příchozím hovoru. + Preferovat média IPv6 + Vybírá způsob odesílání tónů DTMF 0-9, #, * a A-D. + Pokud je zatrženo, nabídne použití protokolu medií IPv6 (je-li k dispozici), pokud protokol medií partnera nelze určit automaticky. + URI hlasové schránky + Režim DTMF + Režim odpovědi + Ručně + Automaticky + Kód země + SIP URI pro kontrolu zpráv hlasové pošty. Pokud je ponecháno prázdné, zprávy hlasové pošty (indikace čekající zprávy) nejsou přihlášeny k odběru. + Neplatné URI hlasové schránky \'%1$s\' + +kód + Kód země E.164 tohoto účtu. Pokud uživatelská část \"Od\" v URI příchozího hovoru nebo zprávy obsahuje telefonní číslo, které nezačíná znakem \"+\", a pokud se vyhledání kontaktu nezdaří, je číslo předřazeno tomuto kódu země a vyhledání kontaktu je zopakováno. Pokud telefonní číslo začíná jedinou číslicí \"0\", číslice \"0\" se před prefixací čísla odstraní. + Výchozí účet + Neplatný kód země \'%1$s\' + Hostitelská část SIP URI používaná při volání na telefonní čísla. Výchozí tovární nastavení je doména účtu. Pokud není zadána, nelze tento účet použít pro volání na telefonní čísla. + Pokud je zatrženo, je tento účet vybrán při spuštění baresipu. + Hostitelská část SIP URI + Neplatná část hostitelského URI SIP \'%1$s\' + Nový účet + Účty + Účet \'%1$s\' již existuje. + Dešifrovat heslo + Při vytváření nového účtu lze volitelně zadat číslo portu účtu a přenosový protokol: <uživatel>@<doména>[:<port>][;transport=udp|tcp|tls]. Pokud je zadán <port> a transportní protokol není zadán, je výchozí transportní protokol udp. Pokud není zadán <port> a je zadán transportní protokol, je výchozí hodnota <port> 5060 nebo 5061 (TLS). Pokud není zadán ani jeden z těchto parametrů a není zadán žádný odchozí proxy server, je registrátor účtu (pokud existuje) určen pouze na základě DNS informací o doméně. + Odpovědět + Odmítnout + Nepodařilo se přiřadit nový účet. + Chcete odstranit účet \'%1$s\'\? + Příchozí hovor od + Zmeškaný hovor od + Zmeškané hovory + Hovor + Žádost o přepojení hovoru na + Povolit + Zpráva od + Historie volání + volání + Podrobnosti o volání + volání + Pokud je zaškrtnuto, byl nebo bude načten soubor obsahující certifikáty TLS takových certifikačních autorit, které nejsou součástí operačního systému Android. Ve verzi systému Android 9 se ze složky Download načte soubor s názvem \'ca_certs.crt\'. + Nastavení zvuku + Pokud je zaškrtnuto, používá se rozšířený filtr pro potlačení ozvěny. + Průměrná maximální přenosová rychlost používaná zvukovým tokem Opus. Platné hodnoty jsou 6000-510000. Výchozí hodnota je 28000. + Očekávaná ztráta paketů Opus + Očekávaná procentuální ztráta paketů zvukového toku Opus od 0 do 100. Výchozí hodnota je 1. Hodnota 0 také vypíná funkci Opus Forward Error Correction (FEC). + Zvukové moduly + Potlačení akustické ozvěny + Výchozí hlasitost volání + Vynutit tmavé téma + Nepodařilo se načíst modul. + Pokud je zaškrtnuto, dojde u hovoru k pokusu o potlačení ozvěny. + Zvukové kodeky poskytované zaškrtnutými moduly jsou k dispozici pro použití v účtech. + Rozšířený filtr AEC + Neplatné procento ztráty paketů Opus + Neplatný datový tok Opus + Pokud je nastaveno, je výchozí hlasitost zvuku hovoru na stupnici 1-10. + Trasování SIP + Tmavé téma + Obojí + Rozlišení videa + Rozlišení videa (šířka x výška) + Vybírá, zda se použijí kontakty baresip, kontakty Android nebo obojí. Pokud jsou použita volba obojí a v obou kontaktech existuje kontakt se stejným jménem, bude vybrán kontakt baresip. + Pokud je zaškrtnuto, poskytuje zprávy protokolu Logcat na úrovni ladění a informací. + Pokud je zaškrtnuto a pokud je zaškrtnuta volba Debug, zprávy Logcat obsahují také trasování požadavků a odpovědí SIP. Zruší se automaticky při spuštění baresipu. + Obnovit výchozí nastavení + Pokud je zaškrtnuto, nastavení se obnoví na výchozí hodnoty. + Jste si jisti, že chcete obnovit výchozí hodnoty\? + Obnovit + Nepodařilo se načíst soubor \'cert.pem\'. + Nepodařilo se načíst soubor \'ca_certs.crt\'. + Kontakty + Nový kontakt + Pro aktivaci nových nastavení je třeba restartovat baresip. Restartovat nyní\? + Kontakt + Žádost o souhlas + SIP nebo tel. URI + Pokud jsou vybrány kontakty Android, lze je použít při volání a zasílání zpráv jako odkazy na SIP a tel. URI. Aplikace baresip neukládá kontakty Android ani je s nikým nesdílí. Aby byly kontakty pro Android dostupné v baresip, Google vyžaduje, abyste souhlasili s jejich používáním, jak je popsáno zde v Zásadách ochrany osobních údajů. + Jméno + uživatel@doména nebo telefonní číslo + Kontakt \'%1$s\' již existuje. + Pokud je zaškrtnuto, je tento kontakt přidán do kontaktů systému Android. + Profilový obrázek + Neplatné jméno kontaktu \'%1$s\' + Neplatné SIP URI + Chcete odstranit kontakt \'%1$s\'\? + Upozornění + Přidat + Odeslat zprávu + Chcete zavolat nebo odeslat zprávu \'%1$s\'\? + Maximální počet kontaktů %1$d byl překročen. + Zrušit + Ano + Odmítnout + Odeslat + Informace + Oznámení + OK + Přijmout + Smazat + Ne + ID uživatele + Heslo + Chyba + Potvrzení + Upravit + Stav + Nápověda + Anonymní + Neznámý + Neplatný SIP nebo tel. URI \'%1$s\' + Obnovení + Restartovat + Záloha + O aplikaci + Ukončit + Zavolat na … + Přesměrováno … + Volání z … + Ztracené + Neplatné SIP URI \'%1$s\' + Přepojení hovoru + Přesměrování hovoru na … + Účet \'%1$s\' nemá žádného poskytovatele telefonních služeb + Číslo nebo adresu + Žádost o video + Akceptovat odesílání a příjem videa s \'%1$s\'\? + Přijmout odeslání videa na \'%1$s\'\? + Přijímat video od \'%1$s\'\? + Přidržení/Uvolnění hovoru + Zavěsit + Video hovor + Hovor je přidržen + S konzultací + Cíl přepojení + Zvolit cílové URI + Přepojit + Informace o volání + Doba trvání: %1$d (secs) + Kodeky + Aktuální rychlost: %1$s (Kbits/s) + Průměrná rychlost: %1$s (Kbits/s) + Pakety + Mikrofon zap/vyp + Nahrávání lze zapnout nebo vypnout pouze v případě, kdy hovor není spojen + Naslepo + Přepojení selhalo + Číselník + Volání ukončeno + Nemáte žádné podporované kamery. + DTMF + Žádné dostupné informace + Zpoždění paketů (Jitter:) %1$s (ms) + nové zprávy + a + Poslouchat + Ověřit žádost + Chcete ověřit SAS <%1$s>\? + Hlasová schránka + Máte + jednu novou zprávu + jednu starou zprávu + Nemáte žádné zprávy + Baresip se nepodařilo spustit. Příčinou může být neplatná hodnota Nastavení. Zkontrolujte adresu pro naslouchání, soubor certifikátu TLS a soubor certifikační autority TLS. Poté restartujte baresip. + Registrace %1$s se nezdařila. + Hlasové zprávy + staré zprávy + Zprávy + Požadavek na přepojení + Souhlasíte s přepojením tohoto hovoru na \'%1$s\'\? + Toto volání je BEZPEČNÉ a účastník je OVĚŘENÝ! Chcete zrušit ověření účastníka\? + Data aplikace byla zálohována do souboru \'%1$s\'. Ve verzi systému Android 9 se soubor nachází ve složce Download. + baresip není schopen zjistit připojení Bluetooth bez povolení oprávnění \"Blízká zařízení\". + Volání se nezdařilo + Toto volání je BEZPEČNÉ, ale účastník není ověřen! + Zrušit ověření + Tuto aplikaci nemůžete používat bez povolení \"Oznámení\". + Bez oprávnění \"Kontakty\" nemáte přístup ke kontaktům systému Android. + Odůvodnění povolení + Tento hovor NENÍ zabezpečený! + Nepodařilo se zálohovat data aplikace do souboru \'%1$s\'. Zkontrolujte Aplikace → baresip → Oprávnění → Úložiště. + Data aplikace jsou obnovena. baresip je třeba restartovat. Restartovat nyní\? + Nepodařilo se obnovit data aplikace. Zkontrolujte, zda jste zadali správné heslo a zda záložní soubor pochází z této aplikace. Ve verzi systému Android 9 také zkontrolujte Aplikace → baresip → Oprávnění → Úložiště a zda soubor \'%1$s\' existuje ve složce Download. + baresip pro hlasové hovory potřebuje oprávnění \"Mikrofon\". + Pro uskutečňování nebo přijímání videohovorů udělte oprávnění pro přístup \"Kameře\". + Zálohu nelze vytvořit bez oprávnění pro přístup k \"Úložišti\". + Bez oprávnění pro přístup k \"Úložišti\" nelze zálohu obnovit. + Zaměření zvuku zamítnuto! + baresip+ potřebuje oprávnění \"Mikrofon\" pro hlasové hovory, oprávnění \"Kamera\" pro videohovory, oprávnění \"Blízká zařízení\" pro detekci mikrofonu/reproduktoru Bluetooth a oprávnění \"Oznámení\" pro odesílání oznámení. + Zobrazit heslo + Bez připojení k síti! + baresip potřebuje oprávnění \"Mikrofon\" pro hlasové hovory, oprávnění \"Blízká zařízení\" pro detekci mikrofonu/reproduktoru Bluetooth a oprávnění \"Oznámení\" pro odesílání oznámení. + Vybírá, které IP adresy baresip používá. Pokud je vybráno IPv4 nebo IPv6, baresip používá pouze IPv4 nebo IPv6 adresy. Pokud není vybrána žádná z těchto možností, používá baresip jak IPv4, tak IPv6 adresy. + Rodina adres + Neplatná hodnota zpoždění zvuku \'%1$s\'. Platné hodnoty jsou od 100 do 3000 ms. + Doba (v milisekundách), po kterou se čeká na zvuk od volaného při navázání hovoru. Nastavte vyšší hodnotu, pokud na začátku hovoru zvuk volaného neslyšíte. + Zpoždění zvuku + Automaticky odmítat volání od %1$s + Výchozí aplikace telefonu + Role číselníku není k dispozici + Pokud je zaškrtnuto, je výchozí aplikací telefonu baresip. Nezaškrtávejte, pokud vaše zařízení může potřebovat zpracovávat i jiné než SIP hovory nebo zprávy. + Automatické přesměrování na \'%1$s\'\\ + Oblíbené + Automatické spuštění vyžaduje oprávnění Zobrazení přes ostatní aplikace. + Vybírá, zda bude požadavek na přesměrování hovoru následován automaticky, nebo zda bude vyžadováno potvrzení. + Souhlasíte s přesměrováním volání na \'%1$s\'? + Režim přesměrování + Žádost o přesměrování + Země pro tóny + Pokud je zaškrtnuto, tak avizovat podporu spolehlivých předběžných odpovědí (RFC 3262). + Země vyzvánění, čekajícího hovoru a obsazených tónů volajícího + Spolehlivé předběžné odpovědi + Nepodařilo se obnovit data aplikace. Systém Android verze 14 a vyšší neumožňuje obnovení dat, která byla zálohována před verzí %1$s %2$s. + Hlasitý poslech + Pokud je zatrženo, hlasitý poslech se zapne automaticky při zahájení hovoru. + In-band RTP nebo SIP INFO + Žádost o volání + Přijímáte požadavek na volání \'%1$s\'? + Snímky za sekundu + Snímková frekvence videa, která bude nabídnuta během vyjednávání SDP. Platné hodnoty jsou od 10 do 30. + Neplatný počet snímků za sekundu \'%1$d\' + Uživatelský agent + Vlastní hodnota pole hlavičky User-Agent pro SIP požadavek/odpověď + Neplatná hodnota pole hlavičky User-Agent + Zesílení mikrofonu + Vynásobte hlasitost mikrofonu tímto desetinným číslem. Minimální hodnota je 1,0 (výchozí hodnota), která vypne zesílení mikrofonu. Vyšší hodnoty mohou negativně ovlivnit kvalitu zvuku. + Neplatná hodnota zesílení mikrofonu +
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..32269b5 --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,452 @@ + + + Über baresip + Über baresip+ + Konto + Anzeigename + Ihr Name + Der Nickname \'%1$s\' existiert bereits + Der Nickname (falls vorhanden), der zur Identifikation des Kontos innerhalb der baresip App genutzt wird. + Nickname + Nickname des Kontos + Ungültiger Konto Nickname \'%1$s\' + Rufumleitungsmodus + Telefonieanbieter + Zurückweisen + benutzer@domain + Anrufübertragungsanfrage an + Nachricht von + Über + Passwort anzeigen + Wenn angeklickt wird das Registrieren aktiviert und REGISTER-Anfragen werden in dem durch das Registrierenintervall angegebenen Intervall gesendet. + Registrierenintervall + Gibt an, wie oft (in Sekunden) baresip REGISTER-Anfragen sendet. Gültige Werte: 60 bis 3600. + Ungültiges Registrierenintervall \'%1$s\' + Ungültiger Benutzername \'%1$s\' + STUN/TURN Passwort + Passwort, wenn der STUN/TURN Server eines verlangt + Ungültiges Passwort \'%1$s\' + Verschlüsselung + Bevorzuge IPv6 Medien + Manuell + Automatisch + Sprachnachrichten URI + Ländercode + Wenn angeklickt, IPv6 Medienprotokoll (falls verfügbar) verwenden, wenn das Medienprotokoll der Gegenstelle nicht automatisch ermittelt werden kann. + SIP URI zur Überprüfung von Sprachnachrichten. Wenn leer gelassen, werden Voicemail-Nachrichten (Message Waiting Indications) nicht abonniert. + Konto \'%1$s\' existiert bereits. + Neues Konto konnte nicht zugeordnet werden. + Passwort verschlüsseln + Möchten Sie Konto \'%1$s\' löschen? + Verpasste Anrufe + %1$d verpasste Anrufe + Chat Nachrichten + Chat mit %1$s + Heute + Möchten Sie den Chat mit \'%1$s\' löschen? + Autostart + Keine Informationen verfügbar + Dauer: %1$d (sek) + Aktuelle Übertragungsrate: %1$s (Kbits/s) + Mittlere Rate: %1$s (Kbits/s) + Pakete + SIP oder URI + Wenn angeklickt werden RTP und RTCP Pakete auf einen einzelnen Port gemultiplext (RFC 5761). + Antwort Modus + SIP INFO Anfragen + Bestimmt, wie die DTMF Töne 0–9, #, *, und A-D gesendet werden. + DTMF Modus + Bestimmt wie eingehende Rufe beantwortet werden. + SIP URI-Hostteil bei Anrufen zu Telefonnummern. Voreinstellung ist die Domain des Kontos. Wenn nicht angegeben, kann dieses Konto nicht verwendet werden, um Telefonnummern anzurufen. + SIP URI-Hostteil + Ungültiger SIP URI-Hostteil \'%1$s \' + Wenn angeklickt, wird dieses Konto beim Start von Baresip vorausgewählt. + Voreingestelltes Konto + Gesprächspartner + Ungültiger DNS Server + Mikrofon an/aus + Anrufdetails + Ungültige URI des Chatpartners + Name (falls gewünscht) für die Von-URI bei ausgehenden Anfragen. + Benutzername für die Authentifizierung, wenn eine Authentifizierung von SIP-Anfragen erforderlich ist. Standardwert ist der Benutzername des Kontos. + Ungültiger Anzeigename \'%1$s\' + Benutzername für die Authentifizierung + Ungültiger Benutzername für die Authentifizierung \'%1$s\' + Passwort für die Authentifizierung + Passwort mit max. 64 Zeichen. Wenn ein Benutzername eingegeben wurde, aber kein Passwort eingegeben wird, wird beim Start von baresip danach gefragt. + Ungültiges Passwort \'%1$s\' + SIP URI des Proxy Servers + SIP URI eines anderen Proxy Servers + Ungültige Proxy Server URI \'%1$s\' + Registrieren + Wählt ein oder kein media NAT traversal protocol. Mögliche Werte sind STUN (Session Traversal Utilities for NAT, RFC 5389) und ICE (Interactive Connectivity Establishment, RFC 5245). + Ungültige Sprachnachrichten URI \'%1$s \' + Konten + Neues Konto + Passwort entschlüsseln + Wollen Sie \'%1$s\' anrufen oder eine Nachricht senden? + Neue Nachricht + Name + Auto-abgewiesener Anruf von %1$s + Anruf + Anrufliste + Ungültige Listening-Adresse + TLS Zertifikat-Datei + Die maximale Anzahl %1$d von Kontakten ist überschritten. + Wollen Sie \'%1$s\' anrufen oder eine Nachricht senden? + Unbekannt + Konto \'%1$s\' hat keinen Telefonanbieter + Verloren + Dieser Anruf ist SICHER, aber die Gegenstelle ist NICHT verifiziert! + Anrufe + Anruf + Richtung + Zeit + Möchten Sie \'%1$s\' zu Kontakten hinzufügen oder %2$s aus der Anrufliste löschen? + Möchten Sie \'%1$s\' %2$s aus der Anrufliste löschen? + Möchten Sie den Anrufverlauf des Kontos \'%1$s löschen? + Möchten Sie die Nachricht löschen oder Gesprächspartner \'%1$s\' zu Kontakten hinzufügen? + Fehlgeschlagen + Löschen + Liste der Video-Codecs nach Priorität. Ziehen um Umzuordnen, Rechtswischen, um zu Aktivieren / Deaktivieren. + Neuordnen + Einstellungen + Wenn angeklickt wird Baresip automatisch ausgeführt nach dem Gerät (Neu)Start. + Batterieoptimierungen + DNS Server konnte nicht eingestellt werden + Sprachnachrichten + Sie haben + neue Nachrichten + Neuer Kontakt + benutzer@domain oder Telefonnummer + Kontakt \'%1$s\' existiert schon. + Profilbild + Wollen Sie Kontakt \'%1$s\' löschen? + Alarm + Nachricht + Abbrechen + Ja + Nein + Hilfe + Bestätigung + Neustarten + Wiederherstellen + Beenden + Anruf zu … + Anruf von … + Umgeleitet von … + Anruf weiterleiten an … + Ungültiger SIP URI \'%1$s\' + Adresse/Telefonnummer + Auflegen + Videoanruf + Ruf Halten + Ruf gehalten + Aufnahme kann nur ein- oder ausgeschalten werden wenn der Ruf nicht verbunden ist + eine neue Nachricht + alte Nachrichten + Sie haben keine Nachrichten + und + Hören + Nachrichten + Wähltastatur + Sie haben schon einen aktiven Anruf. + ’%1$s‘ konnte nicht registriert werden. + Anruf fehlgeschlagen + Anruf beendet + Dieser Anruf ist NICHT sicher! + baresip Ist nicht im Stande eine Bluetooth Verbindung zu erkennen ohne \"Geräte in der Nähe\" Berechtigung. + Geben Sie \"Kamera\" Berechtigung, um Videoanrufe zu machen oder zu empfangen. + Sie können auf Android-Kontakte ohne \"Kontakte\" Berechtigung nicht zugreifen. + baresip+ benötigt \"Mikrofon\"-Berechtigung für Sprachanrufe, \"Kamera\"-Berechtigung für Videoanrufe, \"Geräte in der Nähe\"-Berechtigung für Bluetooth-Mikrofon/Hörer-Erkennung und \"Benachrichtigungen\"-Berechtigung für die Benachrichtigungen. + Ungültiger Kontaktname \'%1$s\' + Favorit + Ungültiger SIP URI + Wenn angeklickt, wird der Kontakt zum Android Adressbuch hinzugefügt. + Löschen + Dauer + Ungültiger Ländercode \'%1$s + Möchten Sie die Nachricht löschen? + Kontakt hinzufügen + Chatverlauf + Deaktivieren + Aktivieren + eine alte Nachricht + Dieser Anruf ist SICHER, und die Gegenstelle ist VERIFIZIERT! Wollen Sie die Gegenstelle unsicher erklären? + Unsicher erklären + Anwendungsdaten wurden gesichert in \'%1$s\'. In Android Version 9 ist die Datei im Download-Ordner. + Neustarten + Anonym + Nachricht senden + Kontakte + Akzeptieren + Passwort + Löschen + Senden + Fehler + Hinzufügen + Bearbeiten + Sie können diese Anwendung nicht ohne \"Benachrichtigungen\"-Berechtigung verwenden. + Ungültiger SIP or tel URI \'%1$s\' + Verweigern + Benutzer ID + Keine Netzwerk Verbindung! + Proxies für ausgehende Verbindungen + Deaktivieren Sie die Akku-Optimierungen (empfohlen), wenn Sie die Wahrscheinlichkeit reduzieren möchten, dass Android den Zugriff von Baresip auf das Netzwerk einschränkt oder Baresip in den Standby-Zustand versetzt. + Standard Telefonie-App + Autostart benötigt Erlaubnis \"Über anderen Apps einblenden\". + Wenn angeklickt ist Baresip die Standard-Telefon-App. Nicht anklicken, wenn Ihr Gerät auch andere als SIP-Anrufe oder -Nachrichten annehmen soll. + Listening Adresse + kann nicht als Wählgerät dienen + DNS Server + Serverzertifikate überprüfen + Bei Anklicken werden von Baresip TLS-Zertifikate von SIP User Agent und SIP Proxy Servern bei Verwendung von TLS-Transport überprüft. + Sprachnachrichten + Sicherung nach \'%1$s\' fehlgeschlagen. Überprüfen Sie Apps → baresip → Berechtigungen → Speicher. + Anwendungsdaten wurden wiederhergestellt und baresip muß neugestartet werden. Neustarten? + Wiederherstellung der Anwendungsdaten fehlgeschlagen. Überprüfen Sie das eingegebene Passwort und dass die Wiederherstellungsdatei von dieser Anwendung stammt. In Android Version 9: Überprüfen Sie Apps → baresip → Berechtigungen → Speicher, sowie, dass \'%1$s\' im Download Ordner existiert. + baresip braucht \"Mikrofon\" Berechtigung für Telefonanrufe. + Sie haben keine unterstützten Videokameras. + Eine Sicherungskopie kann nicht ohne die \"Speicher\"-Berechtigung erstellt werden. + Sie können keine Sicherung wiederherstellen ohne \"Speicher\"-Berechtigung. + Ungültiger STUN/TURN Server URI \'%1$s\' + STUN/TURN Benutzername + Benutzername, wenn der STUN/TURN Server einen verlangt + Ruf Informationen + Eingehender Anruf von + Verpasster Anruf von + Nachricht senden fehlgeschlagen + Möchten Sie den Chat-Verlauf des Kontos \'%1$s\' löschen? + Liste der Audio-Codecs nach Priorität. Ziehen zum Umordnen, Rechtswischen zum Aktivieren oder Deaktivieren. + Zuverlässige temporäre Antworten + Wenn angeklickt gibt das Unterstützung für zuverlässige vorläufige Antworten an (RFC 3262). + Bestimmt ob eine Rufumleitungsanfrage automatisch befolgt wird oder erst nach einer Bestätigung (manuell). + Kontakt + Du + Ungültiger benutzer@domain[:port][;transport=udp|tcp|tls] \'%1$s\' + Antwort + Möchten Sie den Chat mit Partner \'%1$s\' löschen oder Partner zu den Kontakten hinzufügen? + Neuer Chat Partner + SIP URI von einem oder zwei Proxies, die beim Senden von Anfragen verwendet werden müssen. Wenn zwei angegeben sind werden REGISTER Anfragen an beide gesendet, andere Anfragen an den ersten antwortenden. Wenn keine Proxies für ausgehende Verbindungen angegeben sind, werden Verbindungen basiert auf DNS NAPTR/SRV/A record lookup des hostparts der URI der Rufadresse gesendet. Wenn der hostpart der SIP URI eine IPv6 Adresse ist, muß diese in eckigen Klammern geschrieben werden []. +\nBeispiele: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + Ein STUN/TURN Server URI in der Form: schema:host[:port][?transport=udp|tcp], wobei schema \'stun\', \'stuns\', \'turn\', oder \'turns\' ist. Voreingestellter STUN Server für STUN und ICE Protokoll ist \'stun:stun.l.google.com:19302\' der zum öffentlichen Google STUN Server verweist. Es gibt keinen voreingestellten TURN Server. + Wählt eine (oder keine) Medientransportverschlüsselung. +\n • ZRTP (recommended) means that ZRTP end-to-end media encryption negotiation is tried afterthe call has been established. +\n • DTLS-SRTPF means that UDP/TLS/RTP/SAVPF is offered in outgoing call and that RTP/SAVP,RTP/SAVPF, UDP/TLS/RTP/SAVP, or UDP/TLS/RTP/SAVPF is used if offered in incoming call. +\n • SRTP-MANDF means that RTP/SAVPF is offered in outgoing call and required in incoming call. +\n • SRTP-MAND means that RTP/SAVP is offered in outgoing call and required in incoming call. +\n • SRTP means that RTP/AVP is offered in outgoing call and that RTP/SAVP or RTP/SAVPF is usedif offered in incoming call. + Baresip konnte nicht gestartet werden. Das kann wegen eines ungültigen Einstellungswertes sein. Überprüfen Sie die Hören (Listen) Adresse, TLS Zertifikat, TLS CA File. Starten Sie dann baresip neu. + baresip benötigt \"Mikrofon\"-Berechtigung für Sprachanrufe, \"Geräte in der Nähe\"-Berechtigung für Bluetooth-Mikrofon/Hörer-Erkennung und \"Benachrichtigungen\"-Berechtigung für die Benachrichtigungen. + <h1>SIP Endgerät, basierend auf der Baresip Bibliothek </h1> +\n <p>Juha Heinanen &lt;jh@tutpro.com&gt;</p> <p>Version %1$s</p> +\n<h2>Benutzerhinweise</h2> +\n <ul><li>Überprüfen Sie, dass die Einstellungen in baresip Ihren Bedürfnissen entsprechen(tippen Sie auf die Überschriften für Hilfe).</li> +\n <li>In Konten, erstellen sie mindestens eines (tippen Sie auf die einzelnen Punkte für Hilfe).</li> +\n <li>Der Registrierungsstatus eines Kontos wird mit einem farbigen Punkt markiert: grün (Registrierung erfolgreich), gelb (Registrierung im Gange), rot (Registrierung fehlgeschlagen), weiß (Konto ist nicht aktiviert).</li> +\n<li>Tippen auf den Punkt öffnet direkt die Kontokonfiguration.</li> +\n <li>Nach-unten-wischen registriert das aktuelle Konto erneut.</li> +\n<li>Langes Drücken auf das gegenwärtige Konto aktiviert oder deaktiviert die Registrierung.</li> +\n <li>Links/rechts-Wischen schaltet durch die verschiedenen Konten.</li> +\n <li>Der letzte Anrufer kann erneut gewählt werden durch Berühren des Anruf-Symbols, wenn das Anruffeld leer ist.</li> +\n<li>Anrufer und Absender von Nachrichten können zu den Kontakten hinzugefügt werden durch langes Drücken.</li> +\n<li>Langes Drücken kann ebenfalls verwendet werden um Anrufe, Chats, Nachrichten und Kontakte zu löschen.</li> +\n<li>Drücken/langes Drücken des Kontakte-Bildes kann benutzt werden um das Bild zu installieren/entfernen.</li> +\n<li>See <a href=https://github.com/juha-h/baresip-studio/wiki>Wiki</a> for more information (in english).</li></ul> +\n<h2>Privacy Policy</h2> +\n Privacy policy is available <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/master/PrivacyPolicy.txt>here</a>. +\n<h2>Source code</h2> Source code is available at <a href=https://github.com/juha-h/baresip-studio>GitHub</a>,where also issues can be reported. +\n<h2>Lizenzen</h2> +\n<ul><li><b>BSD-3-Clause</b> except the following:</li> <li><b>Apache 2.0</b> AMR codecs and TLS security</li> <li><b>AGPLv4</b> ZRTP media encryption</li> <li><b>GNU LGPL 2.1</b> G.722, G.726, and Codec2 codecs</li> <li><b>GNU GPLv3</b> G.729 codec</li></ul> + SIP Endgerät mit Videoanrufen, basierend auf der Baresip Bibliothek + +

Juha Heinanen <jh@tutpro.com>

+ +

Version %1$s

+ +

Benutzerhinweise

+ +
    + +
  • Überprüfen Sie, dass die Einstellungen in baresip+ Ihren Bedürfnissen entsprechen + + (tippen Sie auf die Überschriften für Hilfe).
  • + +
  • In Konten, erstellen sie mindestens eines (tippen Sie auf die einzelnen Punkte für Hilfe).
  • + +
  • Der Registrierungsstatus eines Kontos wird mit einem farbigen Punkt markiert: grün (Registrierung + + erfolgreich), gelb (Registrierung im Gange), rot (Registrierung fehlgeschlagen), weiß (Konto + + ist nicht aktiviert).
  • + +
  • Tippen auf den Punkt öffnet direkt die Kontokonfiguration.
  • + +
  • Nach-unten-wischen registriert das aktuelle Konto erneut.
  • + +
  • Langes Drücken auf das gegenwärtige Konto aktiviert oder deaktiviert die Registrierung.
  • + +
  • Links/rechts-Wischen schaltet durch die verschiedenen Konten.
  • + +
  • Der letzte Anrufer kann erneut gewählt werden durch Berühren des Anruf-Symbols, wenn das Anruffeld leer ist.
  • + +
  • Anrufer und Absender von Nachrichten können zu den Kontakten hinzugefügt werden durch langes Drücken.
  • + +
  • Langes Drücken kann ebenfalls verwendet werden um Anrufe, Chats, Nachrichten und Kontakte zu löschen.
  • + +
  • Drücken/langes Drücken des Kontakte-Bildes kann benutzt werden um das Bild zu installieren/entfernen.
  • + +
  • Hier: Wiki gibt es mehr + + Informationen (auf English).
  • + +
+ +

Bekannte Probleme

+ +
    + +
  • Bei Videoanrufen muß das Gerät quer gehalten werden, + + um 90 Grad nach links geneigt, von der Hochkantposition betrachtet.
  • + +
  • Das eigene Bild wird nicht richtig gezeigt, wenn Video auf Nursenden eingestellt ist.
  • + +
+ +

Datenschutzerklärung

+ + Die Datenschutzerklärung ist hier abrufbar. + +

Quellcode

+ + Der Quellcode wird auf GitHub bereitgestellt, + + wo auch Fehler gemeldet werden können. + +

Lizenzen

+ +
    + +
  • BSD-3-Clause, außer bei folgendem:
  • + +
  • Apache 2.0 AMR codecs and TLS security
  • + +
  • AGPLv4 ZRTP media encryption
  • + +
  • GNU LGPL 2.1 G.722, G.726, and Codec2 codecs
  • + +
  • GNU GPLv3 G.729 codec
  • + +
  • GNU GPLv2 H.264 and H.265 codecs
  • + +
  • AOMedia AV1 codec
  • + +
+ + ]]>
+ E.164 Ländercode dieses Kontos. Wenn der Benutzerteil der Von-URI des eingehenden Anrufs oder der Nachricht eine Telefonnummer enthält, die nicht mit \'+\'-Zeichen beginnt und wenn der Kontakt nicht bekannt ist, wird der Nummer dieser Ländercode vorangestellt und die Kontaktsuche beginnt erneut. Wenn die Telefonnummer mit einer einzigen Ziffer \'0\' beginnt, wird die Zahl \'0\' entfernt, bevor der Ländercode vorangestellt wird. + Wenn ein neues Konto erstellt wird, kann die Portnummer und das Transportprotokoll des Kontos optional angegeben werden: <user>@<domain>[:<port>][;transport=udp|tcp|tls]. Wird <port> angegeben und das Transportprotokoll nicht angegeben, wird das Transportprotokoll standardmäßig auf udp gesetzt. Wenn <port> nicht und das Transportprotokoll schon angegeben ist, wird <port> 5060 oder 5061 eingestellt (TLS). Wenn weder noch angegeben wird und kein Proxy für ausgehende Verbindungen angegeben wird, wird der Registrar (falls vorhanden) des Kontos ausschließlich auf Basis der DNS-Informationen der Domain ermittelt. + IP-Adresse und Port in der Form \'address:port\', an der Baresip für eingehende SIP-Anfragen lauscht. Wenn die IP-Adresse eine IPv6-Adresse ist, muss sie innerhalb von Klammern geschrieben werden []. IPv4 Adresse 0.0.0.0 oder IPv6 Adresse [:] läßt Baresip an allen verfügbaren Adressen lauschen. Wenn leer gelassen (Standard), hört Baresip auf Port 5060 aller verfügbaren Adressen. + Wählt, welche IP-Adressen Baresip verwendet. Wird IPv4 oder IPv6 gewählt, verwendet Baresip nur IPv4 oder IPv6 Adressen. Wird nichts gewählt, verwendet Baresip sowohl IPv4 als auch IPv6 Adressen. + Kommagetrennte Liste von Adressen von DNS-Servern. Wenn nicht angegeben, werden DNS-Serveradressen dynamisch aus dem System gewonnen. Jede DNS-Adresse ist in der Form \'ip:port\' oder \'ip\'. Wenn der Port weggelassen ist, wird dieser auf 53 gesetzt. Wenn ip eine IPv6-Adresse ist und auch Port angegeben ist, muss ip in Klammern geschrieben werden []. Als Beispiel zeigt die Liste \'8.8.8.8.8:53,[2001:4860:4860:::888888]:53\' auf IPv4 und IPv6 Adressen öffentlicher Google DNS-Server. + Falls angeklickt, wurde oder wird eine Datei mit TLS-Zertifikat und privatem Schlüssel dieser Baresip-Instanz geladen. In Android-Version 9 wird eine Datei namens \'cert.pem\' aus dem Download-Ordner geladen. Löschen Sie aus Sicherheitsgründen diese Datei nach dem Laden. + Video Codecs + Audioeinstellungen + Sicherungskopie + Falls angekreuzt, wird versucht, Echounterdrückung auf den Anruf anzuwenden. + RTCP Multiplexverfahren + Ungültiger Opus Paketverlustprozentsatz + Standardmäßige Anruflautstärke + STUN/TURN Server + STUN/TURN Server URI + RTP Ergeignisse im Frequenzband + Audio Codecs + TLS CA Datei + Wenn Android Kontakte gewählt ist, können diese beim Telefonieren und Verschicken von Direktnachrichten als Referenzen für SIP und tel URIs genutzt werden. Die baresip App speichert keine Android Kontakte und teilt diese auch nicht. Um Android Kontakte in baresip verfügbar zu machen, erfordert Google Ihre Zustimmung zur Nutzung der Kontakte nach den Angaben in der Datenschutzerklärung der App. + Mit Rückfrage (attended) + Ziel-URI auswählen + Transfer + Diesen Anruf zu \'%1$s\' übertragen? + Anrufsanfrage akzeptieren und \'%1$s\' anrufen? + App-Daten konnten nicht wiederhergestellt werden. Ab Android 14 einschließlich können Daten nicht wiederhergestellt werden, die vor %1$s Version %2$s als Sicherungskopie gespeichert wurden. + Tonverzögerung + Informationen + Lautsprecher + Falls angekreuzt, wird die Lautsprecherfunktion automatisch aktiviert, wenn der Anruf beginnt. + Audiomodule + Audio Codecs, die von den ausgewählten Modulen bereitgestellt werden, sind für die Benutzer verfügbar. + AEC Erweiterter Filter + Falls angekreuzt, nutzt die Echounterdrückung den erweiterten Filter. + Opus Bitrate + Durchschnittliche maximale Bitrate, die vom Opus Audiostream genutzt wird. Gültige Werte sind 6000-510000. Die Werkseinstellung beträgt 28000. + Erwarteter Paketverlust von Opus + Erwarteter Paketverlust des Opus Audiostreams in Prozent. Werkseinstellung ist 1. Der Wert 0 deaktiviert die Fehlerkorrektur von Opus (FEC). + Ungültige Opus Bitrate + Zeit (in Millisekunden), um auf Ton vom Angerufenen zu warten, sobald eine Verbindung zustandekommt. Erhöhen Sie den Wert, wenn Tonverlust am Anfang des Telefonats auftritt. + Die Tonverzögerung von \'%1$s\' ist ungültig. Gültige Werte liegen zwischen 100 und 3000. + Immer das dunkle Farbschema nutzen + Debug + Falls angekreuzt, werden Debug- und Info-Level Lognachrichten für Logcat bereitgestellt. + Auf Werkseinstellungen zurücksetzen + Zurücksetzen + Um die neuen Einstellungen zu aktivieren, ist ein Neustart von baresip erforderlich. Jetzt neustraten? + Datei \'cert.pem\' konnte nicht gelesen werden. + Datei \'ca_certs.crt\' konnte nicht gelesen werden. + Videoanfrage + Zustimmen, dass Video mit \'%1$s\' gesendet und empfangen wird? + Zustimmen, dass Video von \'%1$s\' empfangen wird? + Anruftransfer + Ohne Rückfrage (blind) + Jitter: %1$s (ms) + Automatische Weiterleitung zu \'%1$s\'\\ + Umleitungsanfrage + Einer Anrufsumleitung zu \'%1$s\' zustimmen? + Anrufsanfrage + Audio Fokus nicht gewährt! + Gründe für die Berechtigungen + Ungültige Bilder pro Sekunde: \'%1$d\' + Wollen Sie wirklich die Einstellungen auf die Werkseinstellungen zurücksetzen? + Status + SAS <%1$s> verifizieren? + Transferanfrage + Zustimmen, dass Video zu \'%1$s\' gesendet wird? + Anfrage verifizieren + Akustische Echounterdrückung + SIP Trace (Zurückverfolgung) + Falls angekreuzt und falls Debug aktiviert ist, werden Logcat Nachrichten SIP Anfragen und Antwort-Traces enthalten. Wird beim Starten von baresip deaktiviert. + OK + Fehler beim Laden des Moduls. + Wählt aus, ob baresip Kontakte, Android Kontakte, oder beide verwendet werden. Falls beide verwendet werden, werden bei Kontakten, die in beiden Kontaktverzeichnissen vorkommen, die baresip Kontakte genutzt. + Beide + Falls angekreuzt, werden die Einstellungen auf die Werkseinstellungen zurückgesetzt. + Transferziel + Transfer fehlgeschlagen + DTMF + Codecs + Dunkles Farbschema + RTP oder SIP INFO im Frequenzband + Falls angekreuzt, wurde/ wird eine Datei geladen werden, die ein TLS Zertifikat einer Zertifikatsauthorität beinhaltet, die nicht in Android vorhanden ist. In der Android Version 9 wird die Datei \'ca_certs.crt\' aus dem Download-Verzeichnis geladen. + Adressenfamilie + NAT Durchquerung von Medien + Falls aktiviert, liegt die standardmäßige Anruflautstärke auf einer Skala von 1-10. + Größe der Videoframes + +code + Videoframes pro Sekunde + Bildwiederholungsrate, die während einem SDP-Handshake angeboten werden wird. Gültige Werte von 10 bis 30. + Größe der gesendeten Videoframes (Breite x Höhe) + Herkunftsland der Töne + Herkunftsland des Freitons, Halttons und Besetzttons + Zustimmungsanfrage + Mikrofonverstärkung + Die Mikrofonlautstärke wird mit dieser Dezimalzahl multipliziert. Der Minimalwert ist 1.0 (Werkseinstellung) und deaktiviert die Mikrofonverstärkung. Größere Werte können die Tonqualität negativ beeinflussen. + Ungültiger Wert für die Mikrofonverstärkung + User Agent + Benutzerdefinierter Wert für das SIP request/response User-Agent header-Feld + Ungültiger Wert für das User-Agent header-Feld +
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml new file mode 100644 index 0000000..3898903 --- /dev/null +++ b/app/src/main/res/values-el/strings.xml @@ -0,0 +1,11 @@ + + + Σχετικά για το baresip + Λογαριασμός + Εμφανιζόμενο όνομα + Το όνομά σου + Ονομασία (εάν υπάρχει) που χρησιμοποιείται στο URI εξερχόμενων αιτήσεων. + SIP URI του διακομιστή μεσολάβησης + SIP URI του άλλου διακομιστή μεσολάβησης + Εγγραφή + \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml new file mode 100644 index 0000000..820dedc --- /dev/null +++ b/app/src/main/res/values-es/strings.xml @@ -0,0 +1,459 @@ + + + + Acerca de Baresip + Agente de usuario SIP basado en la biblioteca Baresip +

Juha Heinanen < jh@tutpro.com >

+

Versión %1$s

+

Consejos de uso

+
    +
  • Compruebe que los valores predeterminados en la configuración de baresip se ajusten a sus necesidades + (toque los títulos de los elementos para obtener ayuda).
  • +
  • Luego, en Cuentas, crea una o más cuentas (nuevamente toca los títulos de los elementos para obtener ayuda).
  • +
  • El estado de registro de una cuenta se muestra con un punto de color: verde (registro + exitoso), amarillo (el registro está en proceso), rojo (el registro falló), blanco (el registro está en progreso). + no ha sido activado).
  • +
  • Al tocar el punto se accede directamente a la configuración de la cuenta.
  • +
  • El gesto de deslizar hacia abajo provoca el nuevo registro de la cuenta mostrada actualmente.
  • +
  • Al mantener pulsada la cuenta que se muestra actualmente, se habilita o deshabilita el registro de la cuenta.
  • +
  • El gesto de deslizar hacia la izquierda o hacia la derecha alterna entre las cuentas.
  • +
  • Se puede volver a seleccionar la persona que llamó anteriormente tocando el ícono de llamada cuando el destinatario esté vacío.
  • +
  • Los pares de llamadas y mensajes se pueden agregar a los contactos mediante toques prolongados.
  • +
  • Los toques prolongados también se pueden utilizar para eliminar llamadas, chats, mensajes y contactos.
  • +
  • Se puede utilizar el toque o toque prolongado del ícono de contacto para instalar o eliminar la imagen del avatar.
  • +
  • Consulte Wiki para obtener más información. + información.
  • +
+

Política de privacidad

+ La política de privacidad está disponible aquí . +

Código fuente

+ El código fuente está disponible en GitHub , + donde también se pueden reportar problemas. +

Licencias

+
    +
  • Cláusula BSD-3 excepto lo siguiente:
  • +
  • Códecs AMR y seguridad TLS de Apache 2.0 +
  • AGPLv4 Cifrado de medios ZRTP
  • +
  • GNU LGPL 2.1 Códecs G.722, G.726 y Codec2
  • +
  • GNU GPLv3 Códec G.729
  • +
+ ]]>
+ + Cuenta + Nombre para mostrar + Su nombre + Nombre (si lo hay) utilizado en el URI de origen de las solicitudes salientes. + Nombre de usuario de autenticación + Nombre de usuario de autenticación si se requiere la autenticación de las solicitudes SIP. El valor por defecto es el nombre de usuario de la cuenta. + Contraseña de autenticación + Contraseña de autenticación de hasta 64 caracteres. Si se proporciona el nombre de usuario, pero no la contraseña, esta se le pedirá cuando inicie baresip. + Proxies salientes + URI SIP de uno o dos proxies que deben utilizarse al enviar las solicitudes. Si se dan dos, las solicitudes de REGISTRO se envían a ambos y las demás solicitudes se envían a uno que responda. Si no se indica ningún proxy de salida, las solicitudes se envían basándose en la búsqueda del registro DNS NAPTR/SRV/A de la parte de host del URI del destinatario. Si la parte del host del URI SIP es una dirección IPv6, la dirección debe escribirse entre corchetes []. +\nEjemplos: +\n - sip:ejemplo.com:5061;transporte=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + SIP URI del servidor proxy + SIP URI de otro servidor proxy + Registrar + Si está marcado, el registro está habilitado y las solicitudes de REGISTRO se envían en el intervalo especificado por Intervalo de registro. + Códecs de audio + Lista de códecs de audio por orden de prioridad. Arrastre para reordenar, deslice a la derecha para activar o desactivar. + Media NAT transversal + Selecciona el protocolo transversal de NAT media (si lo hay). Las posibles opciones son STUN + (Utilidades de recorrido de sesión para NAT, RFC 5389) e ICE (conectividad interactiva + Establecimiento, RFC 5245). + + Servidor STUN / TURN + Un URI de servidor STUN/TURN de la forma scheme:host[:port][\?transport=udp|tcp], donde scheme es \'stun\', \'stuns\', \'turn\', o \'turns\'. El servidor STUN predeterminado de fábrica para los protocolos STUN e ICE es \'stun:stun.l.google.com:19302\' que apunta al servidor STUN público de Google. No hay servidor TURN por defecto. + Cifrado de medios + Selecciona el protocolo de cifrado de transporte de medios (si lo hay). +\n • ZRTP (recomendado) significa que la negociación de cifrado de medios de extremo a extremo de ZRTP se intenta después que + la llamada ha sido establecida. +\n • DTLS-SRTPF significa que UDP / TLS / RTP / SAVPF se ofrece en llamadas salientes y que RTP / SAVP, + RTP / SAVPF, UDP / TLS / RTP / SAVP o UDP / TLS / RTP / SAVPF se usa si se ofrece en la llamada entrante. +\n • SRTP-MANDF significa que RTP / SAVPF se ofrece en llamadas salientes y se requiere en llamadas entrantes. +\n • SRTP-MAND significa que RTP / SAVP se ofrece en llamadas salientes y se requiere en llamadas entrantes. +\n • SRTP significa que RTP / AVP se ofrece en llamadas salientes y que se utiliza RTP / SAVP o RTP / SAVPF + si se ofrece en llamada entrante. + + Modo de contestación + Selecciona cómo se contestan las llamadas entrantes. + Manual + Automático + URI de correo de voz + URI de SIP para comprobar los mensajes de correo de voz. Si se deja vacío, no se suscribirá a los mensajes de correo de voz (indicaciones de mensaje en espera). + Cuenta predeterminada + Si está marcada, esta cuenta se selecciona cuando se inicia baresip. + + + Cuentas + usuario@dominio + usuario@dominio[:puerto][;transport=udp|tcp|tls] «%1$s» no válido + Ya existe la cuenta «%1$s». + Error al asignar la cuenta nueva. + Contraseña de cifrado + Contraseña para descifrar + ¿Quiere eliminar la cuenta «%1$s»\? + + Contestar + Rechazar + Llamada entrante de + Solicitud de transferencia + Mensaje de + + Historial de llamadas + Llamada + llamadas + llamar + ¿Quiere llamar o enviar un mensaje a «%1$s»\? + ¿Quiere añadir a «%1$s» a los contactos o eliminar %2$s del historial de llamadas\? + ¿Quiere eliminar «%1$s» %2$s del historial de llamadas\? + Eliminar + Desactivar + Activar + ¿Quiere eliminar el historial de llamadas de la cuenta «%1$s»\? + + Mensajes de chat + Chatear con %1$s + Mensaje nuevo + ¿Quiere eliminar el mensaje o añadir el par «%1$s» a los contactos\? + ¿Quiere eliminar el mensaje\? + Añadir contacto + Envío de mensaje fallido + Ha fallado + + Historial de chat + Hoy + Usted + Nuevo compañero de chat + URI de chat no válido + ¿Quieres eliminar el chat con un compañero? \'%1$s\' o + agregar pares a los contactos? + ¿Quiere eliminar el chat con «%1$s»\? + Eliminar + ¿Quiere eliminar el historial de chat de la cuenta «%1$s»\? + + Configuración + Comenzar automáticamente + Si está marcado, baresip se inicia automáticamente después de que el dispositivo se (re)inicia. + Dirección de escucha + Dirección IP y puerto de formulario \'address:port\' en el que escucha baresip + para solicitudes SIP entrantes. Si la dirección IP es una dirección IPv6, debe escribirse dentro + soportes []. La dirección IPv4 0.0.0.0 o la dirección IPv6 [::] hace que la escucha de baresip sea + Direcciones disponibles. Si se deja vacío (predeterminado de fábrica), baresip escucha en el puerto 5060 de + todas las direcciones disponibles. + + Dirección de escucha no válida + Servidores DNS + Lista separada por comas de direcciones de servidores DNS. Si no se da, + Las direcciones del servidor DNS se obtienen dinámicamente del sistema. Cada dirección DNS es de forma + \'ip:port\' o \'ip\'. Si se omite el puerto, el valor predeterminado es 53. Si ip es una dirección IPv6 y + también se da puerto, IP debe + estar escrito entre corchetes []. Como ejemplo, lista \'8.8.8.8:53,[2001:4860:4860::8888]:53\' + apunta a direcciones IPv4 e IPv6 de servidores DNS públicos de Google. + Servidores DNS no válidos + Error al establecer servidores DNS + Archivo de certificado TLS + Si se marca, se ha cargado o se cargará un archivo que contiene el certificado TLS y la clave privada de esta instancia de baresip. En las versiones Android 9, se carga un archivo llamado \'cert.pem\' desde la carpeta Download. Por razones de seguridad, elimine el archivo después de cargarlo. + Archivo de CA de TLS + Si está marcada, se ha cargado o se cargará un archivo que contiene certificados TLS de dichas Autoridades de Certificación que no están incluidas en el SO Android. En las versión de Android 9, se carga un archivo llamado \'ca_certs.crt\' desde la carpeta Download. + Cancelación de eco acústico + Si está marcada, se intenta la cancelación del eco en el audio de la llamada. + Tasa de bits de Opus + Velocidad de bits máxima promedio utilizada por la transmisión de audio Opus. + Los valores válidos son 6000-510000. El valor predeterminado de fábrica es 28000. + Pérdida de paquetes de Opus esperada + Porcentaje esperado de la pérdida de los paquetes del flujo de audio Opus, de 0 a 100. El valor predeterminado de fábrica es 1. El valor 0 también desactiva la corrección de errores hacia delante (FEC) de Opus. El valor predeterminado de fábrica es 1. El valor 0 también desactiva Corrección de errores de reenvío de Opus (FEC). + Tasa de bits de Opus no válida + Porcentaje de pérdida de paquetes opus no válido + Volumen de llamada predeterminado + Si está configurado, el volumen de audio predeterminado de la llamada en escala 1–10. + Depurar + Si se marca, proporciona mensajes de registro de nivel de depuración e información a Logcat. + Restablecer los valores de fábrica + Si está marcado, la configuración se restablece + a los valores predeterminados de fábrica. + Fallo al leer el archivo \'cert.pem\'. + Error al leer el archivo \'ca_certs.crt\'. + + Contacto + Contacto nuevo + Nombre + El nombre de contacto «%1$s» no es válido + Ya existe el contacto «%1$s». + URI de SIP no válido + + Contactos + ¿Quieres llamar o enviar un mensaje a \'%1$s\'? + Enviar mensaje + ¿Quiere eliminar el contacto «%1$s»\? + Su número máximo de contactos %1$d se ha excedido. + + Alerta + Información + Aviso + Cancelar + De acuerdo + + No + Aceptar + Denegar + Id. de usuario + Contraseña + Añadir + Eliminar + Editar + Enviar + Status + Error + + Copia de respaldo + Restaurar + Acerca de + Reiniciar + Salir + Llamar a … + Llamada de … + Transfiriendo llamada a … + URI de SIP no válido \'%1$s\' + Destinatario + Colgar + Retención/desconexión de llamadas + DTMF + Información de llamada + Duración: %1$d (segs) + Códecs + Velocidad actual: %1$s (Kbits/s) + Mensaje de voz + Mensajes de correo de voz + Tiene + un mensaje nuevo + mensajes nuevos + un mensaje antiguo + mensajes antiguos + y + No tiene mensajes + Escuchar + Mensajes + Teclado + Ya tiene una llamada activa. + Baresip no se ha podido iniciar. Esto puede deberse a un valor de configuración no válido. Compruebe la dirección de escucha, el archivo de certificado TLS y el archivo TLS CA. Luego reinicie baresip. + Registro de \`%1$s\` ha fallado. + Verificar la solicitud + ¿Quieres verificar SAS <%1$s>\? + ¿Acepta transferir la llamada a «%1$s»\? + Llamada fallida + La llamada está cerrada + ¡Esta llamada NO es segura! + ¡Esta llamada es SEGURA, pero el par NO está verificado! + ¡Esta llamada es SEGURA y el compañero está VERIFICADO! + ¿Quieres desverificar al compañero? + No verificar + Los datos de la aplicación han sido respaldados en el archivo \'%1$s\'. En las versión de Android 9, el archivo está en la carpeta Download. + Ha fallado la copia de seguridad de los datos de la aplicación en el archivo \'%1$s\'. Compruebe Apps → baresip → Permisos → Almacenamiento. + Se restauraron los datos de la aplicación. Baresip necesita reiniciarse. ¿Quiere reiniciar ahora\? + No se han podido restaurar los datos de la aplicación. Compruebe que ha dado la contraseña correcta y que el archivo de copia de seguridad es de esta aplicación. En las versión de Android 9, compruebe también Aplicaciones → baresip → Permisos → Almacenamiento y que el archivo \'%1$s\' existe en la carpeta Download. + Es necesario reiniciar Baresip para que surta efecto la configuración nueva. ¿Quiere reiniciar ahora\? + Módulos de audio + Las cuentas pueden utiilzar códecs de audio provistos por los módulos comprobados. + Falló la carga del módulo. + baresip necesita permiso de \"Micrófono\" para las llamadas de voz. + Contraseña incorrecta%1$s + Nombre de usuario no válido \'%1$s\' + Lista de códecs de vídeo por orden de prioridad. Arrastre para reordenar, deslice a la derecha para activar o desactivar. + Mostrar contraseña + No tiene ninguna cámara de video compatible. + Concede permiso a \"Cámara\" para realizar o responder videollamadas. + Solicitud de reinicio + No hay información disponible + Error en la transferencia + Transferir + Destino de transferencia + Transferencia de llamadas + Micrófono encendido/apagado + ¿Aceptar la recepción de vídeo de \'%1$s\'\? + ¿Acepta el envío de video a \'%1$s\'\? + ¿Aceptar el envío y la recepción de vídeo con \'%1$s\'\? + Solicitud de vídeo + Videollamada + Confirmación + Ayuda + Si está marcada, este contacto se añade a los contactos de Android. + Restablecer + ¿Estás seguro de que quieres restablecer los valores de fábrica\? + Si está marcada y si Debug está marcada, los mensajes Logcat incluyen también la petición SIP y la traza de respuesta. Desmarcado automáticamente al iniciar baresip. + Seguimiento SIP + Tamaño de los cuadros de vídeo transmitidos (ancho x alto) + Tamaño del fotograma de vídeo + Forzar el tema de la pantalla oscura + Tema oscuro + Si está marcada, la cancelación de eco está utilizando el filtro extendido. + Filtro extendido AEC + Si está marcada, baresip verifica los certificados TLS del Agente de Usuario SIP y de los Servidores Proxy SIP cuando se utiliza el transporte TLS. + Verificar los certificados del servidor + Solicitud de transferencia de llamada a + Llamada perdida de + Cuando se crea una nueva cuenta, el número de puerto de la cuenta y el protocolo de transporte pueden ser dados opcionalmente: <usuario>@<dominio>[:<puerto>][;transporte=udp|tcp|tls]. Si se indica <puerto> y no se indica el protocolo de transporte, el protocolo de transporte será por defecto udp. Si no se da <puerto> y se da el protocolo de transporte, <puerto> es por defecto 5060 o 5061 (TLS). Si no se indica ninguno de los dos y no se especifica ningún proxy de salida, el registrador de la cuenta (si lo hay) se determina únicamente a partir de la información DNS del dominio. + Nueva cuenta + URI de buzón de voz inválido \'%1$s\' + Solicitudes SIP INFO + Eventos RTP en banda + Selecciona cómo se envían los tonos DTMF 0-9, #, * y A-D. + Modo DTMF + Si está marcada, ofrece utilizar el protocolo de medios IPv6 (si está disponible) cuando el protocolo de medios del par no puede determinarse automáticamente. + Preferir medios IPv6 + Contraseña inválida \'%1$s\' + Contraseña si lo requiere el servidor STUN/TURN + Contraseña STUN/TURN + Nombre de usuario inválido \'%1$s\' + Nombre de usuario si lo requiere el servidor STUN / TURN + Nombre de usuario STUN/TURN + URI del servidor STUN/TURN inválido \'%1$s\' + URI del servidor STUN/TURN + Codecs de vídeo + URI del servidor proxy inválido \'%1$s\' + Nombre de pantalla inválido \'%1$s\' + Agente de usuario SIP basado en biblioteca Baresip con videollamadas +

Juha Heinanen <jh@tutpro.com>

+

Versión %1$s

+

Consejos de uso

+
    +
  • Comprobar que los valores por defecto en la configuración de baresip+ se ajustan a sus necesidades + (Toque los títulos de los elementos para obtener ayuda).
  • +
  • Luego, en Cuentas, cree una o más cuentas (otra vez toque los títulos de los elementos para obtener ayuda).
  • +
  • El estado de registro de una cuenta se muestra con un punto de color: verde (registro + Ha sido aprobado), amarillo (el registro está en curso), rojo (el registro falló), blanco (el registro está en curso + no se ha activado).
  • +
  • Tocar el punto lleva directamente a la configuración de la cuenta.
  • +
  • Deslizar el dedo hacia abajo provoca que la cuenta mostrada actualmente vuelva a registrarse.
  • +
  • El toque largo en la cuenta mostrada actualmente activa o desactiva el registro de la cuenta.
  • +
  • El gesto de deslizar hacia la izquierda/derecha alterna entre las cuentas.
  • +
  • La llamada anterior puede ser reseleccionada tocando el icono de llamada cuando Callee está vacío.
  • +
  • Los pares de llamadas y mensajes se pueden agregar a contactos con toques largos.
  • +
  • Los toques largos también se pueden usar para eliminar llamadas, chats, mensajes y contactos.
  • +
  • El icono de contacto puede utilizarse para instalar/eliminar el avatar de la imagen.
  • +
  • Ver Wiki para más información +información.
  • +
+

Problemas conocidos

+
    +
  • En las videollamadas, el dispositivo debe mantenerse en horizontal +modo girado 90 grados a la izquierda de la orientación vertical.
  • +
  • La vista de usuario no se muestra correctamente cuando se transmite vídeo.
  • +
+

Política de privacidad

+La política de privacidad está disponible aquí. +

Código fuente

+El código fuente está disponible en GitHub, +También se pueden comunicar problemas. +

Licencias

+
    +
  • Cláusula BSD-3 excepto lo siguiente:
  • +
  • Apache 2.0 Códecs AMR y seguridad TLS
  • +
  • AGPLv4 Cifrado de medios ZRTP
  • +
  • Codecs GNU LGPL 2.1 G.722, G.726 y Codec2
  • +
  • El códec G.729 de la GNU GPLv3
  • +
  • Codecs H.264 y H.265 de la GNU GPLv2
  • +
  • Codec AV1 de AOMedia
  • +
+]]>
+ Acerca de baresip+ + Intervalo de inscripción + Intervalo de registro no válido\'%1$s\' + Multiplexación RTCP + Código del país + Indica la frecuencia (en segundos) con la que baresip envía peticiones REGISTRO. Los valores válidos van de 60 a 3600. + Si está marcada, los paquetes RTP y RTCP se multiplexan en un único puerto (RFC 5761). + Apodo de la cuenta + Apodo (si lo hay) utilizado para identificar esta cuenta dentro de la aplicación baresip. + Apodo de la cuenta no válido \"%1$s + El apodo \'%1$s\' ya existe + Apodo + Ambos + +código + Detalles de la llamada + Interlocutores + Dirección + Duración + Configuración del audio + usuario@dominio o número de teléfono + Imagen del perfil + Proveedor de telefonía + Parte del host SIP URI utilizada en las llamadas a números de teléfono. Por defecto es el dominio de la cuenta. Si no se indica, esta cuenta no puede utilizarse para llamar a números de teléfono. + Parte del host SIP URI + Código del país \"%1$s\" no válido + Parte del host SIP URI \'%1$s\' no válida + Reordenar + Elige si se utilizan contactos de Baresip, contactos de Android o ambos. Si se utilizan ambos y existe un contacto con el mismo nombre en ambos contactos, se elegirá el contacto bareip. + Solicitud de autorización + SIP o teléfono URI + Llamada en espera + No es posible restaurar la copia de seguridad sin el permiso de \"Almacenamiento\". + ¡No hay conexion de red! + La cuenta \'%1$s\' no tiene proveedor de telefonía + Velocidad media: %1$s (Kbits/s) + Perdidos + Oscilación: %1$s (ms) + Fundamentos de los permisos + Oculto + Asistió + %1$d llamadas perdidas + Optimizaciones de la batería + No podrá crear copias de seguridad sin el permiso \"Almacenamiento\". + Anónimo + Desconocido + URI del teléfono o SIP no válido \'%1$s\' + Paquetes + baresip necesita el permiso \"Micrófono\" para las llamadas de voz, el permiso \"Dispositivos cercanos\" para la detección de micrófonos/altavoces Bluetooth y el permiso \"Notificaciones\" para la publicación de notificaciones. + Llamadas perdidas + Código de país E.164 de esta cuenta. Si la parte de usuario From URI de la llamada entrante o del mensaje contiene un número de teléfono que no empieza por el signo \"+\" y si falla la búsqueda de contacto, se antepone al número este prefijo de país y se vuelve a intentar la búsqueda de contacto. Si el número de teléfono comienza con un solo dígito \"0\", el dígito \"0\" se elimina antes de anteponer el prefijo al número. + Tiempo + Desviada por … + No podrá utilizar esta aplicación sin el permiso de \"Notificaciones\". + Desactive las optimizaciones de batería (recomendado) si desea reducir la probabilidad de que Android restrinja el acceso de baresip a la red o lo ponga en estado de espera. + Si se eligen contactos de Android, pueden ser usados en llamadas y mensajes como referencias a SIP y tel URIs. baresip aplicación no almacena contactos de Android ni compartirlos con nadie. Para que los contactos de Android estén disponibles en baresip, Google requiere que aceptes su uso según se describe aquí y en la Política de privacidad de la aplicación. + baresip no es capaz de detectar la conectividad Bluetooth sin el permiso \"Dispositivos cercanos\". + No se puede acceder a los contactos de Android sin el permiso \"Contactos\". + ¡Enfoque de audio denegado! + baresip+ necesita el permiso \"Micrófono\" para las llamadas de voz, el permiso \"Cámara\" para las videollamadas, el permiso \"Dispositivos cercanos\" para la detección de micrófonos/altavoces Bluetooth y el permiso \"Notificaciones\" para la publicación de notificaciones. + Seleccione la URI de destino + La grabación puede activarse o desactivarse sólo cuando la llamada no está conectada + Elige qué direcciones IP usará Baresip. Si se elige entre IPv4 o IPv6, Barsip usará una solamente. Si no se elige entre ninguna, Baresip ambas (IPv4 e IPv6). + Familia de direcciones + Retraso del audio + Tiempo (en milisegundos) para esperar el audio del destinatario cuando se establece la llamada. Ajústalo a un valor más alto si pierdes el audio del destinatario al principio de la llamada. + Retardo de audio no válido \'%1$s\'. Los valores válidos van de 100 a 3000. + Llamada rechazada automáticamente de %1$s + Aplicación de teléfono predeterminada + La función de teléfono no está disponible + Si está marcada, baresip es la aplicación de teléfono predeterminada. No verifiques si tu dispositivo puede necesitar manejar también llamadas o mensajes que no sean SIP. + Redirección automática a \'%1$s\'\\ + Solicitud de redirección + ¿Aceptas la redirección de llamadas a \'%1$s\'\? + Modo de redirección + Selecciona si la solicitud de redirección de las llamadas se realiza automáticamente o si se solicita confirmación. + Tono para el país + Timbre de llamada, espera y tonos de ocupado de la llamada para un país + Si está marcado, indica el soporte para las respuestas provisionales fiables (RFC 3262). + Respuestas provisionales fiables + Favoritos + El inicio automático necesita el permiso mostrar en la parte superior. + Error al restaurar los datos de la aplicación. Android versión 14 y superiores no permiten restaurar datos de los que se hizo una copia de seguridad antes de %1$s la versión %2$s. + Altavoz del teléfono + Si está marcada, el altavoz se enciende automáticamente al iniciar la llamada. + RTP en la banda o imformación SIP + \'%1$d\' Fps no válido(s) + Fotogramas de vídeo por segundo (fps) + Velocidad de fotogramas de vídeo que se ofrecerá durante el protocolo de enlace SDP. Los valores válidos son del 10 al 30. + Requerimiento + ¿Aceptas el requerimiento \'%1$s\'? + Agente de usuario + Valor del campo de encabezado de agente de usuario de solicitud/respuesta SIP personalizado + Valor de campo de encabezado del agente de usuario no válido + Multiplica el volumen del micrófono por este número decimal. El valor mínimo es 1.0 (predeterminado de fábrica) que desactiva la ganancia del micrófono. Los valores más altos pueden afectar negativamente a la calidad del audio. + Ganancia del micrófono + Valor de ganancia de micrófono no válido +
\ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000..914c7a5 --- /dev/null +++ b/app/src/main/res/values-fi/strings.xml @@ -0,0 +1,581 @@ + + + + baresip sovelluksesta + baresip+ sovelluksesta + + Baresip-kirjastoon perustuva, äänipuhelut ja pikaviestit mahdollistava SIP-sovellus +

Juha Heinanen <jh@tutpro.com>

+

Versio %1$s

+

Käyttövihjeitä

+
    +
  • Tarkista, että baresip-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon kosketus tarjoaa apua.
  • +
  • Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.
  • +
  • Tilin rekisteröintitila kerrotaan värillisellä pisteellä: vihreä (rekisteröinti onnistui), + keltainen (rekisteröinti on meneillään), punainen (rekisteröinti epäonnistui), + valkoinen (rekisteröintiä ei ole aktivoitu).
  • Pisteen kosketus johtaa suoraan tilin asetuksiin.
  • +
  • Pyyhkäisy alas aikaansaa parhaillaan näkyvissä olevan tilin uudelleen rekisteröinnin.
  • +
  • Parhaillaan näkyvissä olevan tilin pitkä kosketus aktivoi tai passivoi tilin rekisteröinnin.
  • +
  • Pyyhkäisyllä vasemmalle/oikealle voit vaihtaa näkyvissä olevaa tiliä.
  • +
  • Voit valita edellisen puhelun uudelleen koskettamalla virheää luuria silloin, kun puhelun kohde on tyhjä.
  • +
  • Voit lisätä puheluiden ja viestien kohteet yhteystietoihin pitkällä kosketuksella.
  • +
  • Pitkillä kosketuksilla voit myös poistaa puheluita, viestiketjuja, viestejä ja yhteystietoja.
  • +
  • Voit lisätä/poistaa yhteystiedon avatar-kuvan koskettamalla yhteystiedon ikonia lyhyesti/pitkästi.
  • +
  • Katso lisätietoja Wiki-sivulta.
  • +
+

Tietosuoja

+ Sovelluksen tietosuojakäytäntö on luettavissa täältä. +

Lähdekoodi

+ Lähdekoodi on saatavilla GitHub:ssa, + missä voi myös raportoida virheistä. +

Lisenssit

+
    +
  • BSD-3-Clause except the following:
  • +
  • BSD-3-Clause paitsi seuraavat:
  • +
  • Apache 2.0 AMR koodausmenetelmät ja TLS turvallisuus
  • +
  • AGPLv4 ZRTP median salausmenetelmä
  • +
  • GNU LGPL 2.1 G.722, G.726, ja Codec2 koodausmenetelmät
  • +
  • GNU GPLv3 G.729 koodausmenetelmä
  • +
+ ]]> +
+ + Baresip-kirjastoon perustuva, videopuhelut ja pikaviestit mahdollistava SIP-sovellus +

Juha Heinanen <jh@tutpro.com>

+

Versio %1$s

+

Käyttövihjeitä

+
    +
  • Tarkista, että baresip+-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon kosketus tarjoaa apua.
  • +
  • Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.
  • +
  • Tilin rekisteröintitila kerrotaan värillisellä pisteellä: vihreä (rekisteröinti onnistui), + keltainen (rekisteröinti on meneillään), punainen (rekisteröinti epäonnistui), + valkoinen (rekisteröintiä ei ole aktivoitu).
  • +
  • Pisteen kosketus johtaa suoraan tilin asetuksiin.
  • +
  • Pyyhkäisy alas aikaansaa parhaillaan näkyvissä olevan tilin uudelleen rekisteröinnin.
  • +
  • Parhaillaan näkyvissä olevan tilin pitkä kosketus aktivoi tai passivoi tilin rekisteröinnin.
  • +
  • Pyyhkäisyllä vasemmalle/oikealle voit vaihtaa näkyvissä olevaa tiliä.
  • +
  • Voit valita edellisen puhelun uudelleen koskettamalla virheää luuria silloin, kun puhelun kohde on tyhjä.
  • +
  • Voit lisätä puheluiden ja viestien kohteet yhteystietoihin pitkällä kosketuksella.
  • +
  • Pitkillä kosketuksilla voit myös poistaa puheluita, viestiketjuja, viestejä ja yhteystietoja.
  • +
  • Voit lisätä/poistaa yhteystiedon avatar-kuvan koskettamalla yhteystiedon ikonia lyhyesti/pitkästi.
  • +
  • Katso lisätietoja Wiki-sivulta.
  • +
+

Tunnetut ongelmat

+
    +
  • Videopuheluissa laitetta on pidettävä vaakasuorassa asennossa kiertämällä sitä 90 astetta vasempaan + pystysuorasta asennosta.
  • +
  • Oman videokuvan näyttö ei toimi, jos video on vain lähetyssuuntainen.
  • +
+

Tietosuoja

+ Sovelluksen tietosuojakäytäntö on luettavissa täältä. +

Lähdekoodi

+ Lähdekoodi on saatavilla GitHub:ssa, + missä voi myös raportoida virheistä. +

Lisenssit

+
    +
  • BSD-3-Clause except the following:
  • +
  • BSD-3-Clause paitsi seuraavat:
  • +
  • Apache 2.0 AMR koodausmenetelmät ja TLS turvallisuus
  • +
  • AGPLv4 ZRTP median salausmenetelmä
  • +
  • GNU LGPL 2.1 G.722, G.726, ja Codec2 koodausmenetelmät
  • +
  • GNU GPLv3 G.729 koodausmenetelmä
  • +
  • GNU GPLv2 H.264 ja H.265 koodausmenetelmät
  • +
  • AOMedia AV1 koodausmenetelmä
  • +
+ ]]> +
+ + Tili + Tilin lempinimi + Lempinimi (jos annettu) millä tämä tili identifioidaan + baresip sovelluksessa. + Lempinimi + Virheellinen tilin lempinimi \'%1$s\' + Lempinimi \'%1$s\' on jo olemassa + Tilin käyttäjän nimi + Tilin käyttäjän nimi + Tilin käyttäjän nimi, joka esiintyy + SIP-sanomien From URI:ssa (vapaaehtoinen). + Virheellinen tilin käyttäjän nimi \'%1$s\' + Käyttäjätunnus + Todentamiseen käytettävä + käyttäjätunnus, jos välityspalvelin vaatii sellaisen. Oletusarvo on + tilin käyttäjätunnus. + + Virheellinen todennuskäyttäjänimi \'%1$s\' + Todennuksen salasana + Todentamiseen käytettävä + salasana, jonka pituus on enintään 64 ASCII merkkiä. Jos + käyttäjätunnus on annettu, mutta salasanaa ei ole annettu, se + kysytään, kun baresip käynnistetään. + + Virheellinen todennussalasana \'%1$s\' + Välityspalvelimet + Yhden tai kahden + välityspalvelimen SIP URI, joille SIP-sanomat lähetetään. Jos + välityspalvelimia on annettu kaksi, REGISTER-sanomat yritetään + lähettää molemmille välityspalvelimille ja muut sanomat yhdelle + toiminnassa olevalle välityspalvelimelle. Jos välityspalvelimia ei + ole annettu, SIP-sanomat lähetetään palvelimelle, mikä selviää + kohteen domainille tehtävien NAPTR/SRV/Animipalvelukyselyiden perusteella. + Jos välityspalvelimen osoite SIP + URI:ssa on IPv6-osoite, osoite pitää kirjoittaa sulkujen [] sisään. +\nEsimerkkejä: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + + Välityspalvelimen SIP URI + Toisen + välityspalvelimen SIP URI + Virheellinen välityspalvelimen URI \'%1$s\' + Rekisteröi + Jos merkitty, rekisteröinti on aktiivinen ja REGISTER-sanomat + lähetetään Rekisteröintitaajuus-asetuksen mukaisesti. + Rekisteröintitaajuus + Kertoo kuinka usein baresip lähettää REGISTER-sanomia. Arvon on + oltava välillä 60-3600 (sekunttia). + Virheellinen Rekisteröintitaajuus \'%1$s\' + Media NAT hallinta + Valitsee media NAT hallintaprotokollan + (vapaaehtoinen). Vaihtoehtoja ovat STUN (Session Traversal Utilities + for NAT, RFC 5389) ja ICE (Interactive Connectivity Establishment, RFC 5245). + + STUN/TURN-palvelin + STUN/TURN-palvelimen muotoa \'kaava:palvelin[:portti][\?transport=udp|tcp]\' + oleva URI, missä kaava on \'stun\', \'stuns\', \'turn\' tai \'turns\'. Oletus STUN-palvelin + STUN- ja ICE-protokollille on \'stun:stun.l.google.com:19302\', joka osoittaa Google:n + julkiseen STUN-palvelimeen. TURN-palvelimella ei ole oletusarvoa. + + STUN/TURN-palvelimen URI + Virheellinen STUN/TURN-palvelimen URI \'%1$s\' + STUN/TURN-käyttäjätunnus + Käyttäjätunnus jos STUN/TURN-palvelin vaatii sellaisen + Virheellinen käyttäjänimi %1$s + STUN/TURN-salasana + Salasana jos STUN/TURN-palvelin vaatii sellaisen + Virheellinen salasana \'%1$s\' + Median salaus + Valitsee median salausprotokollan (vapaaehtoinen). +\n • ZRTP (suositeltu) tarkoittaa, että ZRTP-salausta yritetään neuvotella sen jälkeen, kun puhelu on alkanut. +\n • DTLS-SRTPF tarkoittaa, että UDP/TLS/RTP/SAVPF-protokollaa tarjotaan lähteviin puheluihin + ja että RTP/SAVP-, RTP/SAVPF-, UDP/TLS/RTP/SAVP- tai + UDP/TLS/RTP/SAVPF-protokollaa käytetään, jos sellaista tarjotaan tulevassa puhelussa. +\n • SRTP-MANDF tarkoittaa, että RTP/SAVPF-protokollaa tarjotaan + lähtevissä puheluissa ja että se vaaditaan tulevissa puheluissa. +\n • SRTP-MAND takoittaa, että RTP/SAVP-protokollaa tarjotaan + lähteviin puheluihin ja että se vaaditaan tulevissa puheluissa. +\n • SRTP tarkoittaa, että RTP/AVP-protokollaa tarjotaan + lähteviin puheluihin ja että RTP/SAVP- tai RTP/SAVPF-protokollaa + käytetään, jos sellaista tarjotaan tulevissa puheluissa. + + Suosi IPv6-mediaprotokollaa + Jos merkitty, tarjoa IPv6-mediaprotokollaa (mikäli + se on käytettävissä), jos puhelun molempien osapuolten tukemaa mediaprotokollaa + ei saada automaattisesti selvitettyä. + + RTCP-multipleksaus + Jos merkitty, RTP- and RTCP-paketit multipleksataan samaan porttiin + (RFC 5761). + + Luotettavat alustavat vastaukset + Jos merkitty, kutsussa ilmoitetaan luotettavien alustavien vastausten + tukemisesta (RFC 3262). + DTMF-moodi + Valitsee tavan, miten DTMF-merkit 0–9, #, * ja A-D lähetetään. + RTP-tapahtuma + SIP INFO -pyyntö + RTP tai SIP INFO + Vastaustapa + Valitsee tulevien puheluiden vastaustavan. + Manuaalinen + Automaattinen + Uudelleenohjaustapa + Valitsee toteutetaanko puhelun uudelleenohjauspyyntö + automaattisesti vai kysytäänkö vahvistusta. + Puhepostin URI + SIP URI, jota käytetään + puhepostiviestien kuunteluun. Jos URI:a ei ole annettu, tietoa + mahdollista puhepostiviesteistä (Message Waiting Indications) ei tilata. + + Virheellinen puhepostin URI \'%1$s\' + Maakoodi + Tämän tilin E.164-maakoodi. Jos tulevan puhelun tai viestin + From URI:n käyttäjäosa sisältää puhelinnumeron, joka ei ala \'+\' merkillä, ja jos sitä + ei löydy yhteystiedoista, niin tämä maakoodi lisätään numeron eteen ja etsintä tehdään + uudelleen. Jos puhelinnumero alkaa yhdellä numerolla \'0\', niin numero \'0\' + poistetaan ennen maakoodin lisäämistä. + + +koodi + Virheellinen maakoodi \'%1$s\' + Puhelinpalvelun tarjoaja + SIP URI:n domain-osa, jota käytetään soitettaessa + puhelinnumeroihin. Tehdasasetus on tilin domain-osa. Jos tyhjä, niin tätä tiliä ei + voi käyttää soitettaessa puhelinnumeroihin. + + SIP URI:n domain osa + Virheellinen SIP URI:n domain-osa \'%1$s\' + Oletustili + Jos merkitty, niin tämä tili on + valittuna, kun baresip käynnistetään. + + + Tilit + Uusi tili + Kun uusi tili luodaan, voidaan haluttaessa antaa myös porttinumero + ja tiedonsiirtoprotokolla: <käyttäjä>@<domain>[:<portti>][;transport=udp|tcp|tls]. + Jos <portti> on annettu, mutta protokollaa ei ole annettu, protokolla on udp. + Jos <portti> ei ole annettu, mutta protokolla on annettu, portti on joko 5060 tai 5061 (tls). + Jos kumpaakaan ei ole annettu eikä välityspalvelinta ole määritelty, tilin mahdollinen + rekisteröintipalvelin päätellään pelkästään domainin DNS-informaation perusteella. + + käyttäjä@domain + Virheellinen käyttäjä@domain[:portti][;transport=udp|tcp|tls] \'%1$s\' + + Tili \'%1$s\' on jo olemassa. + Uuden tilin luonti epäonnistui. + Tallenna salasanalla + Palauta salasanalla + Haluatko poistaa tilin \'%1$s\'\? + + Vastaa + Hylkää + Puhelu soittajalta + Vastaamaton puhelu soittajalta + Vastaamattomia puheluita + %1$d vastaamatonta puhelua + Puhelun siirtopyyntö kohteeseen + Viesti lähettäjältä + Automaattisesti hylätty puhelu soittajalta \`%1$s\` + + Puheluhistoria + Soita + puhelut + puhelun + Suunta + Kumppani + Aika + Kesto + Haluatko soittaa tai lähettää viestin kohteeseen + \'%1$s\'\? + + Haluatko luoda uuden yhteystiedon \'%1$s\' tai poistaa + %2$s puheluhistoriasta\? + + Haluatko poistaa \'%1$s\' %2$s puheluhistoriasta\? + Tyhjennä + Poista käytöstä + Ota käyttöön + Haluatko tyhjentää tilin \'%1$s\' puheluhistorian\? + + Viestiketju + Viestiketju %1$s + Uusi viesti + Haluatko poistaa viestin tai + luoda uuden yhteystiedon \'%1$s\'\? + Haluatko poistaa viestin\? + Lisää yhteystieto + Viestin lähetys epäonnistui + Epäonnistui + + Viestiketjut + Tänään + Sinä + Uusi viestin kohde + Virheellinen viestikumppanin URI + Haluatko poistaa viestiketjun tai + luoda uuden yhteystiedon \'%1$s\'\? + Haluatko poistaa viestiketjun \'%1$s\'\? + Tyhjennä + Haluatko tyhjentää tilin \'%1$s\' viestihistorian\? + + Audion koodausmenetelmät + Luettelo audion koodausmenetelmistä prioriteettijärjestyksessä. + Järjestä raahaamalla ja pudottamalla, ota käyttöön tai poista käytöstä pyyhkäisemällä oikealle. + + Videon koodausmenetelmät + Luettelo videon koodausmenetelmistä prioriteettijärjestyksessä. + Järjestä raahaamalla ja pudottamalla, ota käyttöön tai poista käytöstä pyyhkäisemällä oikealle. + + Järjestä + + Asetukset + Käynnistä automaattisesti + Jos merkitty, baresip + käynnistyy automaattisesti, kun laite käynnistyy. + Automaattinen käynnistys vaatii "Näytä päällimmäisenä" + käyttöoikeuden. + Akun käytön optimointi + Ota akun käytön optimointi pois päältä (suositeltu), + jos haluat vähentää todennäköisyyttä, että Android rajoittaa baresip-sovelluksen toimintaa + ja pääsyä verkkoon. + Oletuspuhelinsovellus + Puhelinrooli ei ole saatavana + Jos merkity, baresip on oletuspuhelinsovellus. Älä merkitse, jos laitteesi täytyy hallita myös muita kuin SIP-puheluita tai -viestejä. + Kuunteluosoite + IP-osoite ja portti muotoa + \'osoite:portti\', missä baresip kuuntelee sisään tulevia + SIP-sanomia. Jos IP-osoite on IPv6-osoite, se täytyy kirjoittaa + sulkujen [] sisään. IPv4-osoite 0.0.0.0 tai IPv6-osoite [::] + tarkoittaa kaikkia käytössä olevia osoitteita. Oletusarvo on tyhjä, + jolloin baresip kuuntelee porttia 5060 kaikilla käytössä olevilla + osoitteilla. + + Virheellinen kuunteluosoite + Osoiteperhe + Valitsee, mitä IP-osoitteita baresip käyttää. Jos IPv4 tai IPv6 + on valittu, baresip käyttää ainoastaan IPv4- tai IPv6-osoitteita. Jos kumpaakaan ei ole + valittu, baresip käyttää sekä IPv4- että IPv6-osoitteita. + + DNS-palvelimet + Pilkulla toisistaan erotettu luettelo DNS-palvelijoiden + osoitteita. Jos jätetään antamatta (oletus), osoitteet hankitaan dynaamisesti järjestelmästä. + Kukin osoite on muotoa \'ip:portti\' tai \'ip\', missä ip on IPv4 tai IPv6 osoite. Jos ip + on IPv6-osoite ja myös portti annetaan, pitää osoite kirjoittaa sulkujen [] sisään. + Esimerkiksi luettelo \'8.8.8.8:53,[2001:4860:4860::8888]:53\' osoittaa Googlen julkisiin + DNS-palvelijoihin. + Virheelliset DNS-palvelimet + DNS-palvelinten asetus epäonnistui + TLS-sertifikaattitiedosto + Jos merkitty, tiedosto joka sisältää + tämän baresip-sovelluksen julkisen ja yksityisen TLS-sertifikaatin, on joko jo ladattu + tai tullaan lataamaan. Android versiossa 9 tiedosto nimeltään \'cert.pem\' + ladataan Download-kansiosta. Turvallisuusyistä tuhoa tiedosto heti lataamisen jälkeen. + + Tarkista palvelinten sertifikaatit + Jos merkitty, baresip tarkistaa SIP-palvelinten + sertifikaatit, kun TLS-tiedonsiirto on käytössä. + + TLS CA-tiedosto + Jos merkitty, tiedosto on joko jo ladattu tai tullaan + lataamaan, joka sisältää sellaisten sertifikaattiauktoriteettien (CA) julkiset sertifikaatit, + jotka eivät sisälly Android-käyttöjärjestelmään. Android versiossa 9 tiedosto + nimeltään \'ca_certs.crt\' ladataan Download-kansiosta. + + Audio-asetukset + Kaiutin + Jos merkitty, kaiutin kytketään sutomaattisesti päälle + kun puhelu alkaa. + + Audio-modulit + Merkittyjen modulien tarjoamat audio-koodekit ovat tilien + käytettävissä. + + Modulin lataaminen epäonnistui. + Akustinen kaiun poisto (AKP) + Jos merkitty, kaikua yritetään poistaa ohjelmiston avulla + puheluiden aikana. + AKP laajennettu suodatin + Mikrofonin äänikerroin + Kertoo mikrofonin äänen voimakkuuden tällä desimaaliluvulla. + Minimikerroin on 1.0 (tehdasasetus), mikä ei muuta mikrofonin äänen voimakkuutta. Suuremmat + arvot voivat vaikuttaa negatiivisesti äänen laatuun. + Virheellinen mikrofonin äänikerroin + 1.0 + Opus-koodekin bittinopeus + Opus-koodekin käyttämä + keskimääräinen enimmäisnopeus. Mahdollisia arvoja ovat + 6000-510000. Oletusarvo on 28000. + + Odotettu opus-pakettihäviö + Odotettu opus audio virran pakettihäviö prosentteina. + Mahdolliset arvot ovat 0-100. Oletusarvo on 1. Arvo 0 poistaa käytöstä + ennakoivan virheenkorjauksen. + Virheellinen Opus-koodekin bittinopeus + Virheellinen Opus-koodekin odotettu pakettihäviö + Audioviive + Audion odotusviive (millisekunneissa) soitetun puhelun alkaessa. + Aseta korkeampi arvo, jos et kuule vastaajan ääntä heti, kun puhelu alkaa. + Virheellinen audioviive \'%1$s\'. Sallittu arvo on välillä 100–3000. + Oletus äänen voimakkuus + Jos valittu, puhelun äänen voimakkuus + asteikolla 1–10. + Puheluäänien maa + Soitto-, odotus- ja varattuäänien maa + Tumma teema + Käytä aina tummaa näyttöteemaa + Videon kehyskoko + Lähetettävän videon kehyskoko (leveys x korkeus) + Videokehysten lähetystaajuus + Videokehysten lähetystaajuus per sekuntti, jota tarjotaan + SDP-neuvottelun aikana. Arvon on oltava välillä 10-30. + Virheellinen videokehysten lähetystaajuus \'%1$d\' + User Agent + Räätälöity SIP sanoman User-Agent otsikkokentän arvo + Virheellinen User-Agent otsikkokentän arvo + Valitsee, käytetäänkö Baresip-yhteystietoja, Android-yhteystietoja vai molempia. Jos molempia käytetään ja molemmissa yhteystiedoissa on samanniminen yhteystieto, valitaan baresip-yhteystieto. + Molemmat + Lokiviestit + Jos merkitty, baresip tuottaa debug- ja info-tason Logcat-viestejä. + SIP-sanomien jäljitys + Jos merkitty ja jos Lokiviestit on merkitty, Logcat-viestit + sisältävät myös lähetetyt ja vastaanotetut SIP-sanomat. On aina merkitsemättä sovelluksen + käynnistyessä. + Palauta oletusasetukset + Jos merkitty, oletusasetukset palautetaan, kun + baresip seuraavan kerran käynnistetään. + + Oletko varma, että haluat palauttaa oletusasetukset\? + Palauta + Tiedoston \'cert.pem\' luku epäonnistui. + Tiedoston \'ca_certs.crt\' epäonnistui. + baresip täytyy käynnistää uudelleen, jotta saat uudet asetukset + käyttöön. Käynnistä nyt\? + + Suostumuspyyntö + Jos Androidin yhteystiedot on valittu, voit käyttää niitä puheluissa ja viesteissä SIP ja tel URI:en ohella. Baresip ei talleta Androidin yhteystietoja eikä jaa niitä kenellekään. Jotta Baresip saisi käyttöönsä Androidin yhteystiedot, Google vaatii, että annat siihen suostumuksen hyväksymällä Baresip-sovelluksen yksityisyyskäytännöt. + + Yhteystieto + Uusi yhteystieto + Nimi + SIP tai tel URI + käyttäjä@domain tai puhelinnumero + Suosikki + Virheellinen yhteystiedon nimi \'%1$s\' + Yhteystieto \'%1$s\' on jo olemassa. + Virheellinen SIP:n URI + Jos merkitty, tämä yhteystieto lisätään Androidin yhteystietoihin. + Profiilikuva + + Yhteystiedot + Haluatko soittaa tai lähettää + viestin ositteeseen \'%1$s\'\? + Lähetä viesti + Haluatko poistaa yhteystiedon \'%1$s\'\? + Yhteystietojesi enimmäismäärä %1$d on ylittynyt. + + Varoitus + Tieto + Huomio + Peruuta + OK + Kyllä + Ei + Hyväksy + Estä + Käyttäjätunnus + Salasana + Lisää + Poista + Muokkaa + Lähetä + Tila + Virhe + Apua + Vahvistus + Anonyymi + Tuntematon + Virheellinen SIP tai puh. URI \'%1$s\' + baresip + Android + + Tallenna + Palauta + Tietoja + Käynnistä uudelleen + Lopeta + Puhelu ulos … + Puhelu sisään … + Siirtäjä … + Puhelun siirto … + Virheellinen SIP URI \'%1$s\' + Tilille \'%1$s\' ei ole konfiguroitu puhelinpalvelun + tarjoajaa + Puhelun kohde + Lopeta + Videopuhelu + Videopyyntö + Salli video videon lähetys ja vastaanotto puhelussa \'%1$s\'\? + Salli video videon lähetys puhelussa \'%1$s\'\? + Salli video videon vastaanotto puhelussa \'%1$s\'\? + Puhelu pitoon/pidosta + Puhelu on pidossa + Mikrofoni päälle/pois + Tallennus voidaan asettaa päälle tai pois vain silloin, kun puhelu + ei ole yhdistetty + Puhelun siirto + Sokeasti + Osallistu + Siirron kohde + Valitse kohteen URI + Siirto + Siirto epäonnistui + DTMF + Puhelutiedot + Ei saatavilla + Kesto: %1$d (sek) + Koodekit + Nykyinen nopeus: %1$s (Kbit/s) + Keskinopeus: %1$s (Kbit/s) + Paketit + Hukkunut + Vaihtelu: %1$s (ms) + Puheposti + Puhepostiviestit + Sinulla on + yksi uusi viesti + uutta viestiä + yksi vanha viesti + vanhaa viestiä + ja + Sinulla ei ole viestejä + Kuuntele + Viestit + Numeronäppäimistö + Sinulla on jo puhelu käynnissä. + Sovelluksen käynnistäminen epäonnistui. Tämä voi johtua virheellisestä + Asetukset arvosta. Tarkista Kuunteluosoite, TLS-varmennintiedosto ja TLS CA-tiedosto. + Sen jälkeen käynnistä baresip uudelleen. + Tilin \'%1$s\' rekisteröinti epäonnistui. + Todennuspyyntö + Todennatko SAS:n <%1$s>\? + Siirtopyyntö + Hyväksytkö tämän puhelun siirron kohteeseen \'%1$s\'\? + Soittopyyntö + Hyväksytkö pyynnön soittaa kohteeseen \'%1$s\'\? + Automaattinen uudelleenohjaus kohteeseen \'%1$s\'\ + Uudelleenohjauspyyntö + Hyväksytkö puhelun uudelleenohjauksen kohteeseen \'%1$s\'\? + Puhelu epäonnistui + Puhelu on päättynyt + Tämä puhelu EI ole turvallinen! + Tämä puhelu on turvallinen, mutta kohdetta ei ole + todennettu! + Tämä puhelu on turvallinen ja kohde on + todennettu! Haluatko poistaa todennuksen\? + Poista todennus + Sovelluksen tiedot (äänityksiä lukuunottamatta) + talletettiin tiedostoon \'%1$s\'. Android versiossa 9 tiedosto löytyy + Download-kansiosta. + Sovelluksen tietojen talletus + tiedostoon \'%1$s\' epäonnistui. Android versiossa 9 tarkista + Asetukset → Sovellukset → baresip → Käyttöluvat → Tallennustila. + Uudelleenkäynnistyspyyntö + Sovelluksen tiedot palautettiin. baresip pitää käynnistää + uudelleen. Käynnistä uudelleen nyt\? + Sovelluksen tietojen palauttaminen epäonnistui. Tarkista, että + annoit oikean salasanan ja että palautustiedosto kuuluu tällä sovellukselle. + Android versiossa 9 tarkista myös Asetukset → Sovellukset → baresip → Käyttöluvat → + Tallennustila ja että tiedosto \'%1$s\' on Download-kansiossa. + Sovelluksen tietojen palauttaminen epäonnistui. Android + versiosta 14 alkaen ei salli tietojen palauttamista, jos ne on tallettu ennen %1$s versioa + %2$s. + Et voi käyttää tätä sovellusta ilman Ilmoitukset-lupaa. + Et voi soittaa puheluita tai vastata niihin ilman Mikrofoni-lupaa. + baresip ei voi havaita Bluetooth-yhteyttä ilman + \"Lähellä olevat laitteet\" lupaa. + Salli Kamera-lupa jotta voit soittaa videopuheluita ja vastata niihin. + Et voi tallentaa sovelluksen tietoja ilman Tallennustila-lupaa. + Et voi palauttaa sovelluksen tietoja ilman Tallennustila-lupaa. + Sinulla ei ole yhtään tuettua video-kameraa. + Näytä salasana + Ei verkkoyhteyttä! + Puhelutiedot + Et voi käyttää Androidin yhteystietoja ilman Yhteystiedot-lupaa. + Audio fokus evätty! + Tarvittavat luvat + baresip tarvitsee Mikrofoni-luvan puheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen havaitsemista varten ja Ilmoitukset-luvan ilmoitusten lähettämistä varten. + baresip+ tarvitsee Mikrofoni-luvan puheluita varten, Kamera-luvan videopuheluita varten ja Lähellä olevat laitteet -luvan Bluetooth-mikrofonin/kaiuttimen havaitsemista varten ja Ilmoitukset-luvan ilmoitusten näyttämistä varten. +
\ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..25677b5 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,129 @@ + + + Transférer + Demande de vidéo + Appel vidéo + Raccrocher + Transfert d’appel à… + Appel entrant de… + Appel sortant à… + Quitter + Redémarrer + À propos + Restaurer + Sauvegarder + Confirmation + Aide + Erreur + Statut + Envoyer + Modifier + Supprimer + Ajouter + Mot de passe + Refuser + Accepter + Non + Oui + OK + Annuler + Infos + Envoyer le message + Contacts + Le contact « %1$s » existe déjà. + Nom de contact invalide « %1$s » + Nom + Nouveau contact + Contact + Débogage + Serveurs DNS + Démarrer automatiquement + Paramètres + Supprimer + Vous + Aujourd’hui + Échec de l’envoi du message + Ajouter un contact + Nouveau message + Voulez-vous supprimer l’historique des appels du compte « %1$s » \? + Activer + Désactiver + Supprimer + Voulez-vous appeler ou envoyer un message à « %1$s » \? + appel + appels + Appel + Historique des appels + Message de + Demande de transfert d’appel vers + Appel entrant de + Refuser + Répondre + Voulez-vous supprimer le compte « %1$s » \? + Déchiffrer le mot de passe + Chiffrer le mot de passe + Nouveau compte + Comptes + Chiffrement des médias + Mot de passe STUN/TURN + Nom d’utilisateur « %1$s » invalide + Nom d’utilisateur STUN / TURN + Messages vocaux + Messagerie vocale + URI de la messagerie vocale + Nom d’utilisateur d’authentification + Nom d’affichage invalide « %1$s » + Nom (le cas échéant) utilisé dans l\'URI From des demandes sortantes. + Votre nom + Nom d’affichage + Compte + À propos de baresip+ + À propos de baresip + Mot de passe d\'authentification invalide « %1$s » + Mot de passe d\'authentification jusqu\'à 64 caractères. Si le nom d\'utilisateur d\'authentification est donné mais que le mot de passe n\'est pas donné, il sera demandé au démarrage de baresip. + Mot de passe d\'authentification + Nom d\'utilisateur d\'authentification invalide « %1$s » + Vous avez déjà un appel actif. + Clavier + Messages + Écouter + Vous n\'avez aucun message + et + anciens messages + un ancien message + nouveaux messages + un nouveau message + Vous avez + Débit : %1$s (kbit/s) + Infos de l\'appel + Durée %1$d + Aucune information disponible + Nom d\'utilisateur d\'authentification si l\'authentification des demandes SIP est requise. La valeur par défaut est le nom d\'utilisateur du compte. + Codecs vidéo + Échec + S\'enregistrer + Codecs audio + Serveur STUN/TURN + Manuel + Mode de réponse + Compte par défaut + user@domain + Id. utilisateur + Appelant + DTMF + Alerte + Notice + Automatique + Codecs + Historique des conversations + Annuler la vérification + Messages des conversations + Adresse d\'écoute + Restaurer + Modules audio + Surnom de compte invalide « %1$s » + Le surnom « %1$s » existe déjà + Surnom du compte + Surnom (le cas échéant) utilisé pour identifier ce compte dans l\'application baresip. + Surnom + \ No newline at end of file diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml new file mode 100644 index 0000000..e11fdb5 --- /dev/null +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -0,0 +1,371 @@ + + + + Baresip library based SIP User Agent +

Juha Heinanen <jh@tutpro.com>

+

Version %1$s

+

Usage Hints

+
    +
  • Check that default values in Settings meet your needs (touch item titles for help).
  • +
  • Then in Accounts, create one or more accounts (again touch item titles for help).
  • +
  • Registration status of an account is shown with a colored dot: green (registration + succeeded, yellow (registration is in progress), red (registration failed), white (registration + has not been activated).
  • +
  • Touch on the dot leads directly to account configuration.
  • +
  • Swipe down gesture causes re-registration of the currently shown account.
  • +
  • Peers of calls and messages can be added to contacts by long touches.
  • +
  • Long touches can also be used to remove calls, chats, messages, and contacts.
  • +
  • Touch/long touch of contact icon can be used to install/remove image avatar.
  • +
  • You can re-reselect the previous call party by touching the call icon when Callee is empty.
  • +
+

Known Issues

+
    +
  • Due to limitations in underlying libraries, baresip does not currently support multiple, + concurrently active network interfaces. Active network interface preference order is VPN, + Internet, other.
  • +
+

Source code

+ Source code is available at GitHub, + where also issues can be reported. +

Licenses

+
    +
  • BSD-3-Clause except the following:
  • +
  • Apache 2.0 AMR codec and TLS security
  • +
  • LGPL 2.1 G.722 and G.726 codecs
  • +
  • AGPLv4 ZRTP media encryption
  • +
  • GNU GPLv3 G.729 codec
  • +
+ ]]> +
+ + Baresip library based SIP User Agent with video calls +

Juha Heinanen <jh@tutpro.com>

+

Version %1$s

+

Usage Hints

+
    +
  • Check that default values in Settings meet your needs (touch item titles for help).
  • +
  • Then in Accounts, create one or more accounts (again touch item titles for help).
  • +
  • Registration status of an account is shown with a colored dot: green (registration + succeeded, yellow (registration is in progress), red (registration failed), white (registration + has not been activated).
  • +
  • Touch on the dot leads directly to account configuration.
  • +
  • Swipe down gesture causes re-registration of the currently shown account.
  • +
  • Peers of calls and messages can be added to contacts by long touches.
  • +
  • Long touches can also be used to remove calls, chats, messages, and contacts.
  • +
  • Touch/long touch of contact icon can be used to install/remove image avatar.
  • +
  • You can re-reselect the previous call party by touching the call icon when Callee is empty.
  • +
+

Known Issues

+
    +
  • Due to limitations in underlying libraries, multiple concurrently active network + interfaces are not supported. Active network interface preference order is VPN, + Internet, other.
  • +
  • In video calls, the device needs to be held in landscape + mode rotated 90 degrees left from portrait orientation.
  • +
  • Selfview is not properly shown when video stream is sendonly.
  • +
+

Source code

+ Source code is available at GitHub, + where also issues can be reported. +

Licenses

+
    +
  • BSD-3-Clause except the following:
  • +
  • Apache 2.0 AMR codec and TLS security
  • +
  • LGPL 2.1 G.722 and G.726 codecs
  • +
  • AGPLv4 ZRTP media encryption
  • +
  • GNU GPLv2 H.264 codec
  • +
  • GNU GPLv3 G.729 codec
  • +
+ ]]> +
+ SIPリクエストの認証が必要な場合は、認証ユーザー名を入力して下さい。 + デフォルト値はアカウントのユーザー名です。 + + 認証パスワードは64文字までです。 + もし、ユーザー名を入力したのにパスワードが入力されていない場合は、baresipの起動時に問い合わせます。 + + リクエストを送るときに、1つか2つSIP URIを使う必要がある。 + 2つとも入力された場合、両方にREGISTERリクエストが送られ、他のリクエストは応答する方に送られます。 + outboundプロキシが与えられない場合、リクエストはcalllee URI hostpartのDNS NAPTR/SRV/Aレコード検索に基づいて送信される。 + SIP URIのhostpartがIPv6アドレスの場合、アドレスは括弧[]内に記載しなければなりません。 + \n記入例: + \n • sip:example.com:5061;transport=tls + \n • sip:[2001:67c:223:777::10];transport=tcp + \n • sip:192.168.43.50:443;transport=wss + + チェックを入れると、登録が有効になり、12 分間隔で REGISTER 要求が送信されます。 + 対応しているオーディオコーデックの優先順位一覧 + 対応しているビデオコーデックの優先順位一覧 + 必要であればメディアのNAT探索プロトコルを選択してください。 + 選択肢としては、STUN(Session Traversal Utilities for NAT、RFC 5389) + とICE(Interactive Connectivity Establishment、RFC 5245)があります。 + + A STUN/TURN Server URI of form scheme:host[:port], where scheme + is \'stun\' or \'turn\'. Factory default STUN Server for STUN and + ICE protocols is \'stun:stun.l.google.com:19302\' pointing to public Google STUN server. + There is no factory default TURN server. + + Selects media transport encryption protocol (if any). + \n • ZRTP (recommended) means that ZRTP end-to-end media encryption negotiation is tried after + the call has been established. + \n • DTLS-SRTPF means that UDP/TLS/RTP/SAVPF is offered in outgoing call and that RTP/SAVP, + RTP/SAVPF, UDP/TLS/RTP/SAVP, or UDP/TLS/RTP/SAVPF is used if offered in incoming call. + \n • SRTP-MANDF means that RTP/SAVPF is offered in outgoing call and required in incoming call. + \n • SRTP-MAND means that RTP/SAVP is offered in outgoing call and required in incoming call. + \n • SRTP means that RTP/AVP is offered in outgoing call and that RTP/SAVP or RTP/SAVPF is used + if offered in incoming call. + + SIP URI for checking of voicemail messages. If left empty, voicemail + messages (Message Waiting Indications) are not subscribed to. + + If checked, this account is selected when baresip is started. + Account\'s port number and transport protocol may be optionally given when a new + account is created: username@domain[:port][;transport=udp|tcp|tls]. If port is given and transport protocol is + not given, transport protocol defaults to udp. If port is not given and transport protocol is given, port + defaults to 5060 or 5061 (TLS). If neither is given and no outbound proxy is specified, account\'s registrar (if + any) is determined solely based on domain\'s DNS information. + + Do you want to add \'%1$s\' to contacts or delete %2$s from call history? + + Do you want to delete chat with peer \'%1$s\' or add peer to contacts? + IP address and port of form \'address:port\' at which baresip listens + for incoming SIP requests. If IP address is an IPv6 address, it must be written inside + brackets []. IPv4 address 0.0.0.0 or IPv6 address [::] makes baresip listen at all + available addresses. If left empty (factory default), baresip listens at port 5060 of + all available addresses. + + Comma separated list of addresses of DNS servers. If not given, + DNS server addresses are obtained dynamically from the system. Each DNS address is of form + \'ip:port\' or \'ip\'. If port is omitted, it defaults to 53. If ip is an IPv6 address and + also port is given, ip must + be written inside brackets []. As an example, list \'8.8.8.8:53,[2001:4860:4860::8888]:53\' + points to IPv4 and IPv6 addresses of public Google DNS servers. + + If checked, file \'cert.pem\' containing TLS certificate and private key of this baresip instance has been or will be loaded from Download directory. For security reasons, delete the file after loading. + If checked, file \'ca_certs.crt\' containing TLS certificates of Certificate Authorities has been or will be loaded from Download directory. + Audio codecs provided by the checked modules are + available for use by the accounts. + + Average maximum bit rate used by Opus audio stream. + Valid values are 6000-510000. Factory default is 28000. + + Expected Opus audio stream packet loss percentage, + from 0–100. By default 0, turning off Opus Forward Error Correction (FEC). + + Size of transmitted video frames (width x height) + + If checked and if Debug is checked, provides also SIP + request and response trace to Logcat. Unchecked automatically at baresip start. + + You need to restart baresip in order to activate the new settings. Restart now? + + Baresip failed to start. This may be due to an invalid Settings value. + Check Listen Address, TLS Certificate File, and TLS CA File. Then restart baresip. + + This call is SECURE and peer is VERIFIED! Do you want to unverify the peer? + Failed to back up application data to Download folder file + \'%1$s\'. Check Apps → baresip → Permissions → Storage. + + Failed to restore application data from Download folder. Check Apps → baresip → Permissions → Storage and that backup file \'%1$s\' exists in the folder and, if so, you gave correct Decrypt Password. + Application data restored. baresip needs to be restarted. Restart now? +  %1$s  %2$s を通話履歴から削除してもよいですか? +  %1$s のメッセージと連絡先を削除してもよいですか? + 無効な認証ユーザー名 %1$s です + 転送 + テレビ電話リクエスト + テレビ電話 + 切断 + 転送中 + 着信中 + 発信中 + 終了 + 再起動 + 詳細 + 復元 + バックアップ + 確認 + ヘルプ + エラー + 状態 + 送信 + 編集 + 削除 + 追加 + パスワード + 拒否 + 承認 + いいえ + OK + キャンセル + 情報 + メッセージ送信 + 連絡先 + 連絡先名 %1$s は既に存在します + 無効な連絡先名 %1$s です + 名前 + 新規連絡先 + 連絡先 + デバック + DNSサーバー + 自動的に開始 + 設定 + 削除 + あなた + 今日 + メッセージの送信に失敗 + 連絡先の追加 + 新規メッセージ + アカウント %1$s の通話履歴を削除しますか? + 有効化 + 無効化 + 削除 +  %1$s に電話をかけるか、メッセージを送信しますか? + 通話 + 通話 + 着信中 + 通話履歴 + メッセージ着信 + 転送リクエスト + 着信 + 拒否 + 応答 + アカウント %1$s を削除しますか? + 復号化パスワード + 暗号化パスワード + 新規アカウント + アカウント + メディアの暗号化 + STUN/TURNパスワード + 無効な表示名 %1$s です + STUN/TURNユーザー名 + Voicemailメッセージ + Voicemail + VoicemailのURI + 認証ユーザー名 + 必要であればFrom URIで使用される名前を入力 + Votre nom + 表示名 + アカウント + baresip+について + baresipについて + 無効な表示名 %1$s です + 無効な表示名 %1$s です + 着信失敗 + はい + パスワード表示 + 認証パスワード + 無効な認証パスワード %1$s です + 発信プレフィクス + SIP URIのプロキシサーバー + SIP URIの認証プロキシサーバー + 無効なプロキシサーバー %1$s です + 登録 + オーディオコーデック + ビデオコーデック + メディアのNAT探索 + STUN/TURNサーバー + STUN/TURNサーバーのURI + 無効なSTUN/TURNサーバーのURI %1$s です + 無効なVoicemail URI %1$s です + 無効なuser@domain[:port][;transport=udp|tcp|tls] %1$s です + IPv6メディアを優先 + 応答モード + マニュアル + 自動 + 既定のアカウント + user@domain + アカウント %1$s は既に存在します + 新しいアカウントの割り当てに失敗しました。 + チャットメッセージ +  %1$s とチャット + メッセージを削除しますか? + 失敗 + チャット履歴 + 新しいチャット相手 + SIP URIが無効です +  %1$s とのチャットを削除しますか? + アカウント %1$s とのチャット履歴を削除しますか? + 受信対象アドレス + 受信対象アドレスが無効です + DNSサーバーが無効です + DNSサーバーの設定に失敗しました + TLS証明書ファイル + TLS CA証明書ファイル + オーディオモジュール + モジュールの読み込みに失敗しました + チェックを入れると、通話音声のエコーキャンセルを試みます + 音響エコーキャンセル拡張フィルタ + Opusのビットレート + 期待されるOpusのパケットロス + Opusのビットレートが無効です + Opusパケットロス率が無効です + 既定の通話ボリューム + ダークテーマ + ビデオフレームサイズ + SIP追跡 + 工場出荷時設定にリセット + ダウンロード・ディレクトリから \'cert.pem\' の読み込みに失敗しました。 + ダウンロード・ディレクトリから \'ca_certs.crt\' の読み込みに失敗しました。 + 無効なSIP URI %1$s です + 警告 + 通知 + ユーザーID + 無効なSIP URI %1$s です + 呼び出し先 + 保留 + 通話転送 + 転送先 + 転送失敗 + DTMF + 情報はありません + 電話情報 + 通話時間 %1$d + コーデック + レート: %1$s + あなたは + 1件のメッセージ + 新規メッセージ + 1件の古いメッセージ + 古いメッセージ + + メッセージはありません + メッセージ + ダイヤルパット + すでに通話中です + 確認要求 + 転送要求 + 呼び出し失敗 + 通話終了 + この通話は安全ではありません! + この通話は安全ですが、相手は確認されていません! + 未検証 + 再起動要求 + カメラにビデオ通話の許可を与えます + 対応しているビデオカメラがありません + STUN/TURN サーバーで必要な場合のユーザー名 + STUN/TURN サーバーで必要な場合のパスワード + チェックを入れると、ピアのメディアプロトコルが自動的に決定できない場合に、IPv6メディアプロトコルの使用をオファーします(使用可能な場合) + + 着信した電話にどのように応答するかを選択します。 + チェックを入れると、デバイスの再起動後に自動的にbaresipが起動します + 音響エコーキャンセル + チェックを入れると、エコーキャンセルは拡張フィルタを使用しています。 + 設定されている場合、デフォルトの通話音声の音量は1~10段階です + ダークテーマを強制する + チェックを入れると、デバッグおよび情報レベルのログメッセージをLogcatに提供します。 + チェックを入れると、設定は工場出荷時のデフォルト値にリセットされます。 +  %1$s に電話をかけるか、メッセージを送信しますか? + 連絡先 %1$s を削除しますか? + 連絡先の最大数 %1$d を超えました +  %1$s でテレビ通話の送受信を許可しますか? +  %1$s へのテレビ通話を許可しますか? +  %1$s からのテレビ通話を許可しますか? + 受信 +  %1$s への登録失敗 + SAS <%1$s> を検証しますか\? +  %1$s への通話転送を許可しますか? + アプリケーションデータがダウンロードフォルダ %1$s にバックアップされました + マイクへの権限付与がなく電話をかけたり、応答したりすることはできません。 +
\ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..3e8284b --- /dev/null +++ b/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,420 @@ + + + ritosip + ritosip + + + ritosip 소개 + ritosip 소개 + + Ritosip 라이브러리를 기반으로 한 SIP 사용자 에이전트 +

Juha Heinanen <jh@tutpro.com>

+

버전 %1$s

+

사용 방법

+
    +
  • baresip 설정에서 기본값이 적절한지 확인하세요 (항목 제목을 터치하면 도움말 제공).
  • +
  • 계정 메뉴에서 하나 이상의 계정을 생성하세요 (다시 한 번 항목 제목을 터치하면 도움말 제공).
  • +
  • 계정의 등록 상태는 색깔 점으로 표시됩니다: 초록색 (등록 성공), 노란색 (등록 진행 중), 빨간색 (등록 실패), 흰색 (등록되지 않음).
  • +
  • 점(●)을 터치하면 계정 설정으로 바로 이동합니다.
  • +
  • 아래로 스와이프하면 현재 표시된 계정을 다시 등록합니다.
  • +
  • 길게 터치하면 계정 등록을 활성화하거나 비활성화할 수 있습니다.
  • +
  • 좌우로 스와이프하면 다른 계정으로 전환됩니다.
  • +
  • 이전 통화 상대를 다시 선택하려면 통화 아이콘을 터치하세요 (수신자가 비어 있을 경우).
  • +
  • 통화 및 메시지 상대를 길게 터치하면 연락처에 추가할 수 있습니다.
  • +
  • 길게 터치하면 통화 기록, 채팅, 메시지, 연락처를 삭제할 수 있습니다.
  • +
  • 연락처 아이콘을 터치하거나 길게 터치하면 프로필 이미지를 추가/제거할 수 있습니다.
  • +
  • 더 많은 정보를 보려면 Wiki를 방문하세요.
  • +
+

개인정보 보호정책

+ 개인정보 보호정책은 여기에서 확인할 수 있습니다. +

소스 코드

+ 소스 코드는 GitHub에서 확인할 수 있으며, 문제 보고도 가능합니다. +

라이선스

+
    +
  • BSD-3-Clause (다음 예외 포함):
  • +
  • Apache 2.0 AMR 코덱 및 TLS 보안
  • +
  • AGPLv4 ZRTP 미디어 암호화
  • +
  • GNU LGPL 2.1 G.722, G.726, Codec2 코덱
  • +
  • GNU GPLv3 G.729 코덱
  • +
+ ]]> +
+ + + 계정 + 장치명 + 이 앱에서 계정을 식별하는 데 사용될 장치명입니다. + 장치명 + 잘못된 장치명 \'%1$s\' + 이미 존재하는 장치명 \'%1$s\' + 표시 이름 + 당신의 이름 + 발신 요청의 From URI에 표시될 이름입니다. + 잘못된 표시 이름 \'%1$s\' + 인증 사용자 이름 + SIP 요청의 인증이 필요한 경우 사용할 인증 사용자 이름입니다. 기본값은 계정의 사용자 이름입니다. + 잘못된 인증 사용자 이름 \'%1$s\' + 인증 비밀번호 + 최대 64자의 인증 비밀번호입니다. 인증 사용자 이름이 입력되었지만 비밀번호가 입력되지 않은 경우, ritosip이 시작될 때 요청됩니다. + 잘못된 인증 비밀번호 \'%1$s\' + 아웃바운드 프록시 + SIP 요청을 보낼 때 사용해야 하는 하나 또는 두 개의 프록시 서버의 SIP URI입니다. + 두 개를 지정하면 REGISTER 요청이 모두에게 전송되며, 기타 요청은 응답하는 한 곳으로 전송됩니다. + 아웃바운드 프록시를 지정하지 않으면 대상 URI의 호스트 부분에 대한 DNS NAPTR/SRV/A 레코드 조회를 기반으로 요청이 전송됩니다. + SIP URI의 호스트 부분이 IPv6 주소인 경우, 반드시 대괄호([])로 감싸야 합니다. + +예제: + +• sip:example.com:5061;transport=tls +• sip:[2001:67c:223:777::10];transport=tcp +• sip:192.168.43.50:443;transport=wss + + 프록시 서버의 SIP URI + 다른 프록시 서버의 SIP URI + 잘못된 프록시 서버 URI \'%1$s\' + 등록 + 체크하면 등록이 활성화되며, 지정된 등록 간격에 따라 REGISTER 요청이 전송됩니다. + 등록 간격 + ritosip이 REGISTER 요청을 전송하는 간격(초 단위)입니다. 유효한 값은 60에서 3600 사이입니다. + 잘못된 등록 간격 \'%1$s\' + 미디어 NAT 트래버설 + 미디어 NAT 트래버설 프로토콜을 선택합니다 (선택 사항). 가능한 선택지는 STUN (Session Traversal Utilities for NAT, RFC 5389) 및 ICE (Interactive Connectivity Establishment, RFC 5245)입니다. + STUN/TURN 서버 + STUN/TURN 서버 URI 형식: scheme:host[:port][\?transport=udp|tcp], + 여기서 scheme은 \'stun\', \'stuns\', \'turn\', \'turns\' 중 하나입니다. STUN 및 ICE 프로토콜의 기본 STUN 서버는 \'stun:stun.l.google.com:19302\'이며, 이는 공개 Google STUN 서버를 가리킵니다. 기본 TURN 서버는 없습니다. + + STUN/TURN 서버 URI + 잘못된 STUN/TURN 서버 URI \'%1$s\' + stun:stun.l.google.com:19302 + STUN/TURN 사용자 이름 + STUN/TURN 서버에서 요구하는 경우 입력하는 사용자 이름입니다. + 잘못된 사용자 이름 \'%1$s\' + STUN/TURN 비밀번호 + STUN/TURN 서버에서 요구하는 경우 입력하는 비밀번호입니다. + 잘못된 비밀번호 \'%1$s\' + 미디어 암호화 + 미디어 전송 암호화 프로토콜을 선택합니다 (선택 사항). + + • ZRTP (추천) - 통화가 설정된 후 ZRTP 엔드 투 엔드 미디어 암호화 협상을 시도합니다. + • DTLS-SRTPF - 발신 통화에서 UDP/TLS/RTP/SAVPF를 제공하며, 수신 통화에서 RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP 또는 UDP/TLS/RTP/SAVPF 중 하나를 사용합니다. + • SRTP-MANDF - 발신 통화에서 RTP/SAVPF를 제공하며, 수신 통화에서 이를 필수로 요구합니다. + • SRTP-MAND - 발신 통화에서 RTP/SAVP를 제공하며, 수신 통화에서 이를 필수로 요구합니다. + • SRTP - 발신 통화에서 RTP/AVP를 제공하며, 수신 통화에서 RTP/SAVP 또는 RTP/SAVPF를 사용할 경우 이를 허용합니다. + + IPv6 미디어 우선 사용 + 체크하면, 상대방의 미디어 프로토콜을 자동으로 결정할 수 없는 경우 IPv6 미디어 프로토콜을 사용하도록 제안합니다. + RTCP 멀티플렉싱 + 체크하면 RTP와 RTCP 패킷이 하나의 포트에서 멀티플렉싱됩니다 (RFC 5761). + 신뢰할 수 있는 임시 응답 + 체크하면 신뢰할 수 있는 임시 응답(RFC 3262)을 지원함을 나타냅니다. + DTMF 모드 + DTMF 톤(0–9, #, *, A-D)을 전송하는 방식을 선택합니다. + 인밴드 RTP 이벤트 + SIP INFO 요청 + 인밴드 RTP 또는 SIP INFO + 응답 모드 + 수신 전화를 응답하는 방식을 선택합니다. + 리디렉트 모드 + 전화 리디렉트 요청을 자동으로 따를지, 확인을 요청할지를 선택합니다. + 수동 + 자동 + 음성사서함 URI + 음성 메시지를 확인하기 위한 SIP URI입니다. 비워두면 음성 메시지(메시지 대기 표시)를 구독하지 않습니다. + 잘못된 음성사서함 URI \'%1$s\' + 국가 코드 + 이 계정의 E.164 국가 코드입니다. 수신 전화 또는 메시지의 발신자 URI 사용자 부분이 \'+\' 기호로 시작하지 않는 전화번호이고, 연락처 검색에 실패한 경우 이 국가 코드가 번호 앞에 추가되어 다시 검색됩니다. 전화번호가 \'0\'으로 시작하는 경우, \'0\'을 제거한 후 국가 코드가 추가됩니다. + +코드 + 잘못된 국가 코드 \'%1$s\' + 전화 서비스 제공자 + 전화번호로 전화를 걸 때 사용하는 SIP URI의 호스트 부분입니다. 기본값은 계정의 도메인입니다. 입력하지 않으면 이 계정을 사용하여 전화번호로 전화를 걸 수 없습니다. + SIP URI 호스트 부분 + 잘못된 SIP URI 호스트 부분 \'%1$s\' + 기본 계정 + 체크하면, ritosip이 시작될 때 이 계정이 기본 계정으로 선택됩니다. + + 계정 + 새 계정 + 새 계정을 생성할 때, 계정의 포트 번호 및 전송 프로토콜을 선택적으로 지정할 수 있습니다: <user>@<domain>[:<port>][;transport=udp|tcp|tls]. + 포트 번호를 지정하고 전송 프로토콜을 지정하지 않으면 기본값은 UDP입니다. + 포트를 지정하지 않고 전송 프로토콜을 지정하면, 기본 포트는 5060 또는 5061(TLS)로 설정됩니다. + 둘 다 지정되지 않고 아웃바운드 프록시도 없으면, 계정의 등록 서버(있는 경우)는 도메인의 DNS 정보를 기반으로 결정됩니다. + + 사용자@도메인 + 잘못된 사용자@도메인[:포트][;transport=udp|tcp|tls] \'%1$s\' + 계정 \'%1$s\'이(가) 이미 존재합니다. + 새 계정을 할당하지 못했습니다. + 비밀번호 암호화 + 비밀번호 복호화 + 계정 \'%1$s\'을(를) 삭제하시겠습니까? + + + 응답 + 거절 + 수신 전화: %1$s + 부재중 전화: %1$s + 부재중 전화 + %1$d개의 부재중 전화 + 통화 전환 요청: %1$s + 메시지 발신자: %1$s + 자동 거부된 전화: \'%1$s\' + + + 통화 기록 + 통화 상세 정보 + 통화 + 통화들 + 통화 + 상대 + 방향 + 시간 + 통화 시간 + \'%1$s\'에게 전화를 걸거나 메시지를 보내시겠습니까? + \'%1$s\'을(를) 연락처에 추가하거나 %2$s을(를) 통화 기록에서 삭제하시겠습니까? + \'%1$s\' %2$s을(를) 통화 기록에서 삭제하시겠습니까? + 삭제 + 비활성화 + 활성화 + 계정 \'%1$s\'의 통화 기록을 삭제하시겠습니까? + + + 채팅 메시지 + \'%1$s\'님과 채팅 + 새 메시지 + 메시지를 삭제하거나 \'%1$s\'을(를) 연락처에 추가하시겠습니까? + 메시지를 삭제하시겠습니까? + 연락처 추가 + 메시지 전송 실패 + 실패 + + + 채팅 기록 + 오늘 + 당신 + 새 채팅 상대 + 잘못된 채팅 상대 URI + \'%1$s\'과의 채팅을 삭제하거나 연락처에 추가하시겠습니까? + \'%1$s\'과의 채팅을 삭제하시겠습니까? + 삭제 + 계정 \'%1$s\'의 채팅 기록을 삭제하시겠습니까? + + + 오디오 코덱 + 우선순위에 따라 정렬된 오디오 코덱 목록입니다. 드래그하여 순서를 변경하고, 오른쪽으로 스와이프하여 활성화 또는 비활성화할 수 있습니다. + 비디오 코덱 + 우선순위에 따라 정렬된 비디오 코덱 목록입니다. 드래그하여 순서를 변경하고, 오른쪽으로 스와이프하여 활성화 또는 비활성화할 수 있습니다. + 재정렬 + + + 설정 + 자동 시작 + 체크하면 기기가 (재)시작될 때 ritosip이 자동으로 실행됩니다. + 자동 시작을 위해 "다른 앱 위에 표시" 권한이 필요합니다. + 배터리 최적화 + Android가 baresip의 네트워크 접근을 제한하거나 절전 모드로 전환하는 것을 방지하려면 배터리 최적화를 비활성화하는 것이 좋습니다. + 기본 전화 앱 + 다이얼러 역할을 사용할 수 없습니다. + 체크하면 ritosip이 기본 전화 앱이 됩니다. SIP 전화나 메시지 외의 다른 기능이 필요한 경우 체크하지 마세요. + 수신 주소 + ritosip이 수신 SIP 요청을 듣는 IP 주소와 포트 (\'주소:포트\' 형식). IPv6 주소의 경우 대괄호([])로 묶어야 합니다. IPv4 주소 0.0.0.0 또는 IPv6 주소 [::]를 입력하면 모든 사용 가능한 주소에서 수신 대기합니다. 기본값은 5060 포트에서 모든 사용 가능한 주소를 수신합니다. + 잘못된 수신 주소 + 0.0.0.0:5060 + 주소 패밀리 + ritosip이 사용할 IP 주소 유형을 선택합니다. IPv4 또는 IPv6을 선택하면 해당 주소만 사용합니다. 선택하지 않으면 IPv4와 IPv6을 모두 사용합니다. + DNS 서버 + 쉼표로 구분된 DNS 서버 주소 목록입니다. 지정하지 않으면 시스템에서 자동으로 DNS 서버 주소를 가져옵니다. 형식: \'ip:포트\' 또는 \'ip\'. 포트를 생략하면 기본값은 53입니다. IPv6 주소와 포트를 함께 입력할 경우 IPv6 주소는 대괄호([])로 묶어야 합니다. 예: \'8.8.8.8:53,[2001:4860:4860::8888]:53\' (Google DNS 서버). + 잘못된 DNS 서버 + DNS 서버 설정 실패 + TLS 인증서 파일 + 체크하면 ritosip 인스턴스의 TLS 인증서와 개인 키가 포함된 파일을 로드합니다. Android 9에서는 \'cert.pem\' 파일이 다운로드 폴더에서 로드됩니다. 보안을 위해 로드 후 파일을 삭제하세요. + 서버 인증서 검증 + 체크하면 ritosip이 TLS 전송을 사용할 때 SIP 사용자 에이전트 및 SIP 프록시 서버의 TLS 인증서를 검증합니다. + TLS CA 파일 + 체크하면 Android OS에 포함되지 않은 인증 기관(CA)의 TLS 인증서를 로드합니다. Android 9에서는 \'ca_certs.crt\' 파일이 다운로드 폴더에서 로드됩니다. + + + 오디오 설정 + 스피커폰 + 체크하면 통화가 시작될 때 자동으로 스피커폰이 켜집니다. + 오디오 모듈 + 체크된 모듈에서 제공하는 오디오 코덱이 계정에서 사용 가능합니다. + 모듈 로드 실패 + 음향 에코 제거 + 체크하면 통화 오디오에서 소프트웨어 기반 에코 제거를 시도합니다. + AEC 확장 필터 + 체크하면 확장 필터를 사용하여 에코 제거를 수행합니다. + 마이크 감도 + 마이크 볼륨을 이 값(소수점 허용)만큼 곱하여 조정합니다. 최소값은 1.0(기본값)이며, 이 값에서는 마이크 감도가 조정되지 않습니다. 높은 값은 음질에 부정적인 영향을 줄 수 있습니다. + 잘못된 마이크 감도 값 + 1.0 + Opus 비트레이트 + Opus 오디오 스트림에서 사용할 평균 최대 비트레이트입니다. 유효 범위는 6000~510000이며, 기본값은 28000입니다. + 28000 + 예상 Opus 패킷 손실 + Opus 오디오 스트림에서 예상되는 패킷 손실 비율 (0~100%). 기본값은 1입니다. 값이 0이면 Opus 전방 오류 수정(FEC)이 비활성화됩니다. + 0 + 잘못된 Opus 비트레이트 + 잘못된 Opus 패킷 손실 비율 + + 디버그 + 체크하면 Logcat에 디버그 및 정보 수준 로그 메시지를 제공합니다. + SIP 추적 + 체크하면 디버그가 활성화된 상태에서 Logcat 메시지에 SIP 요청 및 응답 추적이 포함됩니다. ritosip 시작 시 자동으로 비활성화됩니다. + 공장 초기화 + 체크하면 설정이 공장 초기값으로 재설정됩니다. + 설정을 공장 초기값으로 재설정하시겠습니까? + 초기화 + \'cert.pem\' 파일을 읽는 데 실패했습니다. + \'ca_certs.crt\' 파일을 읽는 데 실패했습니다. + 새 설정을 적용하려면 ritosip을 다시 시작해야 합니다. 지금 다시 시작하시겠습니까? + 사용 동의 요청 + Android 연락처를 선택하면, SIP 및 전화 URI 참조로 사용할 수 있습니다. ritosip 앱은 Android 연락처를 저장하거나 공유하지 않습니다. baresip에서 Android 연락처를 사용할 수 있도록 하려면 Google이 여기에 설명된 사용을 수락할 것을 요구합니다. + 개인정보 보호정책 + + + + 연락처 + 새 연락처 + 이름 + SIP 또는 전화 URI + 사용자@도메인 또는 전화번호 + 즐겨찾기 + 잘못된 연락처 이름 \'%1$s\' + 연락처 \'%1$s\'이(가) 이미 존재합니다. + 잘못된 SIP URI + 체크하면 이 연락처가 Android 연락처에 추가됩니다. + 프로필 이미지 + + + 연락처 + \'%1$s\'에게 전화를 걸거나 메시지를 보내시겠습니까? + 메시지 보내기 + 연락처 \'%1$s\'을(를) 삭제하시겠습니까? + 최대 연락처 수(%1$d)를 초과했습니다. + + + 알림 + 정보 + 공지 + 취소 + 확인 + + 아니오 + 수락 + 거부 + 사용자 ID + 비밀번호 + SIP URI + 추가 + 삭제 + 편집 + 보내기 + 상태 + 오류 + 도움말 + 확인 + 익명 + 알 수 없음 + + • %1$s + 잘못된 SIP 또는 전화 URI \'%1$s\' + baresip + Android + + + 백업 + 복원 + Logcat + 정보 + 재시작 + 종료 + 전화 걸기 + 수신 전화 … + 다른 경로로 연결됨 … + 통화 전환 중 … + 잘못된 SIP URI \'%1$s\' + 계정 \'%1$s\'에 전화 서비스 제공자가 없습니다. + 수신자 + 통화 종료 + 영상 통화 + 영상 요청 + \'%1$s\'와(과) 영상 송수신을 허용하시겠습니까? + \'%1$s\'에게 영상 전송을 허용하시겠습니까? + \'%1$s\'로부터 영상 수신을 허용하시겠습니까? + 통화 대기/해제 + 통화가 대기 상태입니다. + 마이크 켜기/끄기 + 통화가 연결되지 않은 경우에만 녹음을 켜거나 끌 수 있습니다. + 통화 전환 + 블라인드 + 참석 전환 + 전환 대상 + 대상 URI 선택 + 전환 + 전환 실패 + DTMF + 통화 정보 + 사용 가능한 정보 없음 + 통화 시간: %1$d초 + 코덱 + 현재 속도: %1$s Kbits/s + 평균 속도: %1$s Kbits/s + 패킷 + 손실 + 지터: %1$s ms + 음성 사서함 + 음성 메시지 + 보유 메시지 + 새 메시지 1개 + 새 메시지 + 읽은 메시지 1개 + 읽은 메시지 + + 메시지가 없습니다. + 듣기 + 메시지 + 다이얼패드 + 현재 활성 통화가 있습니다. + Ritosip 시작에 실패했습니다. 이는 설정값이 잘못되었기 때문일 수 있습니다. + 수신 주소, TLS 인증서 파일 및 TLS CA 파일을 확인한 후 baresip을 다시 시작하세요. + + \'%1$s\' 등록 실패 + 확인 요청 + SAS <%1$s>를 확인하시겠습니까? + 전환 요청 + 이 전화를 \'%1$s\'로 전환하시겠습니까? + 통화 요청 + \'%1$s\'와(과) 통화를 수락하시겠습니까? + \'%1$s\'로 자동 연결됨 + 리디렉션 요청 + 통화를 \'%1$s\'로 리디렉션하는 것을 수락하시겠습니까? + 통화 실패 + 통화 종료됨 + 이 통화는 안전하지 않습니다! + 이 통화는 안전하지만 상대방이 인증되지 않았습니다! + 이 통화는 안전하며 상대방이 인증되었습니다! + 상대방 인증을 해제하시겠습니까? + 인증 해제 + 애플리케이션 데이터(녹음 제외)가 파일 \'%1$s\'에 백업되었습니다. Android 9 버전에서는 이 파일이 다운로드 폴더에 저장됩니다. + 애플리케이션 데이터를 \'%1$s\' 파일로 백업하는 데 실패했습니다. 앱 권한에서 "저장소" 권한을 확인하세요. + 재시작 요청 + 애플리케이션 데이터가 복원되었습니다. ritosip을 다시 시작해야 합니다. 지금 다시 시작하시겠습니까? + 애플리케이션 데이터 복원 실패. 올바른 비밀번호를 입력했는지 확인하고, 백업 파일이 이 애플리케이션에서 생성된 것인지 확인하세요. Android 9 버전에서는 앱 권한에서 "저장소" 권한을 확인하고 다운로드 폴더에 \'%1$s\' 파일이 있는지 확인하세요. + 애플리케이션 데이터 복원 실패. Android 14 이상 버전에서는 %1$s 버전 %2$s 이전에 백업된 데이터를 복원할 수 없습니다. + "알림" 권한이 없으면 이 애플리케이션을 사용할 수 없습니다. + ritosip에서 음성 통화를 하려면 "마이크" 권한이 필요합니다. + "주변 장치" 권한이 없으면 ritosip에서 블루투스 연결을 감지할 수 없습니다. + 영상 통화를 걸거나 받으려면 "카메라" 권한을 허용하세요. + "저장소" 권한이 없으면 백업을 생성할 수 없습니다. + "저장소" 권한이 없으면 백업을 복원할 수 없습니다. + "연락처" 권한이 없으면 Android 연락처에 접근할 수 없습니다. + 지원되는 비디오 카메라가 없습니다. + 비밀번호 표시 + 네트워크 연결 없음! + 오디오 포커스 거부됨! + 권한 안내 + ritosip은 음성 통화를 위해 "마이크" 권한이 필요하며, 블루투스 마이크/스피커 감지를 위해 "주변 장치" 권한이 필요합니다. 또한 알림을 게시하려면 "알림" 권한이 필요합니다. + ritosip은 음성 통화를 위해 "마이크" 권한, 영상 통화를 위해 "카메라" 권한, 블루투스 마이크/스피커 감지를 위해 "주변 장치" 권한, 알림을 게시하려면 "알림" 권한이 필요합니다. + + +
\ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml new file mode 100644 index 0000000..43e3063 --- /dev/null +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -0,0 +1,234 @@ + + + Om + Konto + Visningsnavn + Ditt navn + Navn (hvis noe) brukt i skjema-URI for utgående forespørsler. + Brukernavn for identitetsbekreftelse + Brukernavn for identitetsbekreftelse av SIP-forespørsler er påkrevd. Forvalgt verdi er kontoens brukernavn. + Passord for identitetsbekreftelse + Passord for identitetsbekreftelse opptil 64 tegn. Hvis det angis, og passord ikke angis, vil det bli anmodet inntastet når baresip startes. + Utgående mellomtjenere + Lyd-kodeker + Liste over støttede lydkodeker i prioritetsforordning. + STUN-tjener + Mediakryptering + Forvalgt konto + Kontoer + bruker@domene + Ugyldig bruker@domene[:port][;transport=udp|tcp|tls] \"%1$s\" + Kontoen \"%1$s\" finnes allerede. + Klarte ikke å tildele ny konto. + Krypter passord + Dekrypter passord + Ønsker du å slette kontoen \"%1$s\"\? + Svar + Legg på + Samtale fra + Melding fra + Anropslogg + Ring + samtaler + samtale + Ønsker du å ringe eller sende melding til \"%1$s\"\? + Ønsker du å legge til «%1$s» i kontaktlisten, eller slette «%2$s» fra anropsloggen\? + Skru av + Skru på + Sludremeldinger + Sludre med %1$s + Ny melding + Ønsker du å slette meldingen eller legge til likemannen \"%1$s\" til i kontaktlisten\? + Ønsker du å slette meldingen\? + Legg til kontakt + Meldingsforsendelse mislyktes + Sludrehistorikk + I dag + Deg + Ny sludringslikemann + Ugyldig SIP-URI + Ønsker du å slette samtalen med likemannen \"%1$s\" eller legge vedkommende til i kontaktlisten\? + Oppsett + Start automatisk + Lytteadresse + DNS-tjenere + Opus-bitrate + Tilbakestill til fabrikkforvalg + Kontakt + Ny kontakt + Navn + \"%1$s\" er et ugydlig kontaktnavn + Kontakter + Send melding + Ønsker du å slette kontakten \"%1$s\"\? + Varsel + Info + Merknad + Avbryt + OK + Ja + Nei + Godta + Nekt + Bruker-ID + Passord + Legg til + Slett + Rediger + Send + Status + Feil + Om + Avslutt + Utgående anrop til … + Innkommende anrop fra … + Overfører anrop til … + Varighet %1$d (sek) + Kodeker + Du har + én ny melding + nye meldinger + én gammel melding + gamle meldinger + og + Du har ingen meldinger + Lytt + Meldinger + Bekreft + Denne samtalen er IKKE sikker! + Denne samtalen er SIKKER, men likemannen er IKKE bekreftet! + Denne samtalen er SIKKER, og likemannen er BEKREFTET! Ønsker du å avkrefte likemannen\? + Avkreft + <h1>Baresip-bibliotek basert på SIP-brukeragent</h1> <p>Juha Heinanen <jh@tutpro.com></p> <p>Version %1$s</p> <h2>Brukshint</h2> <ul> <li>Sjekk at oppsettets forvalgte verdier passer for deg (klikk på elementtitlene for hjelp).</li><li>Registreringstatus for konto vises med en fargelagt prikk: Grønn (vellykket registrering, gul (registrering underveis), rød (mislykket registrering), hvit (registrering har ikke blitt aktivert).</li> <li>Opprett så én eller flere kontoer (igjen, klikk på elementtitlene for hjelp).</li> <li>Likemenn i samtaler og meldinger kan legges til ved lange trykk.</li> <li>Lange trykk kan også brukes til å fjerne samtaler, sludringer, meldinger, og kontakter.</li> <li>Trykk/langt trykk på kontaktikon kan brukes for å installere/fjerne billedavatar.</li> <li>Klikk når ringeren ikke er angitt for å ringe opp forrige samtalepartner.</li> <li>Hvis du ikke kan høre motparten, prøv å øke media-lydstyrken.</li> </ul> <h2>Kjente problemer</h2> <ul> <li>På grunn av en biblioteksbegrensning, støtter ikke baresip flerfoldige samtidige nettverksgrensesnitt.</li> </ul> <h2>Kildekode</h2> Tilgjengelig på <a href=https://github.com/juha-h/baresip-studio>GitHub</a>, der feil også kan innrapporteres. + SIP URI-til én eller to mellomtjenere som må brukes ved forsendelse av forespørsler. Hvis to angis, vil REGISTER-forespørsler sendes til begge, og andre forespørsler sendes til den som svarer. Hvis ingen utgående mellomtjener angis, blir forespørsler sent basert på DNS NAPTR/SRV/A-oppføringsoppslag fra ringerens URI-vertspart. Hvis vertsdelen av en SIP URI er en IPv6-adresse, må adressen skrives i hakeparenteser []. +\nEksempler: +\n • sip:foo.com:5060;transport=tls +\n • sip:[2001:67c:223:777::10]:5060;transport=tcp + SIP URI for mellomtjeneren + SIP URI til en annen mellomtjener + Registrer + Skrur på registrering og REGISTER-forespørsler blir sendt hvert tolvte minutt. + Media NAT-gjennomgang + Velger media NAT-gjennomgangsprotokoll (hvis noen). Mulige valg er STUN (øktgjennomgangsverktøy for NAT, RFC 5389) og ICE (interaktivt tilkoblingstilknytning, RFC 5245). + En STUN-tjener i utførelsen host[:port]. Forvalgt fabrikkverdi er \'stun.l.google.com:19302\', som peker til offentlig Google STUN-tjener. Brukernavn og passord støttes foreløpig ikke. + stun.l.google.com:19302 + Velger krypteringsprotokoll for mediatransport (hvis noen). +\n • ZRTP (anbefalt) betyr at ZRTP ende-til-ende -forhandling av mediakryptering forsøkes etter at samtalen har blitt opprettet. +\n • DTLS-SRTPF betyr at UDP/TLS/RTP/SAVPF tilbys i utgående samtale, og at RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP, eller UDP/TLS/RTP/SAVPF brukes hvis tilbudt i innkomende anrop. +\n • SRTP-MANDF betyr at RTP/SAVPF tilbys i utgående anrop, og krever et innkommende anrop. +\n • SRTP-MAND betyr at RTP/SAVP tilbys i utgående anrop, og kreves i innkommende anrop. +\n • SRTP betyr at RTP/AVP tilbys i utgående anrop, og at RTP/SAVP eller RTP/SAVPF brukes hvis tilbudt i innkommende anrop. + Telefonsvarer-URI + SIP-URI for sjekk av telefonsvarermeldinger. Hvis levnet tom, vil telefonsvarermeldinger (melding venter-anvisninger) ikke bli levert. + Velger denne kontoen når baresip startes. + Samtaleoverføringsforespørsel til + Ønsker du å slette \"%1$s\" %2$s fra anropshistorikk\? + Mislyktes + Ønsker du å slette sludringen med \"%1$s\"\? + Starter baresip automatisk sammen med enheten. + IP-adresse og port i utførelsen \"adresse:port\" som baresip lytter til for innkommende SIP-forespørsler. Hvis en IP-adresse er en IPv6-adresse, må den skrives i klammeparenteser []. IPv4-adresse 0.0.0.0 eller IPv6-adresse [::] får baresip til å lytte til alle tilgjengelige adresser. Hvis levnet tom (fabrikksforvalg), vil baresip lytte til port 5060 for alle tilgjengelige adresser. + Kommainndelt liste over adresser til DNS-tjenere. Hvis ikke angitt, vil DNS-tjeneradresser hentes dynamisk fra systemet. Hver DNS-adresse er utførelsen \"ip:port\" eller \"ip\". Hvis porten utelates, brukes forvalget 53. Hvis IP-en er en IPv6-adresse, og port også angis, må IP-en skrives i hakeparenteser []. Som etksempel, list \'8.8.8.8:53,[2001:4860:4860::8888]:53\' peker til en IPv4-adresser og IPv6-adresser for offentlige Google DNS-tjenere. + Klarte ikke å laste inn modul. + Kansellering av akustisk ekko + Prøver å unngå ekko under samtaler. + Gjennomsnittlig maksimal bitrate ved bruk av Opus-lydstrøm. Gyldig verdi er 6000-510000. Fabrikksforvalg er 28000. + Forventet Opus-pakketap + Forventet prosentvis pakketap for Opus-lydstrøm. Gyldige verdier fra 0–100. Fabrikksforvalg er 0, som skrur av Opus-fremtidsfeilkorrigering (FEC). + Forvalgt samtalelydstyrke + Setter samtalelydstyrken på en skala fra 1-10. + Feilretting + Gjør feilrettings- og infonivå-loggmeldinger tilgjengelige i Logcat. + Tilbakestiller oppsettet til fabrikkforvalgte verdier. + Kontakten \"%1$s\" finnes allerede. + Ugyldig SIP URI + Ønsker du å ringe eller sende melding til \"%1$s\"\? + Ditt har nådd ditt maksimale antall kontakter på %1$d. + Ugyldig SIP URI \'%1$s\' + Ringer + Legg på + Sett på vent + Tonesignalering + Samtaleinfo + Takt: %1$s + Telefonsvarer + Telefonsvarermeldinger + Nummerskive + Du har allerede et aktivt anrop. + Baresip kunne ikke starte. Dette kan ha oppstått på grunn av en ugyldig oppstartsverdi. Sjekk lytteadressen, TLS-sertifikatsfilen, og TLS CA-filen. Start så programmet på ny. + Registrering av %1$s mislyktes. + Ønsker du å bekrefte SAS <%1$s>\? + Anrop mislyktes. + Samtale lukket. + TLS-sertifikatsfil + Hvis valgt vil eller har filen \"cert.pem\" som inneholder TLS-sertifikatet og den private nøkkelen tilhørende denne baresip-instansen blitt lastet inn fra Nedlastinger. Av sikkerhetshensyn må du slette filen etter innlasting. + TLS-CA-fil + Hvis valgt vil filen \"ca_certs.crt\" inneholdende TLS-sertifikatene tilhørende sertifikatsmyndighetene ha blitt lastet inn fra Nedlastinger. + Klarte ikke å lese filen \"cert.pem\" fra Nedlastinger. + Klarte ikke å lese filen \"ca_certs.crt\" fra Nedlastinger. + Ugyldig lyttadresse + Ugyldige DNS-tjenere + Klarte ikke å sette DNS-tjenere + Ugyldig Opus-bitrate + Ugyldig Opus-pakketapsprosent + Svarsmodus + Angir hvordan innkommende anrop besvares. + Manuell + Automatisk + Programomstart + Slett + Ønsker du virkelig å slette samtalehistorikk for kontoen «%1$s»\? + Slett + Ønsker du å slette sludrehistorikken for kontoen «%1$s»\? + Ønsker du å starte baresip på ny for å aktivere de nye innstillingene nå\? + Sikkerhetskopier + Gjenopprett + Programdata sikkerhetskopiert til nedlastingsmappen som \'%1$s\'. + Klarte ikke å sikkerhetskopiere programdata til nedlastingsmappe som \'%1$s\'. Sjekk \"Programmer → baresip → Tilganger → Lagring. + Programdata gjenopprettet. Start baresip på ny nå\? + Klarte ikke å sikkerhetskopiere programdata til nedlastingsmappe. Sjekk \"Programmer → baresip → Tilganger → Lagring og at sikkerhetskopifilen \'%1$s\' finnes i mappen, og om det er tilfelle, at du har oppgitt rett dekrypteringspassord. + Lydmoduler + Lydkodeker tilbudt av de avkryssede modulene er tilgjengelig for bruk av kontoene. + Hjelp + Ny konto + Du kan ikke utføre eller besvare anrop uten mikrofontilgang. + Det er mulig å sette kontoportnummer og transportprotokoll som username@domain[:port][;transport=udp|tcp|tls] ved opprettelse av en ny konto. UDP brukes hvis kun port angis. Port 5060 eller 5061 (TLS) brukes hvis kun transportprotokoll angis. Kontoens registrar (hvis noen) angis kun basert på info fra domenets DNS hvis hverken port, transportprotokoll, og heller ikke utgående mellomtjener angis. + Foretrekk IPv6-media + Tilby bruk av IPv6-mediaprotokoll (hvis tilgjengelig) når likemanns mediaprotokoll ikke kan bestemmes. + Ugyldig talepostkasse-URI \"%1$s\" + Ugyldig mellomtjener-URI \"%1$s\" + Ugyldig identitetsbekreftelsespassord \"%1$s\" + Ugylidg identitetsbekreftelsesbrukernavn \"%1$s\" + Ugyldig visningsnavn \"%1$s\" + Ugyldig STUN-tjener \"%1$s\" + Ingen info tilgjengelig + Vis passord + Du har ikke noen støttede videokameraer. + Start forespørsel på ny + Videoforespørsel + Videosamtale + Bekreftelse + «%1$s» er et ugyldig passord + Passord hvis påkrevd av STUN/TURN-tjener + STUN/TURN-passord + «%1$s» er et ugyldig brukernavn + Brukernavn hvis påkrevd av STUN/TURN-tjener + STUN/TURN-brukernavn + Liste over støttede videokodek i prioritetsrang + Videokodek + Videresend til + Du kan ikke utføre eller svare på videoanrop uten kamera-tilgang. + Ønsker du å sette over denne samtalen til «%1$s»\? + Kunne ikke videresende anrop + Sett over + Videresending av anrop + Godta videosamtale med «%1$s»\? + Om baresip+ + Godta mottak av video fra «%1$s»\? + Godta forsendelse av video til «%1$s»\? + Videorammestørrelse + Mørk drakt + Tapt anrop fra + Tid + Varighet + Lydinnstillinger + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..c54aae7 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,33 @@ + + + #121212 + #0073c9 + #00008b + #0ca1fd + #00B9A1 + #008873 + #5cecd2 + #9e9e9e + #424242 + #e0e0e0 + #F77445 + #0ca1fd + #ffffff + #000000 + @color/colorWhite + #01df01 + #df0101 + #2E7D32 + #F9A825 + #C62828 + @color/colorGrayLight + #383838 + @color/colorDark + @color/colorGray + @color/colorGrayDark + @color/colorGrayLight + @color/colorGrayLight + @color/colorSecondaryDark + @color/colorSecondaryDark + @color/colorPrimaryLight + \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..ff1b941 --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,428 @@ + + + Codecs + Status + DTMF + Cópia de Segurança + Mostrar Senha + O baresip precisa de permissão do \"Microfone\" para realizar chamadas de voz. + Falha ao restaurar os dados do aplicativo. Verifique se inseriu a senha correta e que o arquivo de backup seja deste aplicativo, Na versão 9 do Android, verifique também em Aplicativos → baresip → Permissões → Armazenamento e se o arquivo \'%1$s\' existe na pasta Download. + Os dados do aplicativo foram restaurados. O baresip precisa ser reiniciado. Reiniciar agora\? + Falha ao fazer o backup dos dados do aplicativo no arquivo \'%1$s\'. Verifique Aplicativos → baresip → Permissões → Armazenamento. + Os dados do aplicativo (excluindo gravações) em um backup no arquivo \'%1$s\'. Na versão do 9 Android, o arquivo está na pasta Download. + Desverificar + A chamada é SEGURA e o par é VERIFICADO! Deseja desverificar o par\? + A chama é SEGURA, porém o par NÃO é verificado! + Esta chamada NÃO é segura! + A chamada está encerrada + A ligação falhou + Você quer verificar SAS <%1$s>\? + Verificar a Solicitação + O registro de %1$s falhou. + Baresip falhou ao iniciar. Isso pode ser devido a um valor inválido das Configurações. Verifique Endereço de Escuta, Arquivo de Certificado TLS e Arquivo CA TLS. Em seguida, reinicie o baresip. + Você já tem uma chamada ativa. + Teclado de Discagem + Mensagens + Ouvir + Você não tem mensagens + e + mensagens antigas + uma mensagem antiga + novas mensagens + uma nova mensagem + Você tem + Mensagens do Correio de Voz + Correio de Voz + Taxa atual: %1$s (Kbits/s) + Duração: %1$d (segs) + Nenhuma informação disponível + Informações da Chamada + Chamada em espera/liberar + Desligar + Destinatário + URI SIP \'%1$s\' inválida + Transferindo chamada para … + Chamada de … + Chamando … + Sair + Reiniciar + Sobre + Restaurar + Ajuda + Erro + Enviar + Editar + Excluir + Adicionar + Senha + ID do Usuário + Recusar + Aceitar + Não + Sim + OK + Cancelar + Aviso + Informações + Alerta + O seu número máximo de %1$d contatos foi excedido. + Você quer excluir o contato \'%1$s\'\? + Enviar Mensagem + Você quer ligar ou enviar mensagem para \'%1$s\'\? + Contatos + URI SIP inválida + Contato \'%1$s\' já existe. + Nome de contato \'%1$s\' inválido + Nome + Novo Contato + Contato + Você precisa reiniciar o baresip para aplicar as novas configurações. Reiniciar agora\? + Houve uma falha ao ler o arquivo \'ca_certs.crt\'. + Houve uma falha ao ler o arquivo \'cert.pem\'. + Se selecionado, ajustes serão redefinidos para os valores de padrão de fábrica. + Redefinir os Padrões de Fábrica + Depuração + Se selecionado, disponibiliza mensagens de depuração no registro log e informações para o Logcat. + Se ajustado, volume de áudio da chamada padrão na escala de 1 a 10. + Volume de Chamadas Padrão + Porcentagem de Perda de Pacotes do Opus inválida + Taxa de bits Opus inválida + Esperada porcentagem de perda de pacotes do fluxo de áudio do Opus, de 0-100. Por padrão o valor é 1. O valor 0 desativa o Opus Forward Error Correction (FEC). + Perda de pacotes Opus esperada + Taxa de bits máxima média usada pelo fluxo de áudio do Opus. Os valores válidos são 6000-510000. O padrão de fábrica é 28000. + Taxa de Bits Opus + Se marcado, cancelamento de eco é tentado no áudio da chamada. + Cancelamento de Eco Acústico + Falha ao carregar módulo. + Codecs de áudio providos pelos módulos selecionados estão disponíveis para uso das contas. + Módulos de Áudio + Se estiver marcada, foi ou será carregado um arquivo que contém certificados TLS de tais autoridades de certificação que não estão incluídas no sistema operacional Android. Na versão 9 do Android, um arquivo chamado “ca_certs.crt” é carregado da pasta Download. + Arquivo TLS CA + Se marcado, o arquivo que contém o certificado TLS e a chave privada desta instância do baresip foi ou será carregado. Na versão do Android 9, um arquivo chamado \'cert.pen\' será lido a partir da pasta Download. Por motivos de segurança, exclua o arquivo após o carregamento. + Arquivo de Certificado TLS + Falha ao definir servidores DNS + Servidores de DNS inválidos + Lista de endereço de servidores de DNS separados por vírgula. Endereços de servidores DNS são obtidos dinamicamente pelo sistema. Cada endereço DNS é na forma \'ip:porta\' ou \'ip\'. Se a porta é omitida, o padrão será 53. Se o ip é um endereço IPv6 e também a porta é fornecida, o ip precisa ser escrito dentro de colchetes []. Por exemplo, escutar \'8.8.8.8:53,[2001:4860:4860::8888]:53\' aponta para endereços IPv4 e IPv6 dos servidores de DNS do Google. + Servidores DNS + Endereço de Escuta inválido + Endereço IP e porta no formato \'endereco:porta\' do qual o baresip escuta para solicitações SIP recebidas. Se o endereço IP é um endereço IPv6, deve ser escrito em colchetes []. Endereço IPv4 0.0.0.0 ou IPv6 [::] faz o baresip escutar todos endereços disponíveis. Se deixado em branco (ajuste padrão), o baresip escuta na porta 5060 de todos endereços disponíveis. + Endereço de Escuta + Se marcado, baresip iniciar automaticamente depois que o dispositivo reiniciar. + Iniciar Automaticamente + Ajustes + Você quer excluir o histórico de chat da conta \'%1$s\'\? + Excluir + Você quer excluir o chat com \'%1$s\'\? + Você quer excluir o chat com o par \'%1$s\' ou adicionar o par aos contatos\? + Par do chat URI é inválido + Novo Par de Chat + Você + Hoje + Histórico de Mensagens + Falhou + Envio de mensagem falhou + Adicionar Contato + Você quer excluir a mensagem\? + Você quer excluir a mensagem ou adicionar o ponto \'%1$s\' aos contatos\? + Nova mensagem + Falar com %1$s + Mensagem do Chat + Você quer excluir o histórico de chamadas da conta \'%1$s\'\? + Habilitar + Desabilitar + Excluir + Você quer apagar %1$s\' %2$s do histórico de chamadas\? + Você quer adicionar \'%1$s\' aos contatos ou deletar %2$s do histórico de chamadas\? + Você quer ligar ou enviar mensagem para \'%1$s\'\? + chamada + chamadas + Chamada + Histórico de Chamadas + Mensagem de + Pedido de Transferência + Recebendo chamada de + Atender + Rejeitar + Você quer excluir a conta \'%1$s\'\? + Descriptografar Senha + Criptografar Senha + Falha ao alocar nova conta + A conta \'%1$s\' já existe. + usuario@dominio[:porta][;transport=udp|tcp|tls] inválido \'%1$s\' + usuario@dominio + Quando uma nova conta é criada, a informação do número da porta, da conta e o protocolo de transporte é opcional: <usuário>@@<domínio>[:<porta>][;transport=udp|tcp|tls]. Caso a <porta> seja informada e o protocolo de transporte não, o padrão será udp. Caso a <porta> não seja informada e o protocolo de transporte seja, a <porta> padrão é 5060 ou 5061 (TLS). Caso nenhum dos dois ou nenhum proxy seja informado, o usuário da conta (caso haja) é determinado exclusivamente com base nas informações do DNS do domínio. + Nova Conta + Contas + Se marcado, esta conta é selecionada quando o baresip for iniciado. + Conta Padrão + URI de Correio de Voz inválida \'%1$s\' + URI SIP para checar mensagens de correio de voz. Se deixado em branco, as mensagens do correio de voz (Indicação de Mensagem em Espera) não serão assinadas. + URI do Correio de Voz + Automático + Manual + Selecione como chamadas recebidas são respondidas. + Modo de Atendimento + Se selecionado, oferece usar protocolo de mídia IPv6 (se disponível) quando o protocolo de mídia do par não puder ser determinado automaticamente. + Preferir Mídia IPv6 + Selecione o protocolo de criptografia de transporte de mídia (se houver). +\n • ZRTP (recomendado) significa que a negociação de criptografia de mídia ZRTP ponta-a-ponta é tentada depois que a ligação foi estabelecida. +\n • DTLS-SRTPF significa que UDP/TLS/RTP/SAVPF é oferecido em chamadas efetuadas que RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP, ou UDP/TLS/RTP/SAVPF é usado se oferecida em chamadas recebidas. +\n • SRTP-MANDF significa que RTP/SAVPF é oferecido em chamadas efetuadas e requerido em chamadas recebidas. +\n • SRTP-MAND significa que RTP/SAVP é oferecido em chamadas efetuadas e requerido em chamadas recebidas. +\n • SRTP significa que RTP/AVP é oferecido em chamadas efetuadas e que RTP/SAVP ou RTP/SAVPF é usado se oferecido em chamadas recebidas. + Criptografia de Mídia + Servidor URI STUN/TURN Inválido \'%1$s\' + Um URI do servidor STUN/TURN na forma de scheme:host[:porta][\?transport=udp|tcp]. Onde o scheme é \'stun\', \'stuns\', \'turn\', ou \'turns\'. O Servidor predefinido de fábrica para o STUN e os protocolos ICE são \'stun:stun.l.google.com:19302\' apontando para o servidor STUN público do Google. Não há qualquer servidor STUN predefinido de fábrica. + Servidor STUN/TURN + Selecione o protocolo de NAT transversal de mídia (se houver). Escolhas possíveis são STUN (Session Traversal Utilities para NAT, RFC 5389) e ICE (Interactive Connectivity Establishment, RFC 5245). + NAT Transversal de Mídia + Lista dos codecs de áudio em ordem de prioridade. Arraste para reordenar, deslize para a direita para ativar ou desativar. + Codecs de Áudio + Se marcado, o registro é ativado e as solicitações de REGISTRO são enviadas no intervalo determinado pelo Intervalo de registro. + Registro + URI do Servidor Proxy Inválido \'%1$s\' + URI SIP de outro Servidor Proxy + URI SIP do Servidor Proxy + URI SIP de um ou dois proxies que precisam ser usados para enviar solicitações. Se dois forem informados, requisições de REGISTRO serão enviados para ambos e as outras requisições serão enviadas para aquele que respondeu. Se nenhum proxy foi informado, requisições serão enviadas baseadas em DNS NAPTR/SRV/A pesquisa de registro da URI do host do destinatário. Se o host da URI SIP for um endereço IPv6, o endereço precisa ser escrito dentro de colchetes []. +\nExemplos: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + Próxies de Saída + Senha de Autenticação Inválida \'%1$s\' + Senha de Autenticação com até 64 caracteres. Se o Nome de Usuário de Autenticação for informado mas a senha não, ela será solicitada quando o baresip for iniciado. + Senha de Autenticação + Nome de Usuário de Autenticação Inválido \'%1$s\' + Nome de usuário de autenticação se a autenticação de solicitações SIP for necessária. O valor padrão é o nome de usuário da conta. + Nome de Usuário de Autenticação + Nome de Exibição Inválido\'%1$s\' + Nome (se houver) usado em From URI de solicitações de saída. + Seu Nome + Nome de Exibição + Conta + Biblioteca Baresip baseado em agente de usuário SIP +

Juha Heinanen <jh@tutpro.com>

+

Versão %1$s

+

Dicas de Uso

+
    +
  • Verifique se os valores predefinidos nas Configurações atendem as suas necessidades + (clique nos títulos para ajuda).
  • +
  • Então em Contas, crie uma ou mais contas (novamente clique nos títulos para ajuda).
  • +
  • O estado de uma conta é mostrado com um ponto colorido: verde (registro + bem sucedido), amarelo (registro em progresso), vermelho (registro falhou), branco + (registro não foi ativado).
  • +
  • Toque nos três pontos para ir direto para a configuração da conta.
  • +
  • O gesto de deslizar para baixo causa o novo registro da conta exibida no momento.
  • +
  • Um toque longo na conta exibida no momento ativa ou desativa o registro da conta.
  • +
  • Gestos para a esquerda/direita alternam as contas.
  • +
  • O participante da chamada anterior pode ser selecionado novamente tocando no ícone + de chamada quando o "Callee" estiver vazio.
  • +
  • Os pares de chamadas e mensagens podem ser adicionados aos contatos por meio de toques longos.
  • +
  • Os toques longos também podem ser usados para remover chamadas, bate-papos, mensagens e contatos.
  • +
  • Toque/toque longo no ícone do contato pode ser usado para instalar/remover o avatar da imagem.
  • +
  • Consulte a Wiki para obter + mais informações.
  • +
+

Política de privacidade

+ A política de privacidade está disponível aqui. +

Código fonte

+ O código fonte está disponível no GitHub, + onde os problemas encontrados também podem ser reportados. +

Licenças

+
    +
  • Cláusula BSD-3 exceto os seguintes:
  • +
  • Apache 2.0, codecs AMR e segurança TLS
  • +
  • AGPLv4, criptografia de mídia ZRTP
  • +
  • GNU LGPL 2.1 G.722, G.726, e codecs Codec2
  • +
  • GNU GPLv3 G.729 codec
  • +
+ ]]>
+ Sobre o baresip + Você não possui câmeras de vídeo compatíveis. + Conceda permissão à \"Câmera\" para fazer ou atender chamadas de vídeo. + Solicitação para Reinicialização + Transferir + Aceitar o envio e o recebimento de vídeo com \'%1$s\'\? + Pedido de Vídeo + Chamada de vídeo + Confirmação + Tamanho dos quadros de vídeo que foram transmitidos (largura x altura) + Tamanho do Quadro do Vídeo + Caso esteja marcado, o cancelamento do eco estará utilizando um filtro estendido. + Filtro Estendido do AEC + Senha inválida \'%1$s\' + Senha, caso seja necessário pelo servidor STUN/TURN + Senha STUN/TURN + Nome do usuário inválido \'%1$s\' + Nome do usuário, caso seja necessário pelo servidor STUN/TURN + Nome do Usuário STUN/TURN + Lista dos codecs de vídeo em ordem de prioridade. Arraste para reordenar, deslize para a direita para ativar ou desativar. + Codecs de Vídeo + Você aceita transferir esta chamada para \'%1$s\'\? + A transferência falhou + Destino da transferência + Transferência de chamada + Chamada de solicitação de transferência para + Biblioteca Baresip baseado em agente de usuário SIP com vídeo chamadas +

Juha Heinanen <jh@tutpro.com>

+

Versão %1$s

+

Dicas de uso

+
    +
  • Verifique se os valores padrão nas configurações do baresip+\ atendem às suas necessidades + (toque nos títulos dos itens para obter ajuda).
  • +
  • Então em Contas, crie uma ou mais contas (novamente clique nos títulos para ajuda).
  • +
  • O estado de uma conta é mostrado com um ponto colorido: verde (registro + bem sucedido), amarelo (registro em progresso), vermelho (registro falhou), branco + (registro não foi ativado).
  • +
  • Toque nos três pontos para ir direto para a configuração da conta.
  • +
  • O gesto de deslizar para baixo causa o novo registro da conta exibida no momento.
  • +
  • Um toque longo na conta exibida no momento ativa ou desativa o registro da conta.
  • +
  • Gestos para a esquerda/direita alternam as contas.
  • +
  • O participante da chamada anterior pode ser selecionado novamente tocando no ícone + de chamada quando o "Callee" estiver vazio.
  • +
  • Os pares de chamadas e mensagens podem ser adicionados aos contatos por meio de toques longos.
  • +
  • Os toques longos também podem ser usados para remover chamadas, bate-papos, mensagens e contatos.
  • +
  • Toque/toque longo no ícone do contato pode ser usado para instalar/remover o avatar da imagem.
  • +
  • Consulte a Wiki para obter + mais informações.
  • +
+

Problemas conhecidos

+
    +
  • Nas chamadas com vídeo, o dispositivo precisa ser mantido no modo paisagem, + girado 90 graus para a esquerda em relação à orientação retrato.
  • +
  • A própia visualização automática não é exibida corretamente quando o + fluxo de vídeo é somente envio.
  • +
+

Política de privacidade

+ A política de privacidade está disponível aqui. +

Código fonte

+ O código fonte está disponível no GitHub, + onde os problemas encontrados também podem ser reportados. +

Licenças

+
    +
  • Cláusula BSD-3 exceto os seguintes:
  • +
  • Apache 2.0, codecs AMR e segurança TLS
  • +
  • AGPLv4, criptografia de mídia ZRTP
  • +
  • GNU LGPL 2.1 G.722, G.726, e codecs Codec2
  • +
  • GNU GPLv3 codec G.729
  • +
  • GNU GPLv2 codecs H.264 e H.265
  • +
  • AOMedia codec AV1
  • +
+ ]]>
+ Sobre o baresip+ + Servidor URI STUN/TURN + Se selecionado em conjunto com Debug, as mensagens Logcat incluem também o pedido SIP e o rastreamento da resposta. A opção não é ativada automaticamente durante a inicialização do baresip. + Rastreio SIP + Aceitar o recebimento de vídeo a partir do \'%1$s\'\? + Aceitar o envio de vídeo para \'%1$s\'\? + Ligação perdida de + Impor o uso do tema escuro na tela + Tema Escuro + Se for marcado, este contato será adicionado nos contatos do Android. + Se estiver marcado, o baresip verifica os certificados TLS do SIP User Agent e o SIP Proxy Servers quando o transporte TLS for usado. + Verifique os certificados do servidor + Solicitações INFO SIP + Eventos na Banda RTP + Selecione como os tons DTMF 0–9, #, *, e A-D serão enviados. + Modo DTMF + Redefinir + Tem certeza de que deseja redefinir as configurações para os valores predefinidos de fábrica\? + Microfone ligado/desligado + Nenhuma conexão de rede! + %1$d chamadas perdidas + Chamadas perdidas + Imagem do perfil + Você não pode restaurar o backup sem a permissão de \"Armazenamento\". + Você não pode criar backups sem a permissão de \"Armazenamento\". + Otimizações da bateria + Desative as otimizações da bateria (recomendado) caso queira reduzir a probabilidade do Android restringir o acesso do baresip à rede ou coloque o baresip no modo de espera. + Perda + Taxa média: %1$s (Kbits/s) + Pacotes + Chamada em espera + Variação: %1$s (ms) + Configurações do áudio + Duração + Par + Detalhes da chamada + Direção + Hora + Operadora de telefonia + Parte do host SIP URI + Parte inválida do host SIP URI \'%1$s\' + SIP ou tel. URI + usuário@domínio ou o número de telefone + SIP URI host é parcialmente usado nas chamadas para números de telefone. O padrão de fábrica é domínio da conta. Caso não seja informada, essa conta não pode ser usada para ligar para os números de telefone. + SIP ou tel. URI inválido \'%1$s\' + Escolhe se serão usados os contatos do baresip, os contatos do Android ou ambos. Se ambos forem usados e houver um contato com o mesmo nome em ambos os contatos, o contato baresip será escolhido. + Ambos + Você não pode acessar os contatos do Android sem a permissão \"Contatos\". + Cego + Participou + Anônimo + Desconhecido + Desviado por … + Solicitação de consentimento + Se os contatos do Android forem escolhidos, eles podem ser usados em chamadas e mensagens como referências a URIs SIP e tel. O aplicativo baresip não armazena contatos do Android nem os compartilha com ninguém. Para tornar os contatos do Android disponíveis no baresip, o Google exige que você aceite seu uso conforme descrito aqui e na política de privacidade. + Código do país + +código + O código do país E.164 desta conta. Se durante o recebimento da chamada ou mensagem do usuário a parte URI recebida tiver um número de telefone que não começa com o sinal \'+\' e se a busca de contato falhar, o número será prefixado com este código do país e a busca pelo contato será testada novamente. Se o número de telefone começar com um único dígito \'0\', o dígito \'0\' será removido antes que o número seja prefixado. + Código do país inválido \'%1$s\' + Apelido da conta + Apelido (se houver) é utilizado para identificar essa conta dentro do aplicativo baresip. + Apelido inválido da conta \'%1$s\' + O apelido \'%1$s\' já existe + Apelido + Reordenar + Multiplexagem RTCP + Se marcada, os pacotes RTP e RTCP são multiplexados numa única porta (RFC 5761). + Você não pode usar este aplicativo sem a permissão \"Notificações\". + Foco de áudio negado! + O baresip não é capaz de detectar a conectividade Bluetooth sem a permissão \"Dispositivos próximos\". + Justificativa das permissões + O baresip precisa da permissão \"Microfone\" para realizar chamadas de voz, da permissão \"Dispositivos próximos\" para fazer a detecção do microfone/alto-falante Bluetooth e a permissão \"Notificações\" para postar notificações. + O baresip+ precisa da permissão \"Microfone\" para realizar chamadas de voz, da permissão \"Câmera\" para realizar chamadas de vídeo. da permissão \"Dispositivos próximos\" para fazer a detecção do microfone/alto-falante Bluetooth caso queira usar tal dispositivo, assim como a permissão \"Notificações\" para postar notificações. + Intervalo de registro + Intervalo de registro inválido\'%1$s\' + Informa com que frequência (em segundos) o baresip envia solicitações REGISTER. Os valores válidos são entre 60 a 3600. + A conta \'%1$s\' não tem provedor telefonico + Escolha a URI de destino + A gravação só pode ser ativada ou desativada quando não estiver em chamada + Família de endereço + Escolhe quais endereços IP o baresip está usando. Se for escolhido IPv4 ou IPv6, o baresip usa apenas endereços IPv4 ou IPv6. Se nenhum for escolhido, o baresip usará os endereços IPv4 e IPv6. + Atraso do áudio + Tempo (em milissegundos) para esperar o áudio de quem chama quando a chamada for estabelecida. Defina um valor mais alto caso perca o áudio de quem chama no início da chamada. + Atraso inválido de áudio \'%1$s\'. Os valores válidos ficam entre 100 a 3000. + Chamada rejeitada automaticamente de %1$s + Aplicativo de telefone padrão + A função de discador não está disponível + Se marcado, o baresip será o aplicativo de telefone padrão. Não marque caso o seu dispositivo também precise lidar com outras chamadas ou mensagens SIP. + Modo de redirecionamento + Solicitação de redirecionamento + Redirecionamento automático para \'%1$s\'\\ + Você aceita o redirecionamento de chamada para \'%1$s\'\? + Seleciona caso a solicitação de redirecionamento da chamada seja seguida automaticamente ou se caso uma confirmação seja solicitada. + Tom do país + Toque da chamada do país, espera e tom de chamada ocupada + Se marcado, indica suporte para respostas provisórias confiáveis (RFC 3262). + Respostas provisórias confiáveis + Favorito + A inicialização automática precisa aparecer no top das permissões. + Falha ao restaurar os dados do aplicativo. A versão 14 e superior do Android não permite a restauração de dados cujo backup foi feito %1$s antes da versão %2$s. + INFO RTP ou SIP em banda + Alto-falante do telefone + Se marcada, o viva-voz do telefone é ligado automaticamente quando a chamada for iniciada. + Quadros por segundo inválidos \'%1$d\' + Quadros de vídeo por segundo + Taxa de quadros de vídeo que será oferecida durante o handshake SDP. Os valores válidos são de 10 a 30. + Pedido de chamada + Aceita o pedido de chamada para \'%1$s\'? + Agente do usuário + Valor do campo de cabeçalho User-Agent personalizado da solicitação/resposta SIP + Valor do campo do cabeçalho User-Agent inválido + Valor inválido do ganho do microfone + Ganho do microfone + Multiplique o volume do microfone por esse número decimal. O valor mínimo é 1,0 (padrão de fábrica), que desativa o ganho do microfone. Valores maiores podem afetar negativamente a qualidade do áudio. +
\ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000..871a799 --- /dev/null +++ b/app/src/main/res/values-pt/strings.xml @@ -0,0 +1,328 @@ + + + Os dados da aplicação foram restaurados. O baresip precisa ser reiniciado. Reiniciar agora\? + Quer apagar o chat com \'%1$s\'\? + Se marcado, baresip iniciar automaticamente depois que o aparelho reiniciar. + Ajuda + Quer verificar SAS <%1$s>\? + URI SIP \'%1$s\' inválida + Se marcado, um ficheiro contendo certificados TLS necessário para as Autoridades de Certificação foi ou será carregado. Na versão do Android 9 e anteriores, um ficheiro chamado \'ca_certs.crt\' será lido a partir da pasta Download. + Se selecionado, disponibiliza mensagens de depuração no registo log e informações para o Logcat. + Atender + Esperada percentagem de perda de pacotes do fluxo de áudio do Opus, de 0-100. Por padrão o valor é 1. O valor 0 desativa o Opus Forward Error Correction (FEC). + Rejeitar + URI SIP de um ou dois proxies que precisam ser usados para enviar solicitações. Se dois forem informados, requisições de REGISTO serão enviados para ambos e as outras requisições serão enviadas para aquele que respondeu. Se nenhum proxy foi informado, requisições serão enviadas baseadas em DNS NAPTR/SRV/A pesquisa de registo da URI do host do destinatário. Se o host da URI SIP for um endereço IPv6, o endereço precisa ser escrito dentro de colchetes []. +\nExemplos: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + Enviar Mensagem + Falha ao alocar nova conta. + Nenhuma informação disponível + Recusar + Quer apagar o histórico de chamadas da conta \'%1$s\'\? + Adicionar Contato + Um URI do servidor STUN/TURN na forma de scheme:host[:porta][\?transport=udp|tcp]. Onde o scheme é \'stun\', \'stuns\', \'turn\', ou \'turns\'. O Servidor predefinido de fábrica para o STUN e os protocolos ICE são \'stun:stun.l.google.com:19302\' apontando para o servidor STUN público do Google. Não há qualquer servidor STUN predefinido de fábrica. + Baresip falhou ao iniciar. Isso pode ser devido a um valor inválido das Configurações. Verifique Endereço de Escuta, Ficheiro de Certificado TLS e Ficheiro CA TLS. Em seguida, reinicie o baresip. + Já tem uma chamada ativa. + chamada + Quando uma nova conta é criada, a informação do número da porta, da conta e o protocolo de transporte é opcional: <utilizador>@@<domínio>[:<porta>][;transport=udp|tcp|tls]. Caso a <porta> seja informada e o protocolo de transporte não, o padrão será udp. Caso a <porta> não seja informada e o protocolo de transporte seja, a <porta> padrão é 5060 ou 5061 (TLS). Caso nenhum dos dois ou nenhum proxy seja informado, o utilizador da conta (caso haja) é determinado exclusivamente com base nas informações do DNS do domínio. + Palavra-passe STUN/TURN + Redefinir os Padrões de Fábrica + Aceitar o envio e o recebimento de vídeo com \'%1$s\'\? + Chamada de … + Adicionar + Alerta + Preferir Mídia IPv6 + uma nova mensagem + Quer apagar o contato \'%1$s\'\? + Volume de Chamadas prefinido + Criptografar Palavra-passe + Nova Conta + Nome + Mensagem do Chat + Quer ligar ou enviar mensagem para \'%1$s\'\? + Ficheiro TLS CA + Caso esteja marcado, o cancelamento do eco estará utilizando um filtro estendido. + URI SIP de outro Servidor Proxy + Contato \'%1$s\' já existe. + URI SIP do Servidor Proxy + Cópia de Segurança + Módulos de Áudio + Transferir + Estado + A chama é SEGURA, porém o par NÃO é verificado! + Desativar + Quer apagar a mensagem ou adicionar o ponto \'%1$s\' aos contatos\? + URI SIP para verificar mensagens de correio de voz. Se deixado em branco, as mensagens do correio de voz (Indicação de Mensagem em Espera) não serão assinadas. + Se marcado, o registo é ativado e as solicitações de REGISTO são enviadas no intervalo determinado pelo Intervalo de registo. + Lista dos codecs de vídeo em ordem de prioridade. Arraste para reordenar, deslize para a direita para ativar ou desativar. + Taxa atual: %1$s (Kbits/s) + Hoje + Apagar + Servidores DNS + Conceda permissão à \"Câmara\" para fazer ou atender chamadas de vídeo. + Falha ao definir servidores DNS + Lista dos codecs de áudio em ordem de prioridade. Arraste para reordenar, deslize para a direita para ativar ou desativar. + Palavra-passe, caso seja necessário pelo servidor STUN/TURN + Quer apagar o chat com o par \'%1$s\' ou adicionar o par aos contatos\? + NAT Transversal de Mídia + Recebendo chamada de + Enviar + Mensagens do Correio de Voz + Chamada de vídeo + Se marcado, esta conta é selecionada quando o baresip for iniciado. + Falha ao fazer o backup dos dados da aplicação no ficheiro \'%1$s\'. Verifique Aplicações → baresip → Permissões → Armazenamento. + Chamada em espera/liberar + Nome (se houver) usado em From URI de solicitações de saída. + A ligação falhou + Palavra-passe + Verificar a Solicitação + Correio de Voz + Novo Contato + Codecs de áudio providos pelos módulos selecionados estão disponíveis para uso das contas. + mensagens antigas + Próxies de Saída + Histórico de Chamadas + Contatos + Falar com %1$s + Iniciar Automaticamente + usuario@dominio[:porta][;transport=udp|tcp|tls] inválido \'%1$s\' + URI do Servidor Proxy Inválido \'%1$s\' + Teclado de Discagem + Ouvir + Aceitar + Quer apagar o histórico de chat da conta \'%1$s\'\? + Se ajustado, volume de áudio da chamada predefinida na escala de 1 a 10. + Contas + Nome de contato \'%1$s\' inválido + Descriptografar Palavra-passe + Nome de Exibição Inválido\'%1$s\' + Erro + Não + Nova mensagem + Informações + Manual + Novo Par de Chat + Apagar + Quer apagar a mensagem\? + Desligar + Confirmação + Precisa reiniciar o baresip para aplicar as novas configurações. Reiniciar agora\? + Chamada + Codecs de Vídeo + Automático + Quer adicionar \'%1$s\' aos contatos ou deletar %2$s do histórico de chamadas\? + Você + Codecs + Falha ao carregar módulo. + Ligar a … + Servidor STUN/TURN + Tem + Não tem mensagens + Duração: %1$d (segs) + Transferindo chamada para … + Se marcado, cancelamento de eco é tentado no áudio da chamada. + Informações da Chamada + Histórico de Mensagens + A chamada é SEGURA e o par é VERIFICADO! Deseja desverificar o par\? + Taxa de bits máxima média usada pelo fluxo de áudio do Opus. Os valores válidos são 6000-510000. A predefinição de fábrica é 28000. + Solicitação para Reinicialização + Registo + Filtro Estendido do AEC + Restaurar + Perda de pacotes Opus esperada + Aceita transferir esta chamada para \'%1$s\'\? + Cancelar + Quer apagar a conta \'%1$s\'\? + Pedido de Vídeo + e + Taxa de Bits Opus + Nome do Utilizador STUN/TURN + Conta Predefinida + OK + Falhou + A chamada está terminada + Taxa de bits Opus inválida + Pedido de Transferência + Palavra-passe de Autenticação + O registo de %1$s falhou. + Contato + Ficheiro de Certificado TLS + Par do chat URI é inválido + Servidores de DNS inválidos + Selecione o protocolo de criptografia de transporte de mídia (se houver). +\n • ZRTP (recomendado) significa que a negociação de criptografia de mídia ZRTP ponta-a-ponta é tentada depois que a ligação foi estabelecida. +\n • DTLS-SRTPF significa que UDP/TLS/RTP/SAVPF é oferecido em chamadas efetuadas que RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP, ou UDP/TLS/RTP/SAVPF é usado se oferecida em chamadas recebidas. +\n • SRTP-MANDF significa que RTP/SAVPF é oferecido em chamadas efetuadas e requerido em chamadas recebidas. +\n • SRTP-MAND significa que RTP/SAVP é oferecido em chamadas efetuadas e requerido em chamadas recebidas. +\n • SRTP significa que RTP/AVP é oferecido em chamadas efetuadas e que RTP/SAVP ou RTP/SAVPF é usado se oferecido em chamadas recebidas. + novas mensagens + <h1>Biblioteca Baresip baseado em agente de utilizador SIP</h1> <p>Juha Heinanen <jh@tutpro.com></p> <p>Version %1$s</p> <h2>Dicas de Uso</h2> <ul> <li>Verifique se os valores predefinidos nas Configurações atendem as suas necessidades (clique nos títulos para ajuda).</li> <li>Então em Contas, crie uma ou mais contas (novamente clique nos títulos para ajuda).</li> <li>Uma nova conta pode ser parcialmente configurada automaticamente. Consulte <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>Wiki</a> para obter mais informações.</li> <li>O estado de uma conta é mostrado com um ponto colorido: verde (registo bem sucedido), amarelo (registo em progresso), vermelho (registo falhou), branco (registo não foi ativado).</li> <li>Toque nos três pontos para ir direto à configuração da conta.</li> <li>O toque longo na conta atual, ativa ou não o registo da conta.</li> <li>Gestos para esquerda/direita alternam as contas.</li> <li>O ícone na parte superior do ecrã principal alterna o alto-falante.</li> <li>Os ícones na parte inferior da ecrã principal levam ao correio de voz (caso a URI do correio de voz tenha sido configurada para a conta), contatos, mensagens e histórico de chamadas que permitem alternar entre o teclado numérico e o alfanumérico</li> <li>O interlocutor anterior pode ser re-lacionado a tocar no ícone da chamada quando o \"calee\" estiver vazio</li> <li>O gesto de passar o dedo para baixo no ecrã faz com que o ecrã de registo da conta seja exibida novamente.</li> <li>Peers de chamada e mensagens podem ser adicionadas aos contatos com toque longo.</li> <li>Toques longos também podem ser usados para remover chamadas, chats, mensagens e contatos.</li> <li>Toque/toque longo em ícones de contato podem ser usados para adicionar/remover avatar.</li> </ul> <h2>Política de privacidade</h2> A política de privacidade está disponível <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/master/PrivacyPolicy.txt>aqui</a>. <h2>Código Fonte</h2> Código fonte disponível em <a href=https://github.com/juha-h/baresip-studio>GitHub</a>, onde também falhas podem ser reportadas. <h2>Licenças</h2> <ul> <li><b>BSD-3-Clause</b> exceto o seguinte</li> <li><b>Apache 2.0</b> AMR codec, TLS security e criptografia de mídia ZRTP</li> <li><b>LGPL 2.1</b> G722 e codecs G726</li> <b>GNU GPLv3</b> G.729 codec</li> </ul> + Seu Nome + Tamanho do Quadro do Vídeo + Falha ao restaurar os dados da aplicação. Verifique se inseriu a palavra-passe correta e que o ficheiro de backup seja deste aplicação, Nas versões do Android 9 e anteriores, verifique também em Apps → baresip → Permissões → Armazenamento e se o ficheiro \'%1$s\' existe na pasta Download. + Reiniciar + Nome de Utilizador de Autenticação + Mensagens + Nome de utilizador de autenticação se a autenticação de solicitações SIP for necessária. O valor predefinido é o nome de utilizador da conta. + Sim + Selecione o protocolo de NAT transversal de mídia (se houver). Escolhas possíveis são STUN (Session Traversal Utilities para NAT, RFC 5389) e ICE (Interactive Connectivity Establishment, RFC 5245). + Servidor URI STUN/TURN Inválido \'%1$s\' + Nome de Utilizador de Autenticação Inválido \'%1$s\' + Não possui câmaras de vídeo compatíveis. + chamadas + Codecs de Áudio + Ativar + DTMF + URI de Correio de Voz inválida \'%1$s\' + O baresip precisa de permissão do \"Microfone\" para realizar chamadas de voz. + URI SIP inválida + Houve uma falha ao ler o ficheiro \'ca_certs.crt\'. + A conta \'%1$s\' já existe. + Endereço IP e porta no formato \'endereco:porta\' do qual o baresip escuta para solicitações SIP recebidas. Se o endereço IP é um endereço IPv6, deve ser escrito em colchetes []. Endereço IPv4 0.0.0.0 ou IPv6 [::] faz o baresip escutar todos endereços disponíveis. Se deixado em branco (ajuste predefinido), o baresip escuta na porta 5060 de todos endereços disponíveis. + Se selecionado, ajustes serão redefinidos para os valores de predefinição de fábrica. + Esta chamada NÃO é segura! + Houve uma falha ao ler o ficheiro \'cert.pem\'. + Criptografia de Mídia + Destinatário + Endereço de Escuta + Nome de Exibição + Sobre + Quer ligar ou enviar a mensagem para \'%1$s\'\? + Envio de mensagem falhou + usuario@dominio + ID do Utilizador + Endereço de Escuta inválido + Nome do utilizador, caso seja necessário pelo servidor STUN/TURN + Palavra-passe de Autenticação Inválida \'%1$s\' + Palavra-passe de Autenticação com até 64 caracteres. Se o Nome de Utilizador de Autenticação for informado mas a palavra-passe não, ela será solicitada quando o baresip for iniciado. + Modo de Atendimento + Mostrar Palavra-passe + Mensagem de + Conta + Editar + Cancelamento de Eco Acústico + Apagar + Depuração + Se selecionado, oferece usar protocolo de mídia IPv6 (se disponível) quando o protocolo de mídia do par não puder ser determinado automaticamente. + Percentagem de Perda de Pacotes do Opus inválida + Lista de endereço de servidores de DNS separados por vírgula. Endereços de servidores DNS são obtidos dinamicamente pelo sistema. Cada endereço DNS é na forma \'ip:porta\' ou \'ip\'. Se a porta é omitida, a predefinição será 53. Se o ip é um endereço IPv6 e também a porta é fornecida, o ip precisa ser escrito dentro de colchetes []. Por exemplo, escutar \'8.8.8.8:53,[2001:4860:4860::8888]:53\' aponta para endereços IPv4 e IPv6 dos servidores de DNS do Google. + Aviso + Sobre o baresip + Palavra-passe inválida \'%1$s\' + uma mensagem antiga + Ajustes + Selecione como chamadas recebidas são respondidas. + A sua quantidade máxima de %1$d contatos foi excedida. + Tamanho dos quadros de vídeo que foram transmitidos (largura x altura) + URI do Correio de Voz + Os dados as aplicações foram armazenados num backup no ficheiro \'%1$s\'. Nas versões do Android 9 e anteriores, o ficheiro está na pasta Download. + Sair + Desverificar + Se marcado, o ficheiro que contém o certificado TLS e a chave privada desta instância do baresip foi ou será carregado. Na versão do Android 9 e anteriores, um ficheiro chamado \'cert.pen\' será lido a partir da pasta Download. Por motivos de segurança, apage o ficheiro após o carregamento. + Nome do utilizador inválido \'%1$s\' + Quer apagar %1$s\' %2$s do histórico de chamadas\? + A transferência falhou + Destino da transferência + Transferência de chamada + Aceitar o recebimento de vídeo a partir do \'%1$s\'\? + Aceitar o envio de vídeo para \'%1$s\'\? + Se for marcado, este contato será adicionado nos contatos do Android. + Se selecionado em conjunto com Debug, as mensagens Logcat incluem também o pedido SIP e o rastreamento da resposta. A opção não é ativada automaticamente durante a inicialização do baresip. + Rastreio SIP + Impor o uso do tema escuro no ecrã + Tema Escuro + Se estiver marcado, o baresip verifica os certificados TLS do SIP User Agent e o SIP Proxy Servers quando o transporte TLS for usado. Se estiver marcado, o ficheiro TLS CA também deve ser carregado. + Verifique os certificados do servidor + Chamada de solicitação de transferência para + Ligação perdida de + Solicitações INFO SIP + Eventos na Banda RTP + Selecione como os tons DTMF 0–9, #, * e A-D serão enviados. + Modo DTMF + Servidor URI STUN/TURN + <h1>Agente de utilizador SIP baseado na biblioteca baresip com chamadas</h1> de vídeo <p>Juha Heinanen &lt;jh@tutpro.com&gt;</p> <p>Versão %1$s</p> Dicas de <h2>uso</h2> <ul> <li>Verifique se os valores predefinidos nas Configurações do baresip+ atendem às suas necessidades (toque nos títulos dos itens para ver a ajuda).</li> <li>Em Contas, crie uma ou mais contas (toque novamente nos títulos dos itens para receber ajuda).</li> <li>Uma nova conta pode ser parcialmente configurada automaticamente. Consulte <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>Wiki</a> para obter mais informações.</li> <li>A condição geral do registo de uma conta é exibido com um ponto colorido: verde (registo bem sucedido, amarelo (o registo está em andamento), vermelho (falha no registo), branco (o registo ainda não foi ativado).</li> <li>Toque nos três pontos para ir direto à configuração da conta.</li> <li>O toque longo na conta atual, ativa ou não o registo da conta.</li> <li>Gestos para esquerda/direita alternam as contas.</li> <li>O ícone na parte superior do ecrã principal alterna o alto-falante.</li> <li>Os ícones na parte inferior do ecrã principal levam ao correio de voz (caso a URI do correio de voz tenha sido configurada para a conta), contatos, mensagens e histórico de chamadas que permitem alternar entre o teclado numérico e o alfanumérico</li> <li>O interlocutor anterior pode ser re-lacionado a tocar no ícone da chamada quando o \"calee\" estiver vazio</li> <li>O gesto para baixo causa o recadastramento da conta que está atualmente sendo mostrada.</li> <li>Os peers das chamadas e das mensagens podem ser adicionados aos contatos através de toques longos.</li> <li>Os toques também podem ser utilizados para remover chamadas, chats, mensagens e os contatos.</li> <li>O toque ou toque longo no ícone de contato pode ser usado para instalar/remover a imagem do avatar.</li> </ul> <li>Nas chamadas de vídeo, o aparelho precisa ser mantido no modo paisagem com o ecrã na horizontal.</li> <li>O Selfview não é mostrado adequadamente quando a transmissão do vídeo está como sendonly.</li> </ul> <h2>Política de privacidade</h2> A política de privacidade está disponível <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/master/PrivacyPolicy.txt>aqui</a>. <h2>O Código Fonte</h2> está disponível em <a href=https://github.com/juha-h/baresip-studio>GitHub</a>, onde também qualquer problema poderá ser relatado. <h2>Licenças</h2> <ul> <li><b>BSD-3-Clause</b> exceto as seguintes:</li> <li><b>Apache 2.0</b> AMR codec e segurança TLS</li> <li><b>LGPL 2.1</b> codecs G.722 e G.726 codecs</li> <li><b>AGPLv4</b> criptografia de mídia ZRTP</li> <li><b>GNU GPLv2</b> codecs H.264 e H.265</li> <li><b>GNU GPLv3</b> codec G.729</li> <li><b>AOMedia</b> AV1 codec</li> </ul> + Sobre o baresip+ + Otimizações da bateria + Chamadas perdidas + %1$d chamadas perdidas + Desative as otimizações da bateria (recomendado) caso queira reduzir a probabilidade do Android restringir o acesso do baresip à rede ou ponha o baresip no modo de espera. + Tem certeza de que deseja redefinir as configurações para os valores predefinidos de fábrica\? + Redefinir + Imagem do perfil + Pacotes + Perda + Variação: %1$s (ms) + Não pode restaurar o backup sem a permissão de \"Armazenamento\". + Chamada em espera + Microfone ligado/desligado + Nenhuma conexão de rede! + Taxa média: %1$s (Kbits/s) + Não pode criar backups sem a permissão de \"Armazenamento\". + Configurações de áudio + Par + Direção + Detalhes da chamada + Hora + Duração + Parte do host SIP URI usada em chamadas para números de telefone. O padrão de fábrica é o domínio da conta. Se não for fornecida, esta conta não pode ser usada para ligar para números de telefone. + Você não pode acessar os contatos do Android sem a permissão \"Contatos\". + SIP ou tel URI + usuário@domínio ou número de telefone + Escolhe se os contatos do Baresip, os contatos do Android ou ambos são usados. Se ambos e contato com o mesmo nome existirem em ambos, o contato Baresip será escolhido. + Ambos + SIP ou tel URI \'%1$s\' inválido + Cego + Participou + Provedor de telefonia + Parte do host SIP URI + Parte do host URI SIP inválida \'%1$s\' + Intervalo de registo + Intervalo de registo inválido\'%1$s\' + Se marcada, os pacotes RTP e RTCP são multiplexados numa única porta (RFC 5761). + Reordenar + O baresip não é capaz de detetar a conectividade Bluetooth sem a permissão \"Aparelhos próximos\". + Multiplexagem RTCP + Código do país + A conta \'%1$s\' não tem provedor telefonico + Não pode usar esta aplicação sem a permissão \"Notificações\". + Foco de áudio negado! + +código + Código do país inválido \'%1$s\' + Desviado por … + Escolha a URI de destino + Anônimo + Desconhecido + Solicitação de consentimento + O código do país E.164 desta conta. Se durante o recebimento da chamada ou mensagem do utilizador a parte URI recebida tiver um número de telefone que não começa com o sinal \'+\' e se a busca de contato falhar, o número será prefixado com este código do país e a busca pelo contato será testada novamente. Se o número de telefone começar com um único dígito \'0\', o dígito \'0\' será removido antes que o número seja prefixado. + Apelido da conta + Apelido (se houver) é utilizado para identificar essa conta dentro da app baresip. + Apelido inválido da conta \'%1$s\' + O apelido \'%1$s\' já existe + Apelido + Informa com que frequência (em segundos) o baresip envia solicitações REGISTER. Os valores válidos são entre 60 a 3600. + Se os contatos so android forem escolhidos, eles podem ser usados nas chamadas e nas mensagens como referências ao SIP e so tel das URIs. a app baresip não armazena os contatos do Android nem os compartilha com ninguém. Para disponibilizar os contatos android no baresip, o Google exige que aceite o uso como descrito aqui e na Política de Privacidade. + Justificativa das permissões + O baresip precisa da permissão \"Microfone\" para realizar chamadas de voz, da permissão \"Aparelhos próximos\" para fazer a detecção do microfone/alto-falante Bluetooth e a permissão \"Notificações\" para postar notificações. + O baresip+ precisa da permissão \"Microfone\" para realizar chamadas de voz, da permissão \"Câmara\" para realizar chamadas de vídeo. da permissão \"Aparelhos próximos\" para fazer a detecção do microfone/alto-falante Bluetooth caso queira usar tal aparelho, assim como a permissão \"Notificações\" para postar notificações. + Família de endereço + Escolhe quais endereços IP o baresip usa. Se IPv4 ou IPv6 for escolhido, o baresip usa apenas endereços de IPv4 ou IPv6. Se nenhum for escolhido, o baresip usará endereços de IPv4 e IPv6. + A gravação só pode ser ativada ou desativada quando não estiver numa chamada + Modo de redirecionamento + Chamada rejeitada automaticamente de %1$s + Aplicação de telefone padrão + Se for marcado, o baresip será a aplicaöäao de telefone padrão. Não marque caso o seu dispositivo também precise lidar com outras chamadas ou mensagens SIP. + Favorito + Redirecionamento automático para \'%1$s\'\\ + Tempo (em milissegundos) para o áudio esperar de quem chama quando a chamada for estabelecida. Defina um valor mais alto se perde o áudio de quem chama no início da chamada. + Atraso do áudio + Atraso inválido de áudio \'%1$s\'. Os valores válidos são entre 100 a 3000. + A inicialização automática precisa aparecer no topo das permissões. + Solicitação de redirecionamento + Aceita o redirecionamento de chamadas para \'%1$s\'? + Tom do país + Toque da chamada do país, espera e tom de chamada ocupada + Respostas provisórias confiáveis + Se for marcado, indica suporte para respostas provisórias confiáveis (RFC 3262). + \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml new file mode 100644 index 0000000..a3703a1 --- /dev/null +++ b/app/src/main/res/values-ro/strings.xml @@ -0,0 +1,168 @@ + + + Despre baresip + Cont + Nume afișat + Numele tău + Nume (dacă este cazul) utilizat în adresa solicitărilor de conectare. + Nume utilizator de autentificare + Numele de utilizator dacă este necesar pentru proxy de ieșire. + Parolă de autentificare + Parola de autentificare dacă este necesar pentru proxy de ieșire. + Proxy-uri de ieșire + Adresă SIP server proxy + Adresa SIP a altui server proxy + Înregistrare + Codec-uri audio + Listă de codec-uri audio acceptate în ordinea prioritară. + Traversare NAT pentru media + Server STUN + Criptare media + Adresă căsuță vocală + Cont implicit + Dacă este bifată, acest cont este selectat atunci când baresip este pornit. + Conturi + utilizator@domeniu + utilizator@domeniu[:port][;transport=udp|tcp|tls] \'%1$s\' este invalid + Contul \'%1$s\' exista deja. + Nu s-a putut aloca un cont nou. + Parolă criptare + Parolă decriptare + Doriți să ștergeți contul \'%1$s\'\? + Răspunde + Respinge + Apel de la + Cerere transfer apel către + Mesaj de la + Istoric apeluri + Apel + apeluri + apel + Doriți să apelați sau să trimiteți un mesaj către \'%1$s\'\? + Doriți să adăugați \'%1$s\' la contacte sau să ștergeți %2$s din istoricul apelurilor\? + Doriți să ștergeți \'%1$s\' %2$s din istoricul apelurilor\? + Mesaje text + Discuție cu %1$s + Mesaj nou + Doriți să ștergeți mesajul sau să adăugați \'%1$s\' la contacte\? + Doriți să ștergeți mesajul\? + Adaugă contact + Trimiterea mesajului a eșuat + Eșuat + Istoric discuție + Azi + Tu + Discuție cu un contact nou + Adresă SIP invalidă + Doriți să ștergeți discuția cu \'%1$s\' sau să adăugați la contacte\? + Doriți să ștergeți discuția cu \'%1$s\'\? + Configurație + Pornește automat + Dacă este bifată, baresip pornește automat după (re)pornirea dispozitivului. + Adresă de conectare + Servere DNS + Anularea acustică a ecoului + Dacă este bifat, se încearcă eliminarea ecoului în timpul apelurilor. + Rată de eșantionare Opus + Volum implicit de apel + Dacă este setat, volumul audio de apel implicit între 1–10. + Depanare + Mesajele de depanarea și informare sunt scrise în jurnalul dispozitivului. + Resetare la setările inițiale + Dacă este bifată, configurația este resetară la valorile implicite. + Contact + Contact nou + Nume + Nume de contact invalid \'%1$s\' + Contactul \'%1$s\' deja există. + Adresă SIP invalidă + Contacte + Doriți să apelați sau să trimiteți un mesaj către \'%1$s\'\? + Trimite mesaj + Doriți să ștergeți contactul \'%1$s\'\? + Numărul maxim de contacte %1$d a fost depășit. + Alertă + Informații + Notificări + Anulare + Bine + Da + Nu + Acceptă + Refuză + ID utilizator + Parolă + Adaugă + Șterge + Editare + Trimite + Stare + Eroare + Despre + Ieșire + Apel efectuat către … + Apel primit de la … + Transfer apel către … + Adresă SIP invalidă \'%1$s\' + Apelat + Închide + Pune în așteptare + DTMF + Informații apel + Durată %1$d + Codec-uri + Rată: %1$s + Căsuță vocală + Mesaje căsuță vocală + Aveți + un mesaj nou + mesaje noi + un mesaj vechi + mesaje vechi + și + Nu aveți mesaje + Ascultă + Mesaje + Tastatura virtuală + Aveți deja un apel activ. + Înregistrarea %1$s a eșuat. + Verificare + Doriți să verificați SAS <%1$s>\? + Acceptați să transferați apelul către \'%1$s\'\? + Apelul a eșuat. + Apel închis. + Acest apel NU este securizat! + Acest apel este SECURIZAT, dar contactul NU este verificat! + Acest apel este SECURIZAT și contactul este VERIFICAT! Doriți să anulați verificarea\? + Anulare verificare + Se activeaza înregistrarea și cererile REGISTER vor fi trimise la fiecare 12 minute. + Selectare protocol traversare NAT (dacă există). Posibile opțiuni: STUN (Session Traversal Utilities for NAT, RFC 5389) și ICE (Interactive Connectivity Establishment, RFC 5245). + Un server STUN este de forma gazdă[:port]. Setarea implicită este \'stun.l.google.com:19302\', ce folosește un server public STUN găzduit de Google. Momentan nu se poate seta un nume de utilizator și parolă. + Adresă SIP pentru verificarea mesajelor din căsuța vocală. Dacă nu este completată, nu se va face abonarea (Message Waiting Indications) la căsuța vocală. + Baresip nu a putut porni! Aceasta se poate datora unei setări invalide. Verificați adresa de ascultare, fișierul certificat TLS și fișierul TLS al CA. Apoi reporniți baresip. + Fișier certificat TLS + Fișier CA TLS + Nu s-a putut citi fișierul \'cert.pem\' din dosarul Download. + Nu s-a putut citi fișierul \'ca_certs.crt\' din dosarul Download. + Pachete pierdute Opus + Adresă de ascultare invalidă + Servere DNS invalide + Nu s-au putut seta serverele DNS + Rată de biți Opus invalidă + Procentaj de pachete pierdute Opus invalid + Mod de răspuns + Selectează modul de răspuns al apelurilor primite. + Manual + Automat + Repornire + Rata medie maximă de biți utilizată de fluxul audio Opus. Valorile valide sunt 6000-510000. Valoarea implicită din fabrică este 28000. + Șterge + Dezactivează + Activează + Şterge + Copie de rezervă + Restaurare + Codecurile audio furnizate de modulele bifate sunt disponibile pentru utilizare de către conturi. + Nume afișat nevalid \"%1$s\' + Despre baresip+ + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..aa364c6 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,331 @@ + + + О программе + Добавить + Добавить контакт + Внимание + Ответить + Аудио кодеки + Пароль аутентификации + Имя пользователя + Авто + Вызов + У вас уже есть активный звонок. + Вызов закончен + Вызов не удался + История звонков + Информация о звонке + Этот вызов БЕЗОПАСЕН, и собеседник ПОДТВЕРЖДЕН! Вы хотите отменить верификацию собеседника\? + Вызываемый + Вы хитите добавить \'%1$s\' в контакты или удалить %2$s из истории звинков? + вызов + Хотите послать сообщение \'%1$s\'? + Вызовы + Хотите удалить \'%1$s\' %2$s из истории вызовов? + Отмена + Чат + Чат с %1$s + История чата + Кодеки + Хотите перегрузить для активации новых установок? + Настройки + Контакт + Хотите позвонить или послать сообщение \'%1$s\'? + Контакт \'%1$s\' уже существует. + Хотите удалить контакт \'%1$s\'? + Имя + Контакты + Максимальное число контактов %1$d исчерпано. + Отладка + Расшифровать пароль + Аккаунт по умолчанию + Если отмечено, эта учетная запись будет выбрана при запуске baresip. + Громкость вызова по умолчанию + Если установлено громкость вызова 1-10. + Удалить + Хотите удалить аккаунт \'%1$s\'? + Удалить + Хотите удалить историю чата с \'%1$s\'? + Удалить + Хотите удалить историю вызовов с \'%1$s\'? + Запрет + Клавиатура + Отключить + Отображаемое имя + Имя используемое в From URI исходящих вызовов. + ДНС сервера + Список адресов DNS-серверов, разделенных запятыми. Если не указан, адреса DNS-серверов получаются из системы динамически. Каждый DNS-адрес имеет форму «ip:порт» или «ip». Если порт не указан, по умолчанию используется значение 53. Если ip является адресом IPv6 и также указан порт, ip должен быть записан в квадратных скобках []. Например, список «8.8.8.8:53,[2001:4860:4860::8888]:53» указывает на IPv4- и IPv6-адреса общедоступных DNS-серверов Google. + Длительность: %1$d (с) + Редактировать + Включить + Шифровать пароль + Ошибка + Не могу загрузить модуль. + Не могу установиь ДНС сервера + Прервать вызов + Помощь + Удержание/возобновление вызова + Входящий вызов от + Вызов от … + Информация + Недопустимый URI узла чата + Неверное имя контакта \'%1$s\' + Неверный SIP URI + Неверный ДНС сервер + Неверный адрес + Неверный Opus bitrate + Послать + Послать сообщение + Не удалось отправить сообщение + Хотите удалить чат с \'%1$s\'? + Хотите удалить сообщение? + Запускать автоматически + Если выбрано, baresip запускается автоматически после (пере)запуска устройства. + Статус + Голосовая почта + Сообщения голосовой почты + URI голововой почты + Да + Вы + Вы имеете + Ваше имя + О baresip + Список аудиокодеков в порядке приоритета. Перетащите для изменения порядка, смахните вправо для включения или отключения. + Аудио модули + Пароль аутентификации до 64 символов. Если указано имя пользователя для аутентификации, но нет пароля, он будет запрошен при запуске baresip. + Резервное копирование + Шифрование медиа + Выбирает протокол шифрования медиа-транспорта (если есть). +\n • ZRTP (рекомендуется) означает, что согласование сквозного шифрования данных ZRTP предпринимается после установления соединения. +\n • DTLS-SRTPF означает, что UDP/TLS/RTP/SAVPF предлагается в исходящем вызове и что RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP или UDP/TLS/RTP/SAVPF используется, если предлагается во входящем вызов. +\n • SRTP-MANDF означает, что RTP/SAVPF предлагается при исходящем вызове и требуется при входящем вызове. +\n • SRTP-MAND означает, что RTP/SAVP предлагается при исходящем вызове и требуется при входящем вызове. +\n • SRTP означает, что RTP/AVP предлагается в исходящем вызове и что RTP/SAVP или RTP/SAVPF используется, если предлагается во входящем вызове. + Неудачно + Сообщение от + Сообщения + Новый аккаунт + Новый партнер чата + Новый контакт + Новое сообщение + Новые сообщения + Нет + Вы не имеете сообщений + Оповещение + Ок + старые сообщения + одно новое сообщение + одно старое сообщение + Пароль + Выход + Текущая скорость: %1$s (Кбит/с) + Регистрация + Отклонить + Сброс к заводским настройкам + Перезагрузка + Восстановление + Запрос на проверку + ID пользователя + baresip требуется разрешение доступа к микрофону для голосовых вызовов. + Хотите удалить сообщения или добавить пользователя \'%1$s\' в контакты? + Принять + Профиль + Не могу создать новый аккаунт. + Профиль \'%1$s\' уже существует. + Профили + Подавление акустического эха + Если выбрано - работает подавление эха. + и + Режим ответа + Выберите как отвечать на входящие вызовы. + Данные приложения сохранены в файл \'%1$s\'. В Android версии 9 и ниже файл находится в каталоге загрузок. + Вызов не безопасен! + Прослушивать адрес + Исходящие прокси + Вызов на … + Регистрация `%1$s` не удалась. + Данные приложения восстановлены. Нужна перезагрузка baresip. Перезагрузить\? + Сегодня + Принять перевод этого вызова на \'%1$s\'\? + Запрос перевода на + Перевод на … + Отменить подтверждение + Неверный процент потерь Opus + Прохождение медиа NAT + Выбирает протокол прохождения медиа NAT (если есть). Возможные варианты: STUN (Session Traversal Utilities for NAT, RFC 5389) и ICE (Interactive Connectivity Establishment, RFC 5245). + Показать пароль + У вас нет поддерживаемых камер. + Выдайте разрешение доступа к камере для совершения видеозвонков или ответа на них. + Не удалось восстановить данные приложения. Проверьте, что ввели правильный пароль и файл резервной копии от этого приложения. В Android версии 9 и ниже также проверьте Приложения → baresip → Разрешения → Хранилище и убедитесь, что файл \'%1$s\' существует в каталоге загрузок. + Запрос на перезапуск + Не удалось создать резервную копию данных приложения в файл \'%1$s\'. Проверьте Приложения → baresip → Разрешения → Хранилище. + Этот вызов БЕЗОПАСНЫЙ, но собеседник НЕ проверен! + Передача + Вы хотите проверить SAS <%1$s>\? + Baresip не запустился. Это может быть из-за неверного значения настроек. Проверьте адрес прослушивания, файл сертификата TLS и файл CA TLS. Затем перезапустите baresip. + Слушать + Нет информации + DTMF (тональный) + Разрешить передачу и приём видео с \'%1$s\'\? + Видео запрос + Видеозвонок + Недействительный SIP URI \'%1$s\' + Подтверждение + Не удалось прочитать файл \'ca_certs.crt\'. + Не удалось прочитать файл \'cert.pem\'. + Если этот флажок установлен, настройки сбрасываются до значений по умолчанию. + При отметке отправляет отладочные и информационные сообщения в Logcat. + Размер передаваемых видеокадров (ширина x высота) + Размер кадра видео + Ожидаемый процент потери пакетов аудиопотока Opus, от 0 до 100. По умолчанию 1. Значение 0 также выключает Opus Forward Error Correction (FEC). + Ожидаемая потеря пакетов Opus + Средняя максимальная скорость передачи данных, используемая в аудиопотоке Opus. Допустимые значения: 6000-510000. Значение по умолчанию - 28000. + Скорость передачи данных Opus + Если этот флажок установлен, для подавления эха используется расширенный фильтр. + Расширенный фильтр AEC + Аудиокодеки, предоставленные выбранными модулями, доступны для использования в аккаунтах. + При отметке файл с TLS-сертификатами необходимых центров сертификации был или будет загружен. В Android версии 9 и ниже файл называется \'ca_certs.crt\' и берётся из каталога загрузок. + Файл TLS CA + При отметке файл с TLS-сертификатом и закрытым ключом этого экземпляра baresip, был или будет загружен. В Android версии 9 и ниже файл называется \'cert.pem\' и берётся из каталога загрузок. В целях безопасности удалите файл после загрузки. + Файл сертификата TLS + IP-адрес и порт в форме «адрес:порт», на котором baresip прослушивает входящие SIP-запросы. Если IP-адрес является IPv6-адресом, он должен быть написан в квадратных скобках []. IPv4-адрес 0.0.0.0 или IPv6-адрес [::] заставляет baresip прослушивать все доступные адреса. Если оставить пустым (установка по умолчанию), baresip прослушивает порт 5060 всех доступных адресов. + Вы хотите удалить чат с собеседником \'%1$s\' или добавить собеседника в контакты\? + Недействительный user@domain[:port][;transport=udp|tcp|tls] \'%1$s\' + пользователь@домен + При создании новой учётной записи дополнительно могут быть указаны номер порта и транспортный протокол: <пользователь>@<домен>[:<порт>][;transport=udp|tcp|tls]. Если порт указан, а транспортный протокол отсутствует, по умолчанию используется протокол UDP. Если же указан транспортный протокол и отсутствует порт, по умолчанию используется порт 5060 или 5061 (TLS). Если ни один из них не указан и не используется исходящий прокси-сервер, регистратор учётной записи (если есть) определяется исключительно на основе DNS-информации домена. + Недействительный URI голосовой почты \'%1$s\' + SIP URI для проверки сообщений голосовой почты. Если оставить поле пустым, сообщения голосовой почты (индикаторы ожидающего сообщения) не задействуются. + Вручную + Если этот флажок установлен, предлагать использовать медиа-протокол IPv6 (если доступен), если медиа-протокол собеседника не может быть автоматически определен. + Предпочитать IPv6 медиа + Неверный пароль \'%1$s\' + Пароль, если требуется сервером STUN/TURN + Пароль STUN/TURN + Недействительное имя пользователя \'%1$s\' + Имя пользователя, если требуется сервером STUN/TURN + Имя пользователя STUN/TURN + Недействительный URI сервера STUN/TURN \'%1$s\' + URI сервера STUN/TURN в виде схема:хост[:порт][\?transport=udp|tcp], где схема — \'stun\', \'turn\' или \'turns\'. STUN-сервер по умолчанию для протоколов STUN и ICE — \'stun:stun.l.google.com:19302\' — общедоступный STUN-сервер Google. TURN-сервер по умолчанию не используется. + STUN/TURN сервер + Список видеокодеков в порядке приоритета. Перетащите для изменения порядка, смахните вправо для включения или отключения. + Видео кодеки + При отметке включается регистрация и REGISTER-запросы отправляются с указанным интервалом. + Недействительный URI прокси-сервера \'%1$s\' + SIP URI другого прокси-сервера + SIP URI прокси-сервера + <h1>SIP-клиент на основе библиотеки Baresip</h1> <p>Juha Heinanen &lt;jh@tutpro.com&gt;</p> <p>Версия %1$s</p> <h2>Подсказки по использованию</h2> <ul> <li>Убедитесь, что значения параметров по умолчанию соответствуют вашим потребностям (касайтесь их названий для получения справки).</li> <li>Затем создайте одну или несколько учётных записей (опять же касайтесь заголовков элементов для получения справки).</li> <li>Новая учётная запись может частично настраиваться автоматически. Смотрите подробности в <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>вики</a>.</li> <li>Состояние регистрации учётной записи отображается цветной точкой: зелёной (регистрация успешна), жёлтой (регистрация выполняется), красной (регистрация не удалась), белой (регистрация отключена).</li> <li>Касание точки открывает параметры учётной записи.</li> <li>Жест смахивания вниз вызывает повторную регистрацию текущей учётной записи.</li> <li>Долгое нажатие на текущей учётной записи включает или отключет её регистрацию.</li> <li>Смахивание влево или вправо переключает между учётными записями.</li> <li>Значок сверху основного экрана переключает динамик.</li> <li>Значки снизу основного экрана открывают голосовую почту (если её URI указан в учётной записи), контакты, сообщения и историю вызовов, а также позволяют переключаться между цифровой и буквенно-цифровой клавиатурами.</li> <li>Предыдущего собеседника можно выбрать касанием значка вызова при пустом поле «Вызываемый».</li> <li>Собеседников в вызовах и сообщениях можно добавлять в контакты долгими нажатиями.</li> <li>Также долгие нажатия можно использовать для удаления вызовов, чатов, сообщений и контактов.</li> <li>Касание / долгое нажатие значка контакта можно использовать для установки/удаления изображения аватара.</li> </ul> <h2>Политика конфиденциальности</h2> <ul> <li>Политика конфиденциальности доступна <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/master/PrivacyPolicy.txt>здесь</a>.</li> </ul> <h2>Исходный код</h2> Исходный код доступен на <a href=https://github.com/juha-h/baresip-studio>GitHub</a>, там же можно сообщить о проблемах. <h2>Лицензии</h2> <ul> <li><b>BSD-3-Clause</b>, за исключением:</li> <li><b>Apache 2.0</b> Кодеки AMR и защита TLS</li><li><b>AGPLv4</b> ZRTP-шифрофание</li> <li><b>LGPL 2.1</b> Кодеки G.722, G.726 и Codec2</li> <li><b>GNU GPLv3</b> Кодек G.729</li> </ul> + SIP URI одного или двух прокси, которые необходимо использовать при отправке запросов. Если задано два, запросы РЕГИСТРАЦИИ отправляются обоим, а другие запросы отправляются тому, кто отвечает. Если исходящий прокси-сервер не указан, запросы отправляются на основе поиска записи DNS NAPTR/SRV/A для URI хоста вызываемого объекта. Если hostpart SIP URI является адресом IPv6, адрес должен быть записан в скобках []. +\nПримеры: +\n • sip:fooexample.com:50601;transport=tls +\n • sip:[2001:67c:223:777::10]:5060;transport=tcp +\n • sip:192.168.43.50:443;transport=wss + Неверное имя пользователя для аутентификации \'%1$s\' + Имя пользователя для аутентификации, если требуется аутентификация SIP-запросов. Значение по умолчанию - имя пользователя учетной записи. + Неверное отображаемое имя \'%1$s\' + Неверный пароль аутентификации \'%1$s\' + Ошибка передачи + Переадресовать на + Переадресация вызова + Переадресовать вызов + <h1>SIP-клиент на основе библиотеки Baresip с видеозвонками</h1> <p>Juha Heinanen &lt;jh@tutpro.com&gt;</p> <p>Версия %1$s</p> <h2>Подсказки по использованию</h2> <ul> <li>Убедитесь, что значения параметров по умолчанию в настройках baresip+ соответствуют вашим потребностям (касайтесь их названий для получения справки).</li> <li>Затем создайте одну или несколько учётных записей (опять же касайтесь заголовков элементов для получения справки).</li> <li>Новая учётная запись может частично настраиваться автоматически. Смотрите подробности в <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>вики</a>.</li> <li>Состояние регистрации учётной записи отображается цветной точкой: зелёной (регистрация успешна), жёлтой (регистрация выполняется), красной (регистрация не удалась), белой (регистрация отключена).</li> <li>Касание точки открывает параметры учётной записи.</li> <li>Жест смахивания вниз вызывает повторную регистрацию текущей учётной записи.</li> <li>Долгое нажатие на текущей учётной записи включает или отключет её регистрацию.</li> <li>Смахивание влево или вправо переключает между учётными записями.</li> <li>Значок сверху основного экрана переключает динамик.</li> <li>Значки снизу основного экрана открывают голосовую почту (если её URI указан в учётной записи), контакты, сообщения и историю вызовов, а также позволяют переключаться между цифровой и буквенно-цифровой клавиатурами.</li> <li>Предыдущего собеседника можно выбрать касанием значка вызова при пустом поле «Вызываемый».</li> <li>Собеседников в вызовах и сообщениях можно добавлять в контакты долгими нажатиями.</li> <li>Также долгие нажатия можно использовать для удаления вызовов, чатов, сообщений и контактов.</li> <li>Касание / долгое нажатие значка контакта можно использовать для установки/удаления изображения аватара.</li> </ul> <h2>Известные проблемы</h2> <ul> <li>В видеозвонках устройство необходимо держать в альбомной ориентации, повернув на 90 градусов влево из портретной ориентации.</li> <li>Собственный вид не отображается корректно, если видеопоток только отправляется.</li> </ul> <h2>Политика конфиденциальности</h2> <ul> <li>Политика конфиденциальности доступна <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/master/PrivacyPolicy.txt>здесь</a>.</li> </ul> <h2>Исходный код</h2> Исходный код доступен на <a href=https://github.com/juha-h/baresip-studio>GitHub</a>, там же можно сообщить о проблемах. <h2>Лицензии</h2> <ul> <li><b>BSD-3-Clause</b>, за исключением:</li> <li><b>Apache 2.0</b> Кодеки AMR и защита TLS</li> <li><b>AGPLv4</b> ZRTP-шифрование</li> <li><b>GNU LGPL 2.1</b> Кодеки G.722, G.726 и Codec2</li> <li><b>GNU GPLv3</b> Кодек G.729</li> <li><b>GNU GPLv2</b> Кодеки H.264 и H.265</li> <li><b>AOMedia</b> Кодек AV1</li> </ul> + О baresip+ + URI-адрес сервера STUN/TURN + Темная тема + Проверка сертификатов сервера + Пир + Направление + Продолжительность + Оптимизация работы батареи + Режим DTMF + Выбирает способ отправки сигналов DTMF 0-9, #, * и A-D. + Внутриполосные события RTP + Запросы SIP INFO + Пропущенные вызовы + %1$d пропущенных вызовов + Сброс + Трассировка SIP + Пропущенный вызов от + Детали вызовов + Время + Если флажок установлен - baresip проверяет сертификаты TLS User Agent\'а SIP и прокси-серверов SIP при использовании транспорта TLS. Если флажок установлен, также должен быть загружен файл TLS CA. + Принудительное отображение темной темы + Вы уверены, что хотите сбросить настройки до значений по умолчанию\? + Если флажок установлен и если установлен флажок Отладка, сообщения Logcat также включают трассировку запросов и ответов SIP. Автоматически снимается при запуске baresip. + Отключите оптимизацию работы батареи (рекомендуется), если вы хотите снизить вероятность того, что Android ограничит доступ baresip к сети или переведет baresip в режим ожидания. + Аудионастройки + Псевдоним (если есть), используемый для идентификации этой учетной записи в baresip app. + Псевдоним учетной записи + Неверный никнейм учетной записи \'%1$s\' + Никнейм \'%1$s\' уже существует + Код страны + Никнейм + Интервал регистрации + Недопустимый интервал регистрации\'%1$s\' + Указывает baresip как часто (в секундах) отправлять REGISTER-запросы. Допустимы значения от 60 до 3600. + Неверная хостовая часть SIP URI \'%1$s\' + Разрешить приём видео с сайта \'%1$s\'\? + Разрешить передачу видео на \'%1$s\'\? + Мультиплексирование RTCP + Переупорядочить + Запрос согласия + SIP или tel URI + Неверный SIP или tel URI \'%1$s\' + Отклонено… + Включение/отключение микрофона + Вызов на удержании + С участием + Потеряно + Вы не можете получить доступ к контактам Android без разрешения «Контакты». + Джиттер: %1$s (мс) + baresip не может обнаружить Bluetooth-подключение без разрешения «Устройства поблизости». + +код + Неверный код страны \'%1$s\' + Хостовая часть SIP URI + Выберите целевой URI + Пакеты + Средняя скорость: %1$s (кбит/с) + Анонимно + Неизвестно + baresip требуются разрешения: «Микрофон» для голосовых вызовов, «Устройства поблизости» для обнаружения Bluetooth-микрофона/динамика, «Уведомления» для отправки уведомлений. + Если выбраны контакты Android, они могут быть использованы в звонках и сообщениях как ссылки для SIP и tel URI. Приложение baresip не хранит контакты Android и никому их не передаёт. Чтобы контакты Android стали доступны в baresip, Google требует вашего согласия на их использование в соответствии с этим описанием и политикой конфиденциальности . + Код страны в формате E.164 для данной учетной записи. Если пользовательская часть URI инициатора входящего вызова или отправителя сообщения содержит телефонный номер, не начинающийся со знака \'+\', и контакт не найден, к номеру добавляется префикс с этим кодом страны и повторяется поиск контакта. Если номер телефона начинается с одной цифры \'0\', она удаляется перед добавления номеру префикса. + Семейство адресов + Изображение профиля + В учётной записи \'%1$s\' нет поставщика услуг телефонии + Обоснование разрешений + Аудиофокус запрещён! + Оба + Нет подключения к сети! + пользователь@домен или номер телефона + При отметке RTP- и RTCP-пакеты мультиплексируются на единственном порту (RFC 5761). + Хостовая часть SIP URI используется при звонках на телефонные номера. По умолчанию это домен учётной записи. Если не указана, эта учётная запись не сможет использоваться для телефонных вызовов. + Определяет, будут ли использоваться контакты baresip, контакты Android или и то, и другое. Если оба и контакт существует в обоих с одинаковым именем, используется контакт baresip. + Определяет, какие IP-адреса использует baresip. Если выбрано IPv4 или IPv6, baresip использует либо IPv4, либо IPv6 адреса. Если ничего не выбрано, baresip использует оба типа. + baresip+ требуются разрешения: «Микрофон» для голосовых вызовов, «Камера» для видезвонков, «Устройства поблизости» для обнаружения Bluetooth-микрофона/динамика и «Уведомления» для отправки уведомлений. + Поставщик услуг телефонии + При отметке этот контакт будет добавлен в контакты Android. + Вслепую + Вы не можете создавать резервные копии без разрешения доступа к хранилищу. + Вы не можете восстановить резервную копию без разрешения доступа к хранилищу. + Вы не можете использовать это приложение без разрешения «Уведомления». + Запись может быть включена или отключена только при отсутствии соединения + Задержка звука + Время (в миллисекундах) ожидания звука вызываемой стороны при установлении соединения. Установите большее значение, если звук собеседника теряется в начале звонка. + Некорректная Задержка звука \'%1$s\'. Допускаются значения от 100 до 3000. + Автоматически отклонённый вызов от %1$s + Автоматическая переадресация на \'%1$s\'\\ + Роль номеронабирателя недоступна + Предпочтительный + Определяет, будет ли переадресация вызова выполняться автоматически или будет запрошено подтверждение. + Согласны ли вы переадресовать вызов на \'%1$s\'? + Режим переадресации + Телефонное приложение по умолчанию + Запрос переадресации + Страна тонов + При отметке показывается поддержка надёжных предварительных ответов (RFC 3262). + Если отмечено, baresip является приложением по умолчанию. Не устанавливайте, если устройству может потребоваться обработка не только SIP-вызовов или сообщений. + Страна для определения тонов вызова, ожидания и занятости + Надёжные предварительные ответы + Для автоматического запуска требуется разрешение отображения поверх других приложений. + Кадровая частота + \ No newline at end of file diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml new file mode 100644 index 0000000..70ff0e0 --- /dev/null +++ b/app/src/main/res/values-sl/strings.xml @@ -0,0 +1,11 @@ + + + Uporabniško Ime + Napačno ime za prikaz %1$s + Ime (če je) uporabljen v polju From URI za odhodne akcije. + Moje Ime + Prikazano ime + Račun + O baresip+ + O baresip-u + \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml new file mode 100644 index 0000000..7fdf568 --- /dev/null +++ b/app/src/main/res/values-sv/strings.xml @@ -0,0 +1,315 @@ + + + OK + Vill du ta bort kontakten \'%1$s\'\? + Skicka meddelande + Vill du ringa eller skicka meddelande till \'%1$s\'\? + Kontakter + Ogiltig SIP-URI + Namn + Ny kontakt + Kontakt + Mörkt tema + Ogiltiga DNS-servrar + DNS-servrar + Starta automatiskt + Inställningar + Ta bort + Ogiltig chat-motpart-URI + Du + Idag + Lägg till kontakt + Vill du ta bort meddelandet\? + Nytt meddelande + Vill du ta bort samtalshistoriken för kontot \'%1$s\'\? + Aktivera + Inaktivera + Ta bort + Vill du ta bort \'%1$s\' %2$s från samtalshistoriken\? + Vill du lägga till \'%1$s\' to dina kontakter eller ta bort %2$s från samtalshistoriken\? + Vill du ringa eller skicka meddelande till \'%1$s\'\? + samtal + samtal + Ring + Samtalshistorik + Meddelande från + Missat samtal från + Inkommande samtal från + Avvisa + Svara + Vill du ta bort kontot \'%1$s\'\? + Kontot \'%1$s\' finns redan. + Ogiltig användare@domän[:port][;transport=udp|tcp|tls] \'%1$s\' + användare@domän + Nytt konto + Konton + Förvalt konto + SIP INFO-förfrågningar + Inuti RTP + Väljer hur DTMF-toner för 0-9, #, * och A-D skickas. + DTMF-läge + Föredra IPv6-media + Mediakryptering + Ogiltigt lösenord \'%1$s\' + Lösenord om STUN/TURN-servern kräver det + STUN/TURN-lösenord + Ogiltigt användarnamn \'%1$s\' + Användarnamn om STUN/TURN-servern kräver det + Ogiltig STUN/TURN-server-URI \'%1$s\' + STUN/TURN-server-URI + En STUN/TURN-server-URI på formatet schema:värd[:port][\?transport=udp|tcp], där schema är \'stun\', \'stuns\', \'turn\', eller \'turns\'. Förvald STUN-server för STUN- och ICE-protokollen är \'stun:stun.l.google.com:19302\' som är Googles publika STUN-server. Det finns ingen förvald TURN-server. + NAT-passering av media + Väljer protokoll för NAT-passering av media. Möjliga val är STUN (Session Traversal Utilities for NAT, RFC 5389) och ICE (Interactive Connectivity Establishment, RFC 5245). + Nej + Ja + Lösenord + Lägg till + Ta bort + Ändra + Skicka + Status + Fel + Hjälp + Säkerhetskopiera + Återställ + Om + Starta om + Avsluta + Ring till … + Samtal från … + Kopplar samtal till … + Ogiltig SIP-URI \'%1$s\' + Lägg på + Mikrofon på/av + Koppla samtal + Koppla till + Koppling misslyckades + Koppling + DTMF + Kodekar + Röstbrevlåda + Röstmeddelanden + ett nytt meddelande + Du har + nya meddelanden + ett gammalt meddelande + gamla meddelanden + och + Lyssna + Du har inga meddelanden + Meddelanden + Registrering av %1$s misslyckades. + Samtal misslyckades + Samtal avslutat + Detta samtal är INTE säkert! + Ta bort verifiering + Detta samtal är SÄKERT och motparten är VERIFIERAD! Vill du ta bort verifieringen av motparten\? + Detta samtal är SÄKERT, men motparten är INTE verifierad! + Visa lösenord + STUN/TURN-användarnamn + STUN/TURN-server + Lista över videokodekar i prioritetsordning. Dra för att ändra ordning, svep höger för att slå på eller av. + Videokodekar + Lista över ljudkodekar i prioritetsordning. Dra för att ändra ordning, svep höger för att slå på eller av. + Ljudkodekar + Kryssa i för att aktivera registrering och att REGISTER-förfrågningar skickas periodiskt enligt angett registreringsintervall. + Registrera + Ogiltig proxyserver-URI \'%1$s\' + SIP-URI för en proxyserver + SIP-URI för en annan proxyserver + SIP-URI för en eller två proxyservrar som måste användas när SIP-förfrågningar skickas. Om två anges skickas REGISTER-förfrågningar till båda och andra förfrågningar skickas till den som svarar. Om ingen utgående proxyserver anges skickas förfrågningar genom att DNS NAPTR/SRV/A-poster slås upp från värdnamnet i mottagarens URI. Om värdnamnet är en IPv6-adress måste det skrivas inom hakparenteser []. +\nExempel: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + Utgående proxyservrar + Ogiltigt lösenord för autentisering \'%1$s\' + Lösenord för autentisering, upp till 64 tecken. Om användarnamn för autentisering är ifyllt, men lösenordet lämnas tomt kommer baresip fråga om lösenord vid uppstart. + Lösenord för autentisering + Användarnamn som används om SIP-förfrågningar kräver autentisering. Förvalt värde är kontots användarnamn. + Användarnamn för autentisering + Ogiltigt användarnamn för autentisering \'%1$s\' + Ogiltigt visat namn \'%1$s\' + Namn som, om det anges, används i From-URI i utgående SIP-förfrågningar. + Ditt namn + Visat namn + Konto + Om baresip+ + Om baresip + <h1>SIP-klient baserad på baresip-biblioteket</h1> <p>Juha Heinanen <jh@tutpro.com></p> <p>Version %1$s</p> <h2>Användartips</h2> <ul> <li>Anpassa baresips inställningar efter dina behov (tryck på en inställnings titel för hjälp).</li> <li>Skapa sedan ett eller flera konton (igen, tryck på en inställnings titel för hjälp).</li> <li>Ett nytt konto kan delvis konfigureras automatiskt. Se <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>Wiki</a> för mer information.</li> <li>Registreringsstatus för ett konto visas med en färgad prick: grön (registrering lyckades), gul (registrering pågår), röd (registrering misslyckades), vit (registrering är inte aktiverad).</li> <li>Om du trycker på den färgade pricken tas du till kontots konfiguration.</li> <li>Om du sveper ner över skärmen registrerar det valda kontot om sig.</li> <li>Långt tryck på det valda kontot aktiverar eller inaktiverar registrering för kontot.</li> <li>Svepningar åt vänster/höger växlar mellan konton.</li> <li>Ikonen överst på startsidan slår på/av högtalartelefonfunktionen.</li> <li>Ikonerna längst ner på startsidan tar dig till röstbrevlådan (om URI för röstbrevlåda har angetts för kontot), dina kontakter, meddelanden, samtalshistorik och låter dig växla mellan numeriskt och alfanumeriskt tangentbord.</li> <li>Senast uppringda nummer kan fyllas i igen genom att trycka på ring upp-ikonen när inget nummer att ringa har angetts.</li> <li>Samtal- och meddelandemotparter kan läggas till i dina kontakter genom ett långt tryck på motparten.</li> <li>Långa tryck kan också användas för att ta bort samtal, chattar, meddelanden och kontakter.</li> <li>Genom tryck/långt tryck på en kontakts ikon kan en bild läggas till/tas bort för kontakten.</li> </ul> <h2>Källkod</h2> Källkoden finns tillgänglig på <a href=https://github.com/juha-h/baresip-studio>GitHub</a> där även fel och problem kan rapporteras. <h2>Licenser</h2> <ul> <li><b>BSD-3-Clause</b> förutom följande:</li> <li><b>Apache 2.0</b> AMR-kodek, TLS-säkerhet och ZRTP-mediakryptering</li> <li><b>LGPL 2.1</b> G.722- och G.726-kodekar</li> <li><b>GNU GPLv3</b> G.729-kodek</li> </ul> + Accepterar du att koppla det här samtalet till \'%1$s\'\? + Ljudmoduler + Baresip kunde inte starta. Det kan bero på ett ogiltigt värde för en inställning. Kontrollera Adress att lyssna på, TLS certifikat-fil och TLS CA-fil. Starta sedan om baresip. + Du har redan ett pågående samtal. + Knappsats + Nuvarande hastighet: %1$s (kbits/s) + Ingen information tillgänglig + Samtalsinformation + Längd: %1$d (sekunder) + Parkera/återuppta samtal + Acceptera att ta emot video från \'%1$s\'\? + Acceptera att skicka video till \'%1$s\'\? + Acceptera att skicka och ta emot video med \'%1$s\'\? + Videoförfrågan + Videosamtal + Avvisa + Avbryt + Kontakten \'%1$s\' finns redan. + Ogiltigt kontaktnamn \'%1$s\' + Du måste starta om baresip för att aktivera de nya inställningarna. Starta om nu\? + Kunde inte läsa filen \'ca_certs.crt\'. + Kunde inte läsa filen \'cert.pem\'. + Återställ + Är du säker på att du vill återställa alla inställningar till deras ursprungsvärden\? + Kryssa i för att återställa alla inställningar till deras ursprungsvärden. + Återställ grundinställningarna + Framtvinga mörkt skärmtema + Ogiltig Opus-bitrate + Förväntat Opus-pakettapp + Opus-bitrate + Akustisk ekoutsläckning + Kunde inte ladda modul. + Ljudkodekar som tillhandahålls av de förkryssade modulerna är tillgängliga för konton. + TLS CA-fil + Verifiera servercertifikat + Chatta med %1$s + Chattmeddelanden + Begäran att koppla samtalet till + Kunde inte skapa ett nytt konto. + Kryssa i för att välja detta konto när baresip startar. + Ogiltig URI till röstbrevlåda \'%1$s\' + SIP-URI för att kontrollera röstmeddelanden. Om fältet lämnas tomt kommer röstmeddelanden (Message Waiting Indications) inte kontrolleras. + URI till röstbrevlåda + Automatiskt + Manuellt + Anger hur inkommande samtal besvaras. + Metod att svara + Väljer eventuellt krypteringsprotokoll för media. +\n • ZRTP (rekommenderad) innebär att ändpunktskryptering via ZRTP försöker förhandlas fram efter att samtalet kopplats upp. +\n • DTLS-SRTPF innebär att UDP/TLS/RTP/SAVPF erbjuds i utgående samtal och att RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP eller UDP/TLS/RTP/SAVPF används om det erbjuds i inkommande samtal. +\n • SRTP-MANDF innebär att RTP/SAVPF erbjuds i utgående samtal och är ett krav för inkommande samtal. +\n • SRTP-MAND innebär att RTP/SAVP erbjuds i utgående samtal och är ett krav för inkommande samtal. +\n • SRTP innebär att RTP/AVP erbjuds i utgående samtal och att RTP/SAVP eller RTP/SAVPF används om de erbjuds i inkommande samtal. + TLS-certifikatfil + Kunde inte ställa in DNS-servrar + Kommaseparerad lista med adresser på DNS-servrar. Om listan lämnas tom hämtas DNS-serveradresser automatiskt från systemet. Varje DNS-adress skrivs på formatet \'ip:port\' eller \'ip\'. Om port utelämnas används port 53. Om ip är en IPv6-adress och en port anges då måste ip skrivas inom hakparenteser []. Som exempel, i listan \'8.8.8.8:53,[2001:4860:4860::8888]:53\' anges IPv4- och IPv6-adresser för Googles publika DNS-servrar. + Ogiltig adress att lyssna på + IP-adress och port på formatet \'adress:port\' där baresip lyssnar efter inkommande SIP-förfrågningar. Om IP-adressen är en IPv6-adress måste den skrivas inom hakparenteser []. IPv4-adressen 0.0.0.0 eller IPv6-adressen [::] betyder att baresip lyssnar på alla tillgängliga adresser. Om fältet lämnas tomt (grundinställning) lyssnar baresip på port 5060 på alla tillgängliga adresser. + Adress att lyssna på + Kryssa i för att starta baresip automatiskt när enheten startat. + Vill du ta bort chatt-historiken för kontot \'%1$s\'\? + Vill du ta bort chatten med \'%1$s\'\? + Vill du ta bort chatten med motparten \'%1$s\' eller lägga till motparten till dina kontakter\? + Ny chat-motpart + Chat-historik + Misslyckades + Kunde inte skicka meddelande + Vill du ta bort meddelandet eller lägga till motparten \'%1$s\' till dina kontakter\? + Lösenord för avkryptering + Lösenord för kryptering + När ett nytt konto skapas är det möjligt, men inte nödvändigt, att ange port och transportprotokoll för kontot: <användare>@<domän>[:<port>][;transport=udp|tcp|tls]. Om <port> anges men transportprotokoll utelämnas kommer UDP användas som transportprotokoll. Om <port> utelämnas, men transportprotokoll anges används port 5060 eller 5061 (TLS). Om ingendera anges och ingen utgående proxy är angiven kommer registreringsserver för kontot bestämmas enbart baserat på domänens DNS-information. + <h1>SIP-klient med videostöd baserad på baresip-biblioteket</h1> <p>Juha Heinanen &lt;jh@tutpro.com&gt;</p> <p>Version %1$s</p> <h2>Användartips</h2> <ul> <li>Anpassa baresip+:s inställningar efter dina behov (tryck på en inställnings titel för hjälp).</li> <li>Skapa sedan ett eller flera konton (igen, tryck på en inställnings titel för hjälp).</li> <li>Ett nytt konto kan delvis konfigureras automatiskt. Se <a href=https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration>Wiki</a> för mer information.</li> <li>Registreringsstatus för ett konto visas med en färgad prick: grön (registrering lyckades), gul (registrering pågår), röd (registrering misslyckades), vit (registrering är inte aktiverad).</li> <li>Om du trycker på den färgade pricken tas du till kontots konfiguration.</li> <li>Om du sveper ner över skärmen registrerar det valda kontot om sig.</li> <li>Långt tryck på det valda kontot aktiverar eller inaktiverar registrering för kontot.</li> <li>Svepningar åt vänster/höger växlar mellan konton.</li> <li>Ikonen överst på startsidan slår på/av högtalartelefonfunktionen.</li> <li>Ikonerna längst ner på startsidan tar dig till röstbrevlådan (om URI för röstbrevlåda har angetts för kontot), dina kontakter, meddelanden, samtalshistorik och låter dig växla mellan numeriskt och alfanumeriskt tangentbord.</li> <li>Senast uppringda nummer kan fyllas i igen genom att trycka på ring upp-ikonen när inget nummer att ringa har angetts.</li> <li>Samtal- och meddelandemotparter kan läggas till i dina kontakter genom ett långt tryck på motparten.</li> <li>Långa tryck kan också användas för att ta bort samtal, chattar, meddelanden och kontakter.</li> <li>Genom tryck/långt tryck på en kontakts ikon kan en bild läggas till/tas bort för kontakten.</li> </ul> <h2>Kända problem</h2> <ul><li>Under videosamtal måste enheten och skärmen hållas i liggande läge; roterad 90 grader åt vänster från stående läge.</li> <li>Du ser inte din egen video korrekt om du skickar video medan motparten inte skickar video.</li> <h2>Integritetspolicy</h2> Integritetspolicy finns tillgänglig <a href=https://raw.githubusercontent.com/juha-h/baresip-studio/video/PrivacyPolicy.txt>här</a>.</ul> <h2>Källkod</h2> Källkoden finns tillgänglig på <a href=https://github.com/juha-h/baresip-studio>GitHub</a> där även fel och problem kan rapporteras. <h2>Licenser</h2> <ul> <li><b>BSD-3-Clause</b> förutom följande:</li> <li><b>Apache 2.0</b> AMR-kodek och TLS-kryptering</li> <li><b>LGPL 2.1</b> G.722- och G.726-kodekar</li> <li><b>AGPLv4</b> ZRTP mediakryptering</li> <li><b>GNU GPLv2</b> H.264- och H.265-kodekar</li> <li><b>GNU GPLv3</b> G.729-kodek</li><li><b>AOMedia</b> AV1-kodek</li> </ul> + Förvald samtalsvolym + Ogiltig procentuell paketförlust för Opus + Förväntad procentuell paketförlust för Opus-ljudström. Giltiga värden mellan 0-100. Förvalt värde är 0, vilket stänger av föregripande felkorrigering. + Genomsnittlig maximal bitrate för Opus-ljudström. Giltiga värden är 6000-510000. Förvalt värde är 28000. + Omstartsbegäran + Verifikationsbegäran + Vill du verifiera SAS <%1$s>\? + Kopplingsbegäran + Kryssa i för att använda en förvald ljudvolym, 1–10, vid samtal. + Acceptera + Utökat filter vid ekoutsläckning + Kryssa i för att lägga till kontakten till dina Android-kontakter. + Kryssa i för att inkludera SIP-meddelanden i Logcat-meddelanden när Felsökning är aktiverat. Funktionen inaktiveras automatiskt när baresip startar. + Kryssa i för att skicka felsöknings- och info-meddelanden till Logcat. + Kryssa i för att använda ett utökat filter vid ekoutsläckning. + Kryssa i för att aktivera ekoutsläckning för samtalsljud. + Kryssa i för att ladda TLS-certifikat för certifikatauktoriteter från fil. I Android 9 och tidigare versioner laddas en fil med namnet \'ca_certs.crt\' från katalogen Nedladdningar. + Kryssa i om baresip ska verifiera TLS-certifikat för SIP user agent och SIP proxyserver när transportprotokollet TLS används. TLS CA-fil måste då också laddas. + Kryssa i för att ladda TLS-certifikat och privat nyckel för den här baresip-instansen från fil. I Android 9 och tidigare versioner laddas en fil med namnet \'cert.pem\' från katalogen Nedladdningar. Av säkerhetsskäl tas filen bort efter att den lästs in. + Kryssa i för att erbjuda media via IPv6 (om tillgängligt) när mediaprotokoll för motparten inte kan avgöras automatiskt. + Bekräftelse + Användar-ID + Notis + Info + Varning + Maximalt antal kontakter %1$d har överskridits. + SIP-trafik + Felsökning + Storlek på bildrutorna i skickad video (bredd x höjd) + Storlek på bildrutor + Du har ingen videokamera som stöds. + Aktivera behörigheten \"Kamera\" för att ringa eller ta emot samtal. + baresip behöver behörigheten \"Mikrofon\" för röstsamtal. + Kunde inte återställa programdata. Kontrollera att du angav rätt lösenord och att backup-filen skapats av den här appen. I Android 9 och tidigare versioner, kontrollera Appar → baresip → Behörigheter → Lagring och att filen \'%1$s\' finns i katalogen Nedladdningar. + Programdata återställd. baresip behöver startas om. Starta om nu\? + Kunde inte säkerhetskopiera programdata till filen \'%1$s\'. Kontrollera Appar → baresip → Behörigheter → Lagring. + Programdata har säkerhetskopierats till filen \'%1$s\'. I Android 9 och tidigare versioner återfinns filen i katalogen Nedladdningar. + Motpart + Inget nätverk tillgängligt! + Missade samtal + %1$d missade samtal + Batterioptimering + Profilbild + Det går inte att skapa en backup utan behörigheten \"Lagring\". + Det går inte att återställa en backup utan behörigheten \"Lagring\". + Inaktivera batterioptimering (rekommenderas) om du vill minska risken att Android begränsar baresips åtkomst till nätverk eller inaktiverar baresip för att spara ström. + Ljudinställningar + Jitter: %1$s (ms) + Samtalet är parkerat + Medelhastighet: %1$s (kbits/s) + Paket + Samtalsdetaljer + Tid + Värdnamn att använda i SIP-URI:er vid samtal till telefonnummer. Förvalt är att använda kontots domän. Om fältet lämnas tomt kan inte detta konto användas för att ringa telefonnummer. + Motpart + Telefonileverantör + Ogiltigt värdnamn i SIP-URI \'%1$s\' + SIP-URI:s värdnamn + Riktning + Längd + SIP- eller tel-URI + användare@domän eller telefonnummer + Tappade + Ogiltig SIP- eller tel-URI \'%1$s\' + Välj om baresips kontakter, Androids kontakter eller båda ska användas. Om du väljer båda och en kontakt med samma namn finns i båda, då används baresips kontakt. + Båda + Det går inte att komma åt Androids kontakter utan behörigheten \"Kontakter\". + Landsnummer + +nummer + Ogiltigt landsnummer \'%1$s\' + Det här kontots landsnummer, enligt E.164. Om telefonnumret i From-URI för ett inkommande samtal, eller meddelande, inte börjar med en \'+\'-symbol och en matchande kontakt inte kan hittas, då läggs landsnumret till telefonnumret och en kontaktsökning görs igen. Om telefonnumret börjar med siffran \'0\' tas denna siffra bort innan landsnumret läggs till. + Anonym + Okänd + Begäran om medgivande + Omdirigerad av… + Vägledd + Blind + Om Androids kontakter används då kan de användas som SIP- eller tel-URI-referenser för samtal och för att skicka meddelanden. baresip sparar inte Androids kontakter och delar dem inte heller med någon. För att Androids kontakter ska bli tillgängliga i baresip kräver Google att du accepterar användningen som beskrivs här och i appens integritetspolicy. + Kontots namn + Kryssa i för att låta RTP- och RTCP-paket använda samma port (RFC 5761). + Ändra ordning + RTCP-multiplex + Det går inte att använda den här appen utan behörigheten \"Aviseringar\". + Namn (valfritt) som används för att identifiera det här kontot i baresip-appen. + Namn + Ogiltigt kontonamn \'%1$s\' + Namnet \'%1$s\' används redan + Ljudfokus nekad! + Registreringsintervall + Ogiltigt registreringsintervall \'%1$s\' + Kontot \'%1$s\' har ingen telefonileverantör + Väljer vilken eller vilka IP-adress baresip använder. Om IPv4 eller IPv6 väljs använder baresip enbart vald adresstyp. Om ingen adresstyp väljs använder baresip både IPv4- och IPv6-adresser. + Adresstyp + Inspelning kan bara slås på/av när inget samtal pågår + Välj destinations-URI + baresip behöver behörigheten \"Mikrofon\" för röstsamtal, behörigheten \"Enheter i närheten\" för upptäckt av mikrofon/högtalare via blåtand och behörigheten \"Aviseringar\" för att skicka aviseringar. + Fördröjt ljud + Ogiltigt värde för fördröjt ljud \'%1$s\'. Giltiga värden är från 100 till 3000. + baresip kan inte upptäcka blåtandsanslutningar utan behörigheten \"Enheter i närheten\". + Behörigheters motivering + Avgör hur ofta (i sekunder) baresip skickar REGISTER-förfrågningar. Giltiga värden är från 60 till 3600. + Tid (i millisekunder) att vänta på ljud från motparten när ett samtal upprättats. Sätt till ett högre värde om du saknar ljud från motparten i början av samtalet. + baresip+ behöver behörigheten \"Mikrofon\" för röstsamtal, behörigheten \"Kamera\" för videosamtal, behörigheten \"Enheter i närheten\" för upptäckt av mikrofon/högtalare via blåtand och behörigheten \"Aviseringar\" för att skicka aviseringar. + \ No newline at end of file diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml new file mode 100644 index 0000000..4ece7c1 --- /dev/null +++ b/app/src/main/res/values-ta/strings.xml @@ -0,0 +1,334 @@ + + + பரேசிப் பற்றி + Paresip+ பற்றி + கணக்கு + கணக்கு புனைப்பெயர் + இந்த கணக்கை PARESIP பயன்பாட்டில் அடையாளம் காண புனைப்பெயர் (ஏதேனும் இருந்தால்) பயன்படுத்தப்படுகிறது. + தவறான அங்கீகார கடவுச்சொல் \'%1$s\' + வெளிச்செல்லும் ப்ராக்சிகள் + பதிலாள் சேவையகத்தின் SIP யூரி + மற்றொரு பதிலாள் சேவையகத்தின் யூரி + பதிவு செய்யுங்கள் + ஐபிவி 6 மீடியாவை விரும்புங்கள் + சரிபார்க்கப்பட்டால், பியரின் மீடியா நெறிமுறையை தானாகவே தீர்மானிக்க முடியாதபோது ஐபிவி 6 மீடியா நெறிமுறையை (கிடைத்தால்) பயன்படுத்த சலுகை. + முன்னுரிமை வரிசையில் ஆடியோ கோடெக்குகளின் பட்டியல். மறுதொடக்கம் செய்ய இழுக்கவும், இயக்க அல்லது முடக்க வலதுபுறம் ச்வைப் செய்யவும். + வீடியோ கோடெக்குகள் + முன்னுரிமை வரிசையில் வீடியோ கோடெக்குகளின் பட்டியல். மறுதொடக்கம் செய்ய இழுக்கவும், இயக்க அல்லது முடக்க வலதுபுறம் ச்வைப் செய்யவும். + தானியங்கி தொடக்க தேவைகள் சிறந்த அனுமதியில் தோன்றும். + பேட்டரி மேம்படுத்தல்கள் + பேட்டரி மேம்படுத்தல்களை முடக்கு (பரிந்துரைக்கப்படுகிறது) ஆண்ட்ராய்டு ப்ரெசிப்பின் நெட்வொர்க்கிற்கான அணுகலை கட்டுப்படுத்தும் அல்லது காத்திருப்பு நிலைக்கு பெரெசிப்பில் நுழைகிறது என்ற வாய்ப்பைக் குறைக்க விரும்பினால். + இயல்புநிலை தொலைபேசி பயன்பாடு + டயலர் பங்கு கிடைக்கவில்லை + சரிபார்க்கப்பட்டால், PARESIP இயல்புநிலை தொலைபேசி பயன்பாடாகும். SIP அழைப்புகள் அல்லது செய்திகளைத் தவிர உங்கள் சாதனம் கையாள வேண்டுமா என்று சரிபார்க்க வேண்டாம். + முகவரியைக் கேளுங்கள் + தவறான கேளுங்கள் முகவரி + முகவரி குடும்பம் + மைக்ரோஃபோன் ஆதாயம் + தவறான ஓபச் பிட்ரேட் + தவறான ஓபச் பாக்கெட் இழப்பு விழுக்காடு + ஒரு நொடிக்கு தவறான பிரேம்கள் \'%1$d\' + பயனர் முகவர் + ஏற்றுக்கொள் + மறுக்கவும் + பயனர் ஐடி + கடவுச்சொல் + கூட்டு + நீக்கு + தொகு + அனுப்பு + நிலை + பிழை + கோரிக்கையை மறுதொடக்கம் செய்யுங்கள் + தவறான அங்கீகார பயனர்பெயர் \'%1$s\' + புனைப்பெயர் + தவறான கணக்கு புனைப்பெயர் \'%1$s\' + \'%1$s\' என்ற புனைப்பெயர் ஏற்கனவே உள்ளது + காட்சி பெயர் + உங்கள் பெயர் + வெளிச்செல்லும் கோரிக்கைகளின் யூரி இலிருந்து பெயர் (ஏதேனும் இருந்தால்) பயன்படுத்தப்படுகிறது. + தவறான காட்சி பெயர் \'%1$s\' + அங்கீகார பயனர்பெயர் + அங்கீகார பயனர்பெயர் SIP கோரிக்கைகளின் ஏற்பு தேவைப்பட்டால். இயல்புநிலை மதிப்பு கணக்கின் பயனர்பெயர். + அங்கீகார கடவுச்சொல் + 64 எழுத்துக்கள் வரை அங்கீகார கடவுச்சொல். அங்கீகார பயனர்பெயர் வழங்கப்பட்டால், ஆனால் கடவுச்சொல் வழங்கப்படவில்லை என்றால், பெரெசிப் எப்போது தொடங்கப்படுகிறது என்று கேட்கப்படும். + ச்டன்/டர்ன் சேவையகம் + படிவத் திட்டத்தின் ச்டன்/டர்ன் சர்வர் யூரி: புரவலன் [: போர்ட்] [? போக்குவரத்து = யுடிபி | டி.சி.பி], அங்கு திட்டம் \'ச்டன்\', \'ச்டன்ச்\', \'டர்ன்\' அல்லது \'திருப்பங்கள்\'. ச்டன் மற்றும் பனி நெறிமுறைகளுக்கான தொழிற்சாலை இயல்புநிலை ச்டன் சேவையகம் \'ச்டன்: stun.l.google.com: 19302\' பொது கூகிள் ச்டன் சேவையகத்தை சுட்டிக்காட்டுகிறது. தொழிற்சாலை இயல்புநிலை திருப்ப சேவையகம் இல்லை. + கோரிக்கைகளை அனுப்பும்போது பயன்படுத்தப்பட வேண்டிய ஒன்று அல்லது இரண்டு ப்ராக்சிகளின் சிப் யூரி. இரண்டு வழங்கப்பட்டால், பதிவு கோரிக்கைகள் இரண்டிற்கும் அனுப்பப்படும் மற்றும் பிற கோரிக்கைகள் பதிலளிக்கும் ஒன்றுக்கு அனுப்பப்படும். வெளிச்செல்லும் பதிலாள் எதுவும் வழங்கப்படாவிட்டால், டி.என்.எச் நாப்டிஆர்/எச்.ஆர்.வி/காலீ யூரி ஓச்ட்பார்ட்டின் பதிவு தேடல் ஆகியவற்றின் அடிப்படையில் கோரிக்கைகள் அனுப்பப்படுகின்றன. SIP யூரி இன் ஓச்ட்பார்ட் ஒரு IPv6 முகவரி என்றால், முகவரி அடைப்புக்குறிக்குள் எழுதப்பட வேண்டும் [].\n எடுத்துக்காட்டுகள்:\n • SIP: எடுத்துக்காட்டு.காம்: 5061; போக்குவரத்து = TLS\n • சிப்: [2001: 67 சி: 223: 777 :: 10]; போக்குவரத்து = டி.சி.பி.\n • SIP: 192.168.43.50: 443; போக்குவரத்து = WSS + தவறான பதிலாள் சர்வர் யூரி \'%1$s\' + சரிபார்க்கப்பட்டால், பதிவு இயக்கப்பட்டால் மற்றும் பதிவு வேண்டுகோள்களால் குறிப்பிடப்பட்ட இடைவெளியில் பதிவு கோரிக்கைகள் அனுப்பப்படுகின்றன. + பதிவு இடைவெளி + எவ்வளவு அடிக்கடி (நொடிகளில்) பரேசிப் பதிவு கோரிக்கைகளை அனுப்புகிறார் என்று சொல்கிறது. செல்லுபடியாகும் மதிப்புகள் 60 முதல் 3600 வரை. + தவறான பதிவு இடைவெளி \'%1$s\' + மீடியா நாட் டிராவர்சல் + மீடியா நாட் டிராவர்சல் நெறிமுறையைத் தேர்ந்தெடுக்கிறது (ஏதேனும் இருந்தால்). சாத்தியமான தேர்வுகள் ச்டன் (NAT, RFC 5389 க்கான அமர்வு பயண பயன்பாடுகள்) மற்றும் ICE (ஊடாடும் இணைப்பு நிறுவனம், RFC 5245). + STUN/TURN சேவையகம் யூரி + தவறான ச்டன்/டர்ன் சர்வர் யூரி \'%1$s\' \' + ச்டன்/டர்ன் பயனர்பெயர் + ச்டன்/டர்ன் சேவையகத்தால் தேவைப்பட்டால் பயனர்பெயர் + தவறான பயனர்பெயர் \'%1$s\' + கடவுச்சொல்லை ச்டன்/திருப்புங்கள் + கடவுச்சொல் ச்டன்/டர்ன் சேவையகம் தேவைப்பட்டால் + தவறான கடவுச்சொல் \'%1$s\' + ஊடக குறியாக்கம் + மீடியா போக்குவரத்து குறியாக்க நெறிமுறையைத் தேர்ந்தெடுக்கிறது (ஏதேனும் இருந்தால்).\n • ZRTP (பரிந்துரைக்கப்படுகிறது) என்பது அழைப்பு நிறுவப்பட்ட பின்னர் ZRTP இறுதி முதல் இறுதி ஊடக குறியாக்க பேச்சுவார்த்தை முயற்சிக்கப்படுகிறது.\n • டி.டி.எல்.எச்-எச்.ஆர்.டி.பி.எஃப் என்பது வெளிச்செல்லும் அழைப்பில் யுடிபி/டி.எல்.எச்/ஆர்.டி.பி/எச்.ஏ.வி.பி.எஃப் வழங்கப்படுகிறது, மேலும் RTP/SAVP, RTP/SAVPF, UDP/TLS/RTP/SAVP, அல்லது UDP/TLS/RTP/SAVPF ஆகியவை உள்நுழைவுக்கு வழங்கப்பட்டால் பயன்படுத்தப்பட்டால் பயன்படுத்தப்படுகின்றன அழைப்பு.\n • SRTP-MANDF என்றால், RTP/SAVPF வெளிச்செல்லும் அழைப்பில் வழங்கப்படுகிறது மற்றும் உள்வரும் அழைப்பில் தேவைப்படுகிறது.\n • SRTP-MAND என்பது RTP/SAVP வெளிச்செல்லும் அழைப்பில் வழங்கப்படுகிறது மற்றும் உள்வரும் அழைப்பில் தேவைப்படுகிறது.\n • SRTP என்றால், வெளிச்செல்லும் அழைப்பில் RTP/AVP வழங்கப்படுகிறது மற்றும் உள்வரும் அழைப்பில் வழங்கப்பட்டால் RTP/SAVP அல்லது RTP/SAVPF பயன்படுத்தப்படுகிறது. + RTCP மல்டிபிளெக்சிங் + சரிபார்க்கப்பட்டால், RTP மற்றும் RTCP பாக்கெட்டுகள் ஒரு துறைமுகத்தில் (RFC 5761) மல்டிபிளெக்ச் செய்யப்படுகின்றன. + நம்பகமான தற்காலிக பதில்கள் + சரிபார்க்கப்பட்டால், நம்பகமான தற்காலிக பதில்களுக்கான ஆதரவைக் குறிக்கவும் (RFC 3262). + டிடிஎம்எஃப் பயன்முறை + டி.டி.எம்.எஃப் டோன்கள் 0–9, #, *மற்றும் ஏ-டி எவ்வாறு அனுப்பப்படுகின்றன என்பதைத் தேர்ந்தெடுக்கிறது. + இன்-பேண்ட் ஆர்டிபி நிகழ்வுகள் + SIP செய்தி கோரிக்கைகள் + இன்-பேண்ட் ஆர்டிபி அல்லது எச்ஐபி செய்தி + பதில் பயன்முறை + உள்வரும் அழைப்புகளுக்கு எவ்வாறு பதிலளிக்கப்படுகிறது என்பதைத் தேர்ந்தெடுக்கிறது. + திருப்பி பயன்முறை + அழைப்பு திருப்பி கோரிக்கை தானாகவே பின்பற்றப்பட்டால் அல்லது உறுதிப்படுத்தல் கோரப்பட்டால் தேர்ந்தெடுக்கிறது. + கையேடு + தானியங்கி + குரல் அஞ்சல் யூரி + குரல் அஞ்சல் செய்திகளைச் சரிபார்க்க யூரி ஐ சிப் செய்யுங்கள். காலியாக இருந்தால், குரல் அஞ்சல் செய்திகள் (செய்தி காத்திருப்பு அறிகுறிகள்) சந்தா செலுத்தப்படவில்லை. + தவறான குரல் அஞ்சல் யூரி \'%1$s\' + நாட்டின் குறியீடு + E.164 இந்த கணக்கின் நாடு குறியீடு. உள்வரும் அழைப்பு அல்லது செய்தியின் யூரி USERPART இலிருந்து \'+\' அடையாளத்துடன் தொடங்காத ஒரு தொலைபேசி எண்ணைக் கொண்டிருந்தால், தொடர்பு தேடல் தோல்வியுற்றால், இந்த நாட்டின் குறியீட்டில் எண் முன்னொட்டு மற்றும் தொடர்பு தேடல் மீண்டும் முயற்சிக்கப்படுகிறது. தொலைபேசி எண் \'0\' ஒற்றை இலக்கத்துடன் தொடங்கினால், எண் முன்னொட்டப்படுவதற்கு முன்பு \'0\' இலக்கத்தை அகற்றும். + +குறியீடு + தவறான நாட்டு குறியீடு \'%1$s\' + தொலைபேசி வழங்குநர் + தொலைபேசி எண்களுக்கான அழைப்புகளில் பயன்படுத்தப்படும் SIP யூரி புரவலன் பகுதி. தொழிற்சாலை இயல்புநிலை என்பது கணக்கின் களமாகும். வழங்கப்படாவிட்டால், தொலைபேசி எண்களை அழைக்க இந்த கணக்கைப் பயன்படுத்த முடியாது. + சிப் யூரி புரவலன் பகுதி + தவறான SIP யூரி புரவலன் பகுதி \'%1$s\' + இயல்புநிலை கணக்கு + சரிபார்க்கப்பட்டால், பரெசிப் தொடங்கும்போது இந்த கணக்கு தேர்ந்தெடுக்கப்படுகிறது. + கணக்குகள் + புதிய கணக்கு + ஒரு புதிய கணக்கு உருவாக்கப்படும்போது, கணக்கின் துறைமுகம் எண் மற்றும் போக்குவரத்து நெறிமுறை விருப்பமாக கொடுக்கப்படலாம்: <பயனர்>@<டொமைன்> [: <port>] [; போக்குவரத்து = யுடிபி | டி.சி.பி | டி.எல்.எச்]. <Port> வழங்கப்பட்டு போக்குவரத்து நெறிமுறை வழங்கப்படாவிட்டால், போக்குவரத்து நெறிமுறை இயல்புநிலையாக UDP க்கு. <port> வழங்கப்படாவிட்டால் மற்றும் போக்குவரத்து நெறிமுறை வழங்கப்பட்டால், <PORT> இயல்புநிலை 5060 அல்லது 5061 (TLS) க்கு. எதுவும் வழங்கப்படவில்லை மற்றும் வெளிச்செல்லும் பதிலாள் குறிப்பிடப்படவில்லை என்றால், கணக்கின் பதிவாளர் (ஏதேனும் இருந்தால்) டொமைனின் டிஎன்எச் தகவல்களை மட்டுமே அடிப்படையாகக் கொண்டது. + பயனர்@டொமைன் + தவறான பயனர்@டொமைன் [: போர்ட்] [; போக்குவரத்து = யுடிபி | டி.சி.பி | டி.எல்.எச்] \'%1$s\' \' + கணக்கு \'%1$s\' ஏற்கனவே உள்ளது. + புதிய கணக்கை ஒதுக்கத் தவறிவிட்டது. + கடவுச்சொல்லை குறியாக்கவும் + கடவுச்சொல்லை டிக்ரிப்ட் செய்யுங்கள் + \'%1$s\' கணக்கை நீக்க விரும்புகிறீர்களா? + பதில் + நிராகரிக்கவும் + இருந்து உள்வரும் அழைப்பு + இருந்து தவறவிட்ட அழைப்பு + தவறவிட்ட அழைப்புகள் + %1$d தவறவிட்ட அழைப்புகள் + அழைப்பு பரிமாற்ற கோரிக்கை + இருந்து செய்தி + %1$s இலிருந்து தானாக நிராகரிக்கப்பட்ட அழைப்பு + வரலாற்றை அழைக்கவும் + அழைப்பு விவரங்கள் + அழைப்பு + அழைப்புகள் + அழைப்பு + ஒப்பி + திசை + நேரம் + காலம் + அழைப்பு வரலாற்றிலிருந்து \' %1$s\' %2$s ஐ நீக்க விரும்புகிறீர்களா? + நீக்கு + முடக்கு + இயக்கு + \'%1$s\' க்கு அழைக்க அல்லது செய்தியை அனுப்ப விரும்புகிறீர்களா? + கணக்கின் அழைப்பு வரலாற்றை \'%1$s\' ஐ நீக்க விரும்புகிறீர்களா? + அரட்டை செய்திகள் + %1$s உடன் அரட்டையடிக்கவும் + புதிய செய்தி + செய்திகளை நீக்க விரும்புகிறீர்களா அல்லது தொடர்புகளில் \'%1$s\' ஐ சேர்க்க விரும்புகிறீர்களா? + செய்தியை நீக்க விரும்புகிறீர்களா? + தொடர்பைச் சேர்க்கவும் + செய்தியை அனுப்புவது தோல்வியடைந்தது + தோல்வியுற்றது + அரட்டை வரலாறு + இன்று + நீங்கள் + புதிய அரட்டை பியர் + தவறான அரட்டை பியர் யூரி + பியர் \'%1$s\' உடன் அரட்டையை நீக்க விரும்புகிறீர்களா அல்லது தொடர்புகளுக்கு சகாக்களைச் சேர்க்க விரும்புகிறீர்களா? + \'%1$s\' உடன் அரட்டையை நீக்க விரும்புகிறீர்களா? + நீக்கு + கணக்கின் அரட்டை வரலாற்றை \'%1$s\' ஐ நீக்க விரும்புகிறீர்களா? + ஆடியோ கோடெக்குகள் + மறுவரிசை + அமைப்புகள் + தானாகத் தொடங்குங்கள் + சரிபார்க்கப்பட்டால், சாதனம் (மறு) தொடங்கிய பின் PARESIP தானாகத் தொடங்குகிறது. + மீட்டெடு + ஐபி முகவரி மற்றும் படிவத்தின் துறை \'முகவரி: துறைமுகம்\' உள்வரும் எச்ஐபி கோரிக்கைகளுக்கு பெரெசிப் கேட்கிறது. ஐபி முகவரி ஒரு ஐபிவி 6 முகவரி என்றால், அது அடைப்புக்குறிக்குள் எழுதப்பட வேண்டும் []. ஐபிவி 4 முகவரி 0.0.0.0 அல்லது ஐபிவி 6 முகவரி [::] கிடைக்கக்கூடிய எல்லா முகவரிகளிலும் பரேசிப் கேட்க வைக்கிறது. காலியாக இருந்தால் (தொழிற்சாலை இயல்புநிலை), கிடைக்கக்கூடிய அனைத்து முகவரிகளிலும் துறைமுகம் 5060 இல் பரெசிப் கேட்கிறது. + பரேசிப் எந்த ஐபி முகவரிகளைப் பயன்படுத்துகிறது என்பதைத் தேர்வுசெய்கிறது. IPv4 அல்லது IPv6 தேர்ந்தெடுக்கப்பட்டால், PARESIP IPv4 அல்லது IPv6 முகவரிகளை மட்டுமே பயன்படுத்துகிறது. இரண்டுமே தேர்வு செய்யப்படாவிட்டால், பரெசிப் ஐபிவி 4 மற்றும் ஐபிவி 6 முகவரிகளைப் பயன்படுத்துகிறது. + டிஎன்எச் சேவையகங்கள் + கமா டிஎன்எச் சேவையகங்களின் முகவரிகளின் பட்டியல். வழங்கப்படாவிட்டால், டிஎன்எச் சேவையக முகவரிகள் கணினியிலிருந்து மாறும் வகையில் பெறப்படுகின்றன. ஒவ்வொரு டிஎன்எச் முகவரியும் \'ஐபி: துறைமுகம்\' அல்லது \'ஐபி\' வடிவத்தில் இருக்கும். துறைமுகம் தவிர்க்கப்பட்டால், அது இயல்புநிலையாக 53 ஆக இருக்கும். ஐபி ஒரு ஐபிவி 6 முகவரி மற்றும் துறைமுகம் வழங்கப்பட்டால், ஐபி அடைப்புக்குறிக்குள் எழுதப்பட வேண்டும் []. உதாரணமாக, பட்டியல் \'8.8.8.8:53, LEISER2001:4860:4860:8888]: :53\' ஐ ஐபிவி 4 மற்றும் பொது கூகிள் டிஎன்எச் சேவையகங்களின் ஐபிவி 6 முகவரிகளுக்கு புள்ளிகள். + தவறான டிஎன்எச் சேவையகங்கள் + டிஎன்எச் சேவையகங்களை அமைப்பதில் தோல்வி + டி.எல்.எச் சான்றிதழ் கோப்பு + சரிபார்க்கப்பட்டால், TLS சான்றிதழ் கொண்ட ஒரு கோப்பு மற்றும் இந்த PARESIP நிகழ்வின் தனிப்பட்ட விசை ஆகியவை ஏற்றப்பட்டுள்ளன அல்லது ஏற்றப்படும். ஆண்ட்ராய்டு பதிப்பு 9 இல், \'cert.pem\' எனப்படும் கோப்பு பதிவிறக்க கோப்புறையிலிருந்து ஏற்றப்படுகிறது. பாதுகாப்பு காரணங்களுக்காக, ஏற்றப்பட்ட பிறகு கோப்பை நீக்கவும். + சேவையக சான்றிதழ்களை சரிபார்க்கவும் + சரிபார்க்கப்பட்டால், டி.எல்.எச் போக்குவரத்து பயன்படுத்தப்படும்போது எச்ஐபி பயனர் முகவர் மற்றும் எச்ஐபி பதிலாள் சேவையகங்களின் டிஎல்எச் சான்றிதழ்களை பாரெசிப் சரிபார்க்கிறது. + TLS CA கோப்பு + ஆடியோ அமைப்புகள் + சரிபார்க்கப்பட்டால், ஆண்ட்ராய்டு OS இல் சேர்க்கப்படாத அத்தகைய சான்றிதழ் அதிகாரிகளின் TLS சான்றிதழ்களைக் கொண்ட ஒரு கோப்பு அல்லது ஏற்றப்படும். ஆண்ட்ராய்டு பதிப்பு 9 இல், \'Ca_certs.crt\' என்ற கோப்பு பதிவிறக்க கோப்புறையிலிருந்து ஏற்றப்படுகிறது. + அவைத்தலைவர் தொலைபேசி + AEC நீட்டிக்கப்பட்ட வடிகட்டி + சரிபார்க்கப்பட்டால், எதிரொலி ரத்துசெய்தல் நீட்டிக்கப்பட்ட வடிப்பானைப் பயன்படுத்துகிறது. + இந்த தசம எண்ணால் மைக்ரோஃபோன் அளவைப் பெருக்கவும். மைக்ரோஃபோன் ஆதாயத்தை முடக்கும் குறைந்தபட்ச மதிப்பு 1.0 (தொழிற்சாலை இயல்புநிலை) ஆகும். பெரிய மதிப்புகள் ஆடியோ தரத்தை எதிர்மறையாக பாதிக்கலாம். + சரிபார்க்கப்பட்டால், அழைப்பு தொடங்கும் போது ச்பீக்கர் தொலைபேசி தானாக இயக்கப்படும். + ஆடியோ தொகுதிகள் + சரிபார்க்கப்பட்ட தொகுதிகள் வழங்கிய ஆடியோ கோடெக்குகள் கணக்குகளால் பயன்படுத்தப்படுகின்றன. + தொகுதி ஏற்றுவதில் தோல்வி. + ஒலி எதிரொலி ரத்து + சரிபார்க்கப்பட்டால், அழைப்பு ஆடியோவில் எதிரொலி ரத்து செய்ய முயற்சிக்கிறது. + தவறான மைக்ரோஃபோன் ஆதாய மதிப்பு + ஓபச் பிட் வீதம் + ஓபச் ஆடியோ ச்ட்ரீம் பயன்படுத்தும் சராசரி அதிகபட்ச பிட் வீதம். செல்லுபடியாகும் மதிப்புகள் 6000-510000. தொழிற்சாலை இயல்புநிலை 28000 ஆகும். + எதிர்பார்க்கப்படும் ஓபச் பாக்கெட் இழப்பு + எதிர்பார்க்கப்படும் ஓபச் ஆடியோ ச்ட்ரீம் பாக்கெட் இழப்பு விழுக்காடு, 0–100 முதல். தொழிற்சாலை இயல்புநிலை மதிப்பு 1. மதிப்பு 0 மேலும் ஓபச் முன்னோக்கி பிழை திருத்தம் (FEC) ஐ முடக்குகிறது. + ஆடியோ நேரந்தவறுகை + தவறான ஆடியோ நேரந்தவறுகை \'%1$s\'. செல்லுபடியாகும் மதிப்புகள் 100 முதல் 3000 வரை. + இயல்புநிலை அழைப்பு தொகுதி + அமைக்கப்பட்டால், இயல்புநிலை அழைப்பு ஆடியோ தொகுதி 1–10. + தொனி நாடு + அழைப்பு ரிங்கிங், காத்திருப்பு மற்றும் காலீ பிசியான டோன்களின் நாடு + அழைப்பு நிறுவப்படும்போது காலியில் இருந்து ஆடியோவைக் காத்திருக்க நேரம் (மில்லி விநாடிகளில்). அழைப்பின் தொடக்கத்தில் காலியிலிருந்து ஆடியோவைத் தவறவிட்டால் அதிக மதிப்புக்கு அமைக்கவும். + இருண்ட கருப்பொருள் + இருண்ட காட்சி கருப்பொருள் கட்டாயப்படுத்துங்கள் + வீடியோ பிரேம் அளவு + கடத்தப்பட்ட வீடியோ பிரேம்களின் அளவு (அகலம் ஃச் உயரம்) + நொடிக்கு வீடியோ பிரேம்கள் + தொழிற்சாலை இயல்புநிலை மதிப்புகளுக்கு அமைப்புகளை மீட்டமைக்க விரும்புகிறீர்களா? + எச்.டி.பி ஏண்ட்சேக்கின் போது வழங்கப்படும் வீடியோ பிரேம் வீதம். செல்லுபடியாகும் மதிப்புகள் 10 முதல் 30 வரை. + தனிப்பயன் SIP கோரிக்கை/பதில் பயனர்-முகவர் தலைப்பு புல மதிப்பு + தவறான பயனர்-முகவர் தலைப்பு புல மதிப்பு + பேராசிப் தொடர்புகள், ஆண்ட்ராய்டு தொடர்புகள் அல்லது இரண்டும் பயன்படுத்தப்பட்டால் தேர்வுசெய்கின்றன. இரண்டும் பயன்படுத்தப்பட்டு, ஒரே பெயருடன் ஒரு தொடர்பு இரு தொடர்புகளிலும் இருந்தால், பெரெசிப் தொடர்பு தேர்ந்தெடுக்கப்படும். + இரண்டும் + பிழைத்திருத்தம் + சரிபார்க்கப்பட்டால், பிழைத்திருத்த மற்றும் செய்தி நிலை பதிவு செய்திகளை Logcat க்கு வழங்குகிறது. + சிப் சுவடு + சரிபார்க்கப்பட்டால், பிழைத்திருத்தத்தை சரிபார்க்கினால், லோகாட் செய்திகளில் SIP கோரிக்கை மற்றும் மறுமொழி சுவடு ஆகியவை அடங்கும். பரேசிப் தொடக்கத்தில் தானாக சரிபார்க்கப்படாமல். + தொழிற்சாலை இயல்புநிலைகளுக்கு மீட்டமைக்கவும் + சரிபார்க்கப்பட்டால், அமைப்புகள் தொழிற்சாலை இயல்புநிலை மதிப்புகளுக்கு மீட்டமைக்கப்படும். + மீட்டமை + \'Cert.pem\' கோப்பைப் படிக்கத் தவறிவிட்டது. + புதிய அமைப்புகளை செயல்படுத்த நீங்கள் பேராசிப்பை மறுதொடக்கம் செய்ய வேண்டும். இப்போது மறுதொடக்கம் செய்யவா? + ஒப்புதல் கோரிக்கை + \'Ca_certs.crt\' கோப்பைப் படிக்கத் தவறிவிட்டது. + ஆண்ட்ராய்டு தொடர்புகள் தேர்ந்தெடுக்கப்பட்டால், அவை SIP மற்றும் TEL URIS பற்றிய குறிப்புகளாக அழைப்பு மற்றும் செய்தியிடலில் பயன்படுத்தப்படலாம். பரேசிப் பயன்பாடு ஆண்ட்ராய்டு தொடர்புகளை சேமிக்காது அல்லது அவற்றை யாருடனும் பகிராது. ஆண்ட்ராய்டு தொடர்புகளை Paresip இல் கிடைக்கச் செய்வதற்கு, இங்கே விவரிக்கப்பட்டுள்ளபடி அவற்றின் பயன்பாட்டை நீங்கள் ஏற்றுக்கொள்ள வேண்டும் மற்றும் பயன்பாட்டின் தனியுரிமைக் கொள்கை . + தொடர்பு + புதிய தொடர்பு + பெயர் + சிப் அல்லது டெல் யூரி + பயனர்@டொமைன் அல்லது தொலைபேசி எண் + பிடித்த + தவறான தொடர்பு பெயர் \'%1$s\' + \'%1$s\' ஐ தொடர்பு கொள்ளுங்கள். + தவறான SIP யூரி + சரிபார்க்கப்பட்டால், இந்த தொடர்பு ஆண்ட்ராய்டு தொடர்புகளில் சேர்க்கப்படும். + சுயவிவர படம் + தொடர்புகள் + \'%1$s\' க்கு அழைக்க அல்லது செய்தியை அனுப்ப விரும்புகிறீர்களா? + செய்தி அனுப்பவும் + \'%1$s\' என்ற தொடர்பை நீக்க விரும்புகிறீர்களா? + உங்கள் அதிகபட்ச தொடர்புகள் %1$d ஐ மீறிவிட்டது. + விழிப்புணர்வு + தகவல் + அறிவிப்பு + ரத்துசெய் + சரி + ஆம் + இல்லை + உதவி + உறுதிப்படுத்தல் + அநாமதேய + தெரியவில்லை + தவறான SIP அல்லது TEL யூரி \'%1$s\' + காப்புப்பிரதி + பற்றி + மறுதொடக்கம் + வெளியேறு + அழைக்கவும்… + இருந்து அழைக்கவும்… + \'%1$s\' உடன் வீடியோவை அனுப்புவதையும் பெறுவதையும் ஏற்றுக்கொள்கிறீர்களா? + \'%1$s\' க்கு வீடியோ அனுப்புவதை ஏற்றுக்கொள்கிறீர்களா? + \'%1$s\' இலிருந்து வீடியோவைப் பெறுவதை ஏற்றுக்கொள்கிறீர்களா? + திருப்பி விடப்பட்டது… + அழைப்பை மாற்றுவது… + தவறான SIP யூரி \'%1$s\' + கணக்கு \'%1$s\' தொலைபேசி வழங்குநர் இல்லை + ஏங்கப் + வீடியோ அழைப்பு + வீடியோ கோரிக்கை + ஓல்ட்/அவிழ்த்து விடுங்கள் + அழைப்படுபவர் + அழைப்பு நிறுத்தி வைக்கப்பட்டுள்ளது + மைக்ரோஃபோன் ஆன்/ஆஃப் + அழைப்பு இணைக்கப்படாதபோது மட்டுமே பதிவை இயக்கலாம் அல்லது முடக்கலாம் + அழைப்பு பரிமாற்றம் + குருட்டு + கலந்து கொண்டார் + இடத்தை மாற்றவும் + இலக்கு யூரி ஐத் தேர்வுசெய்க + இடமாற்றம் + டி.டி.எம்.எஃப் + அழைப்பு செய்தி + இடமாற்றம் தோல்வியுற்றது + செய்தி எதுவும் கிடைக்கவில்லை + காலம்: %1$d (நொடி) + கோடெக்குகள் + தற்போதைய வீதம்: %1$s (kbits/s) + சராசரி வீதம்: %1$s (kbits/s) + பாக்கெட்டுகள் + இழந்தது + நடுக்கம்: %1$s (எம்.எச்) + குரல் அஞ்சல் + குரல் அஞ்சல் செய்திகள் + உங்களிடம் உள்ளது + ஒரு புதிய செய்தி + கேளுங்கள் + செய்திகள் + புதிய செய்திகள் + ஒரு பழைய செய்தி + பழைய செய்திகள் + மற்றும் + உங்களிடம் செய்திகள் இல்லை + டயல்பேட் + உங்களிடம் ஏற்கனவே செயலில் அழைப்பு உள்ளது. + பரேசிப் தொடங்கத் தவறிவிட்டார். இது தவறான அமைப்புகளின் மதிப்பு காரணமாக இருக்கலாம். கேளுங்கள் முகவரி, TLS சான்றிதழ் கோப்பு மற்றும் TLS CA கோப்பை சரிபார்க்கவும். பின்னர் பரேசிப்பை மறுதொடக்கம் செய்யுங்கள். + %1$s இன் பதிவு தோல்வியுற்றது. + கோரிக்கையை சரிபார்க்கவும் + SAS <%1$s> ஐ சரிபார்க்க விரும்புகிறீர்களா? + பரிமாற்ற கோரிக்கை + இந்த அழைப்பை \'%1$s\' க்கு மாற்ற ஏற்றுக்கொள்கிறீர்களா? + அழைப்பு கோரிக்கை + \'%1$s\' என்று அழைப்பதற்கான கோரிக்கையை நீங்கள் ஏற்றுக்கொள்கிறீர்களா? + \'%1$s\' \\ க்கு தானியங்கி திருப்பிவிடுதல் \\ + கோரிக்கையை திருப்பி விடுங்கள் + \'%1$s\' க்கு அழைப்பு திருப்பிவிடுவதை நீங்கள் ஏற்றுக்கொள்கிறீர்களா? + அழைப்பு தோல்வியடைந்தது + அழைப்பு மூடப்பட்டுள்ளது + இந்த அழைப்பு பாதுகாப்பாக இல்லை! + இந்த அழைப்பு பாதுகாப்பானது, ஆனால் பியர் சரிபார்க்கப்படவில்லை! + இந்த அழைப்பு பாதுகாப்பானது மற்றும் பியர் சரிபார்க்கப்பட்டது! சகாக்களை அவிழ்க்க விரும்புகிறீர்களா? + திறக்கவும் + பயன்பாட்டு தரவு \'%1$s\' தாக்கல் செய்ய ஆதரிக்கப்பட்டுள்ளது. ஆண்ட்ராய்டு பதிப்பு 9 இல், கோப்பு பதிவிறக்க கோப்புறையில் உள்ளது. + \'%1$s\' ஐ தாக்கல் செய்ய பயன்பாட்டு தரவை காப்புப் பிரதி எடுக்கத் தவறிவிட்டது. பயன்பாடுகளை சரிபார்க்கவும் → Paresip → அனுமதிகள் → சேமிப்பிடம். + பயன்பாட்டு தரவு மீட்டெடுக்கப்பட்டது. பரேசிப் மறுதொடக்கம் செய்யப்பட வேண்டும். இப்போது மறுதொடக்கம் செய்யவா? + பயன்பாட்டு தரவை மீட்டெடுப்பதில் தோல்வி. நீங்கள் சரியான கடவுச்சொல்லை வழங்கியிருக்கிறீர்களா என்பதையும், காப்புப்பிரதி கோப்பு இந்த பயன்பாட்டிலிருந்து வந்ததா என்பதையும் சரிபார்க்கவும். ஆண்ட்ராய்டு பதிப்புகள் 9 இல், பயன்பாடுகளையும் சரிபார்க்கவும் → Paresip → அனுமதிகள் → சேமிப்பிடம் மற்றும் அந்த கோப்பு \'%1$s\' பதிவிறக்க கோப்புறையில் உள்ளது. + பயன்பாட்டு தரவை மீட்டெடுப்பதில் தோல்வி. ஆண்ட்ராய்டு பதிப்பு 14 மற்றும் அதற்கு மேற்பட்டவை %1$s பதிப்பு %2$s க்கு முன் காப்புப் பிரதி எடுக்கப்பட்ட தரவை மீட்டமைக்க அனுமதிக்காது. + \"அறிவிப்புகள்\" இசைவு இல்லாமல் இந்த பயன்பாட்டை நீங்கள் பயன்படுத்த முடியாது. + குரல் அழைப்புகளுக்கு BARESIP க்கு \"மைக்ரோஃபோன்\" இசைவு தேவை. + \"அருகிலுள்ள சாதனங்கள்\" இசைவு இல்லாமல் ஊடலை இணைப்பைக் கண்டறிய பாரெசிப்பால் முடியவில்லை. + வீடியோ அழைப்புகளைச் செய்ய அல்லது பதிலளிக்க \"கேமரா\" இசைவு வழங்கவும். + \"சேமிப்பு\" இசைவு இல்லாமல் காப்புப்பிரதியை உருவாக்க முடியாது. + \"சேமிப்பு\" அனுமதியின்றி காப்புப்பிரதியை மீட்டெடுக்க முடியாது. + \"தொடர்புகள்\" அனுமதியின்றி நீங்கள் ஆண்ட்ராய்டு தொடர்புகளை அணுக முடியாது. + உங்களிடம் உதவி வீடியோ கேமராக்கள் எதுவும் இல்லை. + கடவுச்சொல்லைக் காட்டு + பிணைய இணைப்பு இல்லை! + ஆடியோ கவனம் மறுக்கப்பட்டது! + அனுமதிகள் பகுத்தறிவு + குரல் அழைப்புகளுக்கு \"மைக்ரோஃபோன்\" இசைவு தேவை, ஊடலை மைக்ரோஃபோன்/ச்பீக்கர் கண்டறிதலுக்கான \"அருகிலுள்ள சாதனங்கள்\" இசைவு மற்றும் அறிவிப்புகளை இடுகையிடுவதற்கான \"அறிவிப்புகள்\" இசைவு. + PARESIP+ குரல் அழைப்புகளுக்கான \"மைக்ரோஃபோன்\" இசைவு தேவை, வீடியோ அழைப்புகளுக்கான \"கேமரா\" இசைவு, ஊடலை மைக்ரோஃபோன்/ச்பீக்கர் கண்டறிதலுக்கான \"அருகிலுள்ள சாதனங்கள்\" இசைவு மற்றும் அறிவிப்புகளை இடுகையிடுவதற்கான \"அறிவிப்புகள்\" இசைவு. + நீங்கள் தொடர்புகளுக்கு \'%1$s\' ஐ சேர்க்க விரும்புகிறீர்களா அல்லது அழைப்பு வரலாற்றிலிருந்து %2$s ஐ நீக்க விரும்புகிறீர்களா? + \ No newline at end of file diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..88a1873 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,34 @@ + + + #fcfcfc + @color/colorSecondaryDark + #0ca1fd + #0073c9 + #6ad2ff + #00B9A1 + #008873 + #5cecd2 + #9e9e9e + #424242 + #e0e0e0 + #F77445 + #673AB7 + #ffffff + #000000 + @color/colorBlack + #01df01 + #ff0000 + #4CAF50 + #FFEB3B + #FF5722 + @color/colorWhite + #383838 + @color/colorDark + @color/colorGrayLight + @color/colorGray + @color/colorBlack + @color/colorBlack + @color/colorBlack + @color/colorSecondaryDark + @color/colorPrimary + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..f52813a --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + 16dp + 12dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..cbe1c0a --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,567 @@ + + + ritosip + ritosip + + About ritosip + About ritosip + + Ritosip library based SIP User Agent +

Juha Heinanen <jh@tutpro.com>

+

Version %1$s

+

Usage Hints

+
    +
  • Check that default values in baresip\'s Settings meet your needs + (touch item titles for help).
  • +
  • Then in Accounts, create one or more accounts (again touch item titles for help).
  • +
  • Registration status of an account is shown with a colored dot: green (registration + succeeded), yellow (registration is in progress), red (registration failed), white (registration + has not been activated).
  • +
  • Touch on the dot leads directly to account configuration.
  • +
  • Swipe down gesture causes re-registration of the currently shown account.
  • +
  • Long touch on currently shown account enables or disables account\'s registration.
  • +
  • Swipe left/right gesture toggles between the accounts.
  • +
  • Previous call party can be reselect by touching the call icon when Callee is empty.
  • +
  • Peers of calls and messages can be added to contacts by long touches.
  • +
  • Long touches can also be used to remove calls, chats, messages, and contacts.
  • +
  • Touch/long touch of contact icon can be used to install/remove image avatar.
  • +
  • See Wiki for more + information.
  • +
+

Privacy Policy

+ Privacy policy is available here. +

Source code

+ Source code is available at GitHub, + where also issues can be reported. +

Licenses

+
    +
  • BSD-3-Clause except the following:
  • +
  • Apache 2.0 AMR codecs and TLS security
  • +
  • AGPLv4 ZRTP media encryption
  • +
  • GNU LGPL 2.1 G.722, G.726, and Codec2 codecs
  • +
  • GNU GPLv3 G.729 codec
  • +
+ ]]> +
+ + Ritosip library based SIP User Agent with video calls +

Juha Heinanen <jh@tutpro.com>

+

Version %1$s

+

Usage Hints

+
    +
  • Check that default values in ritosip\'s Settings meet your needs + (touch item titles for help).
  • +
  • Then in Accounts, create one or more accounts (again touch item titles for help).
  • +
  • Registration status of an account is shown with a colored dot: green (registration + succeeded), yellow (registration is in progress), red (registration failed), white (registration + has not been activated).
  • +
  • Touch on the dot leads directly to account configuration.
  • +
  • Swipe down gesture causes re-registration of the currently shown account.
  • +
  • Long touch on currently shown account enables or disables account\'s registration.
  • +
  • Swipe left/right gesture toggles between the accounts.
  • +
  • Previous call party can be reselect by touching the call icon when Callee is empty.
  • +
  • Peers of calls and messages can be added to contacts by long touches.
  • +
  • Long touches can also be used to remove calls, chats, messages, and contacts.
  • +
  • Touch/long touch of contact icon can be used to install/remove image avatar.
  • +
  • See Wiki for more + information.
  • +
+

Known Issues

+
    +
  • In video calls, the device needs to be held in landscape + mode rotated 90 degrees left from portrait orientation.
  • +
  • Selfview is not properly shown when video stream is sendonly.
  • +
+

Privacy Policy

+ Privacy policy is available here. +

Source code

+ Source code is available at GitHub, + where also issues can be reported. +

Licenses

+
    +
  • BSD-3-Clause except the following:
  • +
  • Apache 2.0 AMR codecs and TLS security
  • +
  • AGPLv4 ZRTP media encryption
  • +
  • GNU LGPL 2.1 G.722, G.726, and Codec2 codecs
  • +
  • GNU GPLv3 G.729 codec
  • +
  • GNU GPLv2 H.264 and H.265 codecs
  • +
  • AOMedia AV1 codec
  • +
+ ]]> +
+ + Account + Account Nickname + Nickname (if any) used to identify this account within + ritosip app. + Nickname + Invalid Account Nickname \'%1$s\' + Nickname \'%1$s\' already exists + Display Name + Your Name + Name (if any) used in From URI of outbound requests. + Invalid Display Name \'%1$s\' + Authentication Username + Authentication username + if authentication of SIP requests is required. Default value is account\'s username. + + Invalid Authentication Username \'%1$s\' + Authentication Password + Authentication + Password up to 64 characters. If Authentication Username is given, but Password is not + given, it will be asked when ritosip is started. + + Invalid Authentication Password \'%1$s\' + Outbound Proxies + SIP URI of one or two proxies that must be used when sending requests. + If two is given, REGISTER requests are sent to both and other requests are sent to + one that responds. If no outbound proxy is given, requests are sent based on + DNS NAPTR/SRV/A record lookup of callee URI hostpart. If hostpart of SIP URI is an IPv6 + address, the address must be written inside brackets []. +\nExamples: +\n • sip:example.com:5061;transport=tls +\n • sip:[2001:67c:223:777::10];transport=tcp +\n • sip:192.168.43.50:443;transport=wss + + SIP URI of Proxy Server + SIP URI of another Proxy Server + Invalid Proxy Server URI \'%1$s\' + Register + If checked, registration is enabled and REGISTER requests are sent + at the interval specified by Registration Interval. + Registration Interval + Tells how often (in seconds) ritosip sends REGISTER requests. + Valid values are from 60 to 3600. + Invalid Registration Interval\'%1$s\' + Media NAT Traversal + Selects media NAT traversal protocol (if any). Possible choices are STUN + (Session Traversal Utilities for NAT, RFC 5389) and ICE (Interactive Connectivity + Establishment, RFC 5245). + + STUN/TURN Server + A STUN/TURN Server URI of form scheme:host[:port][\?transport=udp|tcp], + where scheme is \'stun\', \'stuns\', \'turn\', or \'turns\'. Factory default STUN Server + for STUN and ICE protocols is \'stun:stun.l.google.com:19302\' pointing to public Google + STUN server. There is no factory default TURN server. + + STUN/TURN Server URI + Invalid STUN/TURN Server URI \'%1$s\' + stun:stun.l.google.com:19302 + STUN/TURN Username + Username if required by STUN/TURN server + Invalid Username \'%1$s\' + STUN/TURN Password + Password if required by STUN/TURN server + Invalid Password \'%1$s\' + Media Encryption + Selects media transport encryption protocol (if any). +\n • ZRTP (recommended) means that ZRTP end-to-end media encryption negotiation is tried after + the call has been established. +\n • DTLS-SRTPF means that UDP/TLS/RTP/SAVPF is offered in outgoing call and that RTP/SAVP, + RTP/SAVPF, UDP/TLS/RTP/SAVP, or UDP/TLS/RTP/SAVPF is used if offered in incoming call. +\n • SRTP-MANDF means that RTP/SAVPF is offered in outgoing call and required in incoming call. +\n • SRTP-MAND means that RTP/SAVP is offered in outgoing call and required in incoming call. +\n • SRTP means that RTP/AVP is offered in outgoing call and that RTP/SAVP or RTP/SAVPF is used + if offered in incoming call. + + Prefer IPv6 Media + If checked, offer to use IPv6 media protocol (if available) when media protocol of peer cannot be automatically determined. + RTCP Multiplexing + If checked, RTP and RTCP packets are multiplexed on a single port (RFC 5761). + Reliable Provisional Responses + If checked, indicate support for reliable provisional responses (RFC 3262). + DTMF Mode + Selects how DTMF tones 0–9, #, *, and A-D are sent. + In-band RTP Events + SIP INFO Requests + In-band RTP or SIP INFO + Answer Mode + Selects how incoming calls are answered. + Redirect Mode + Selects if call redirect request is followed automatically or + if confirmation is requested. + Manual + Automatic + Voicemail URI + SIP URI for checking of voicemail messages. If left empty, voicemail + messages (Message Waiting Indications) are not subscribed to. + + Invalid Voicemail URI \'%1$s\' + Country Code + E.164 country code of this account. If From URI userpart of + incoming call or message contains a telephone number that does not start with \'+\' sign and if contact + lookup fails, the number is prefixed with this country code and contact lookup is + tried again. If the telephone number starts with a single digit \'0\', digit \'0\' is removed + before the number is prefixed. + + +code + Invalid Country Code \'%1$s\' + Telephony Provider + SIP URI host part used in calls to telephone numbers. + Factory default is account\'s domain. If not given, this account cannot be used to call + telephone numbers. + + SIP URI host part + Invalid SIP URI host part \'%1$s\' + Default Account + If checked, this account is selected when ritosip is started. + + + Accounts + New Account + When a new account is created, account\'s port number and transport + protocol may be optionally given: <user>@<domain>[:<port>][;transport=udp|tcp|tls]. + If <port> is given and transport protocol is not given, transport protocol defaults to udp. + If <port> is not given and transport protocol is given, <port> defaults to 5060 or 5061 (TLS). + If neither is given and no outbound proxy is specified, account\'s registrar (if any) is + determined solely based on domain\'s DNS information. + + user@domain + Invalid user@domain[:port][;transport=udp|tcp|tls] \'%1$s\' + Account \'%1$s\' already exists. + "Failed to allocate new account. + Encrypt Password + Decrypt Password + Do you want to delete account \'%1$s\'\? + + Answer + Reject + Incoming call from + Missed call from + Missed calls + %1$d missed calls + Call transfer request to + Message from + Auto-rejected call from \`%1$s\` + + Call History + Call Details + Call + calls + call + Peer + Direction + Time + Duration + Do you want to call or send message to \'%1$s\'\? + Do you want to add \'%1$s\' to contacts or delete + %2$s from call history\? + + Do you want to delete \'%1$s\' %2$s from call history\? + + Delete + Disable + Enable + Do you want to delete call history of account \'%1$s\'\? + + Chat Messages + Chat with %1$s + New message + Do you want to delete message or add peer \'%1$s\' to contacts\? + Do you want to delete message\? + Add Contact + Sending of message failed + Failed + + Chat History + Today + You + New Chat Peer + Invalid chat peer URI + Do you want to delete chat with peer \'%1$s\' or + add peer to contacts\? + Do you want to delete chat with \'%1$s\'\? + Delete + Do you want to delete chat history of account \'%1$s\'\? + + Audio Codecs + List of audio codecs in priority order. Drag to reorder, + swipe right to enable or disable. + Video Codecs + List of video codecs in priority order. Drag to reorder, + swipe right to enable or disable. + Reorder + + Settings + Start Automatically + If checked, ritosip starts automatically after device (re)start. + Automatic start needs Appear on Top permission. + Battery Optimizations + Disable battery optimizations (recommended) if you want + to reduce likelihood that Android restricts baresip\'s access to network or enters baresip + to standby state. + Default Phone App + Dialer role is not available + If checked, ritosip is the default phone app. Do not check + if your device may need to handle also other than SIP calls or messages. + Listen Address + IP address and port of form \'address:port\' at which ritosip listens + for incoming SIP requests. If IP address is an IPv6 address, it must be written inside + brackets []. IPv4 address 0.0.0.0 or IPv6 address [::] makes ritosip listen at all + available addresses. If left empty (factory default), ritosip listens at port 5060 of + all available addresses. + + Invalid Listen Address + 0.0.0.0:5060 + Address Family + Chooses which IP addresses ritosip is + using. If IPv4 or IPv6 is chosen, ritosip uses only IPv4 or IPv6 addresses. If neither is + chosen, ritosip uses both IPv4 and IPv6 addresses. + + DNS Servers + Comma separated list of addresses of DNS servers. If not given, + DNS server addresses are obtained dynamically from the system. Each DNS address is of form + \'ip:port\' or \'ip\'. If port is omitted, it defaults to 53. If ip is an IPv6 address and + also port is given, ip must + be written inside brackets []. As an example, list \'8.8.8.8:53,[2001:4860:4860::8888]:53\' + points to IPv4 and IPv6 addresses of public Google DNS servers. + Invalid DNS Servers + Failed to set DNS servers + TLS Certificate File + If checked, a file containing TLS certificate and + private key of this ritosip instance has been or will be loaded. In Android version 9, + a file called \'cert.pem\' is loaded from Download folder. For security reasons, + delete the file after loading. + Verify Server Certificates + If checked, ritosip verifies TLS certificates of SIP User + Agent and SIP Proxy Servers when TLS transport is used. + TLS CA File + If checked, a file has been or will be loaded that contains + TLS certificates of such Certificate Authorities that are not included in Android OS. + In Android version 9, a file called \'ca_certs.crt\' is loaded from Download folder. + Audio Settings + Speaker Phone + If checked, speaker phone is turned automatically on + when call starts. + Audio Modules + Audio codecs provided by the checked modules are + available for use by the accounts. + Failed to load module. + Acoustic Echo Cancellation + If checked, software echo cancellation is attempted on call audio. + AEC Extended Filter + If checked, echo cancellation is using extended filter. + Microphone Gain + Multiply microphone volume by this decimal number. Minimum + value is 1.0 (factory default) that disables microphone gain. Larger values may negatively + affect audio quality. + Invalid Microphone Gain value + 1.0 + Opus Bit Rate + Average maximum bit rate used by Opus audio stream. + Valid values are 6000-510000. Factory default is 28000. + 28000 + Expected Opus packet-loss + Expected Opus audio stream packet loss percentage, + from 0–100. Factory default value is 1. Value 0 also turns off Opus Forward Error + Correction (FEC). + 0 + Invalid Opus bitrate + Invalid Opus Packet Loss Percentage + Audio Delay + Time (in milliseconds) to wait audio from callee when call is established. + Set to a higher value if you miss audio from callee at the beginning of the call. + Invalid Audio Delay \'%1$s\'. Valid values are from 100 to 3000. + Default Call Volume + If set, default call audio volume at scale 1–10. + Tone Country + Country of call ringing, waiting, and callee busy tones + Dark Theme + Force dark display theme + Video Frame Size + Size of transmitted video frames (width x height) + Video Frames Per Second + Video frame rate that will be offered during the SDP handshake. + Valid values are from 10 to 30. + Invalid Frames Per Second \'%1$d\' + User Agent + Custom SIP request/response User-Agent header field value + Invalid User-Agent header field value + Chooses if ritosip contacts, Android contacts, or both are used. + If both are used and a contact with the same name exists in both contacts, + the ritosip contact will be chosen. + Both + Debug + If checked, provides debug and info level log messages to Logcat. + SIP Trace + If checked and if Debug is checked, Logcat messages include also SIP + request and response trace. Unchecked automatically at ritosip start. + Reset to Factory Defaults + If checked, settings are reset to factory default values. + Are you sure you want to reset settings to factory + default values\? + Reset + Failed to read file \'cert.pem\'. + Failed to read file \'ca_certs.crt\'. + You need to restart ritosip in order to activate the new + settings. Restart now\? + + Consent Request + If Android contacts is chosen, they can be used + in calling and messaging as references to SIP and tel URIs. ritosip app does not store Android + contacts nor share them with anyone. In order to make Android contacts available in baresip, + Google requires that you accept their use as described here and in app\'s + Privacy Policy. + + + Contact + New Contact + Name + SIP or tel URI + user@domain or telephone number + Favorite + Invalid contact name \'%1$s\' + Contact \'%1$s\' already exists. + Invalid SIP URI + If checked, this contact is added to Android contacts. + Profile image + + Contacts + Do you want to call or send message to \'%1$s\'\? + Send Message + Do you want to delete contact \'%1$s\'\? + Your maximum number of contacts %1$d has been exceeded. + + Alert + Info + Notice + Cancel + OK + Yes + No + Accept + Deny + User ID + Password + SIP URI + Add + Delete + Edit + Send + Status + Error + Help + Confirmation + Anonymous + Unknown + + \u2022 %1$s + Invalid SIP or tel URI \'%1$s\' + baresip + Android + + Backup + Restore + Logcat + About + Restart + Quit + Call to … + Call from … + Diverted by … + Transferring call to … + Invalid SIP URI \'%1$s\' + Account \'%1$s\' has no Telephony Provider + Callee + Hangup + Video call + Video Request + Accept sending and receiving video with \'%1$s\'\? + Accept sending of video to \'%1$s\'\? + Accept receiving video from \'%1$s\'\? + Call Hold/Unhold + Call is on hold + Microphone On/Off + Recording can be turned on or off only when call is not + connected + Call Transfer + Blind + Attended + Transfer destination + Choose destination URI + Transfer + Transfer failed + DTMF + Call Info + No info available + Duration: %1$d (secs) + Codecs + Current Rate: %1$s (Kbits/s) + Average Rate: %1$s (Kbits/s) + Packets + Lost + Jitter: %1$s (ms) + Voicemail + Voicemail Messages + You have + one new message + new messages + one old message + old messages + and + You have no messages + Listen + Messages + Dialpad + You already have an active call. + Ritosip failed to start. This may be due to an invalid Settings value. + Check Listen Address, TLS Certificate File, and TLS CA File. Then restart baresip. + + Registering of \`%1$s\` failed. + Verify Request + Do you want to verify SAS <%1$s>\? + Transfer Request + Do you accept to transfer this call to \'%1$s\'\? + Call Request + Do you accept request to call \'%1$s\'\? + Automatic redirection to \'%1$s\'\ + Redirect Request + Do you accept call redirection to \'%1$s\'\? + Call failed + Call is closed + This call is NOT secure! + This call is SECURE, but peer is NOT verified! + This call is SECURE and peer is VERIFIED! + Do you want to unverify the peer\? + + Unverify + Application data (excluding recordings) backed up + to file \'%1$s\'. In Android version 9, the file is in Download folder. + Failed to back up application data to file + \'%1$s\'. Check Apps → ritosip → Permissions → Storage. + Restart Request + Application data restored. ritosip needs to be restarted. + Restart now\? + + Failed to restore application data. Check that you gave correct + password and that the backup file is from this application. In Android versions 9, + also check Apps → ritosip → Permissions → Storage and that file \'%1$s\' exists + in Download folder. + + Failed to restore application data. Android version 14 and + above does not allow restoring data that was backed up before %1$s version %2$s. + + You are not able to use this application without \"Notifications\" + permission. + ritosip needs \"Microphone\" permission for voice calls. + ritosip is not able to detect Bluetooth connectivity without + \"Nearby devices\" permission. + Grant \"Camera\" permission to make or answer video calls. + You are not able create backup without \"Storage\" permission. + You are not able restore backup without \"Storage\" permission. + You are not able to access Android contacts without + \"Contacts\" permission. + You don\'t have any supported video cameras. + Show Password + No network connection! + Audio focus denied! + Permissions rationale + ritosip needs \"Microphone\" permission for voice calls, + \"Nearby devices\" permission for Bluetooth microphone/speaker detection, and + \"Notifications\" permission for posting notifications. + ritosip needs \"Microphone\" permission for voice calls, + \"Camera\" permission for video calls, \"Nearby devices\" permission for Bluetooth + microphone/speaker detection, and \"Notifications\" permission for posting notifications. +
\ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..e9ec524 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/ritpsip-res-ori.zip b/app/src/main/ritpsip-res-ori.zip new file mode 100644 index 0000000..52977c0 Binary files /dev/null and b/app/src/main/ritpsip-res-ori.zip differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..1521569 --- /dev/null +++ b/build.gradle @@ -0,0 +1,25 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext.kotlin_version = '2.0.21' + repositories { + google() + mavenCentral() + } + dependencies { + // noinspection AndroidGradlePluginVersion + classpath 'com.android.tools.build:gradle:8.1.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +tasks.register('clean', Delete) { + delete rootProject.layout.buildDirectory +} diff --git a/distribution.video/.gitignore b/distribution.video/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/distribution.video/.gitignore @@ -0,0 +1 @@ + diff --git a/distribution.video/amr/lib/arm64-v8a/libamrnb.a b/distribution.video/amr/lib/arm64-v8a/libamrnb.a new file mode 100644 index 0000000..a715cb8 Binary files /dev/null and b/distribution.video/amr/lib/arm64-v8a/libamrnb.a differ diff --git a/distribution.video/amr/lib/arm64-v8a/libamrwb.a b/distribution.video/amr/lib/arm64-v8a/libamrwb.a new file mode 100644 index 0000000..4760cf3 Binary files /dev/null and b/distribution.video/amr/lib/arm64-v8a/libamrwb.a differ diff --git a/distribution.video/amr/lib/arm64-v8a/libamrwbenc.a b/distribution.video/amr/lib/arm64-v8a/libamrwbenc.a new file mode 100644 index 0000000..000328e Binary files /dev/null and b/distribution.video/amr/lib/arm64-v8a/libamrwbenc.a differ diff --git a/distribution.video/aom/lib/arm64-v8a/libaom.a b/distribution.video/aom/lib/arm64-v8a/libaom.a new file mode 100644 index 0000000..dee7667 Binary files /dev/null and b/distribution.video/aom/lib/arm64-v8a/libaom.a differ diff --git a/distribution.video/baresip/include/baresip.h b/distribution.video/baresip/include/baresip.h new file mode 100644 index 0000000..d3a6d86 --- /dev/null +++ b/distribution.video/baresip/include/baresip.h @@ -0,0 +1,1874 @@ +/** + * @file baresip.h Public Interface to Baresip + * + * Copyright (C) 2010 Alfred E. Heggestad + */ + +#ifndef BARESIP_H__ +#define BARESIP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +/** Defines the Baresip version string */ +#define BARESIP_VERSION "3.19.0" + + +#ifndef NET_MAX_NS +#define NET_MAX_NS (4) +#endif + + +/* + * Clock-rate for audio timestamp + */ +#define AUDIO_TIMEBASE 1000000U + +/* + * Clock-rate for video timestamp + */ +#define VIDEO_TIMEBASE 1000000U + + +/* forward declarations */ +struct sa; +struct sdp_media; +struct sdp_session; +struct sip_msg; +struct stream; +struct ua; +struct auframe; +struct vidframe; +struct vidrect; +struct vidsz; + + +/* + * Account + */ + +/** Defines the answermodes */ +enum answermode { + ANSWERMODE_MANUAL = 0, + ANSWERMODE_EARLY, + ANSWERMODE_AUTO, + ANSWERMODE_EARLY_AUDIO, + ANSWERMODE_EARLY_VIDEO, +}; + +/** Defines the DTMF send type */ +enum dtmfmode { + DTMFMODE_RTP_EVENT = 0, + DTMFMODE_SIP_INFO, + DTMFMODE_AUTO +}; + +/** SIP auto answer beep modes */ +enum sipansbeep { + SIPANSBEEP_OFF, + SIPANSBEEP_ON, + SIPANSBEEP_LOCAL, +}; + +/** Jitter buffer type */ +enum jbuf_type { + JBUF_OFF, + JBUF_FIXED, + JBUF_ADAPTIVE +}; + +/** Defines the incoming out-of-dialog request mode */ +enum inreq_mode { + INREQ_MODE_OFF = 0, + INREQ_MODE_ON, +}; + +struct account; + +int account_alloc(struct account **accp, const char *sipaddr); +int account_debug(struct re_printf *pf, const struct account *acc); +int account_json_api(struct odict *odacc, struct odict *odcfg, + const struct account *acc); +int account_set_auth_user(struct account *acc, const char *user); +int account_set_auth_pass(struct account *acc, const char *pass); +int account_set_outbound(struct account *acc, const char *ob, unsigned ix); +int account_set_sipnat(struct account *acc, const char *sipnat); +int account_set_answermode(struct account *acc, enum answermode mode); +int account_set_rel100_mode(struct account *acc, enum rel100_mode mode); +int account_set_dtmfmode(struct account *acc, enum dtmfmode mode); +int account_set_inreq_mode(struct account *acc, enum inreq_mode mode); +int account_set_display_name(struct account *acc, const char *dname); +int account_set_regint(struct account *acc, uint32_t regint); +int account_set_stun_uri(struct account *acc, const char *uri); +int account_set_stun_host(struct account *acc, const char *host); +int account_set_stun_port(struct account *acc, uint16_t port); +int account_set_stun_user(struct account *acc, const char *user); +int account_set_stun_pass(struct account *acc, const char *pass); +int account_set_ausrc_dev(struct account *acc, const char *dev); +int account_set_auplay_dev(struct account *acc, const char *dev); +int account_set_mediaenc(struct account *acc, const char *mediaenc); +int account_set_medianat(struct account *acc, const char *medianat); +int account_set_audio_codecs(struct account *acc, const char *codecs); +int account_set_video_codecs(struct account *acc, const char *codecs); +int account_set_mwi(struct account *acc, bool value); +int account_set_call_transfer(struct account *acc, bool value); +int account_set_rtcp_mux(struct account *acc, bool value); +void account_set_catchall(struct account *acc, bool value); +int account_auth(const struct account *acc, char **username, char **password, + const char *realm); +struct list *account_aucodecl(const struct account *acc); +struct list *account_vidcodecl(const struct account *acc); +struct sip_addr *account_laddr(const struct account *acc); +struct uri *account_luri(const struct account *acc); +uint32_t account_regint(const struct account *acc); +uint32_t account_fbregint(const struct account *acc); +uint32_t account_pubint(const struct account *acc); +uint32_t account_ptime(const struct account *acc); +uint32_t account_prio(const struct account *acc); +enum answermode account_answermode(const struct account *acc); +enum rel100_mode account_rel100_mode(const struct account *acc); +enum dtmfmode account_dtmfmode(const struct account *acc); +enum inreq_mode account_inreq_mode(const struct account *acc); +const char *account_display_name(const struct account *acc); +const char *account_aor(const struct account *acc); +const char *account_auth_user(const struct account *acc); +const char *account_auth_pass(const struct account *acc); +const char *account_outbound(const struct account *acc, unsigned ix); +const char *account_sipnat(const struct account *acc); +const char *account_stun_user(const struct account *acc); +const char *account_stun_pass(const struct account *acc); +const char *account_stun_host(const struct account *acc); +const struct stun_uri *account_stun_uri(const struct account *acc); +uint16_t account_stun_port(const struct account *acc); +const char *account_mediaenc(const struct account *acc); +const char *account_medianat(const struct account *acc); +bool account_mwi(const struct account *acc); +bool account_call_transfer(const struct account *acc); +bool account_rtcp_mux(const struct account *acc); +const char *account_extra(const struct account *acc); +int account_uri_complete_strdup(const struct account *acc, char **strp, + const struct pl *uri); +int account_uri_complete(const struct account *acc, struct mbuf *buf, + const char *uri); +int account_answerdelay(const struct account *acc); +void account_set_answerdelay(struct account *acc, int adelay); +bool account_sip_autoanswer(const struct account *acc); +void account_set_sip_autoanswer(struct account *acc, bool allow); +bool account_sip_autoredirect(const struct account *acc); +void account_set_sip_autoredirect(struct account *acc, bool allow); +enum sipansbeep account_sipansbeep(const struct account *acc); +void account_set_sipansbeep(struct account *acc, enum sipansbeep beep); +void account_set_autelev_pt(struct account *acc, uint32_t pt); +uint32_t account_autelev_pt(struct account *acc); +const char* account_uas_user(const struct account *acc); +const char* account_uas_pass(const struct account *acc); +bool account_uas_isset(const struct account *acc); + +/* + * Call + */ + +enum call_event { + CALL_EVENT_INCOMING, + CALL_EVENT_OUTGOING, + CALL_EVENT_RINGING, + CALL_EVENT_PROGRESS, + CALL_EVENT_ANSWERED, + CALL_EVENT_ESTABLISHED, + CALL_EVENT_CLOSED, + CALL_EVENT_TRANSFER, + CALL_EVENT_TRANSFER_FAILED, + CALL_EVENT_MENC, +}; + +/** Call States */ +enum call_state { + CALL_STATE_IDLE = 0, + CALL_STATE_INCOMING, + CALL_STATE_OUTGOING, + CALL_STATE_RINGING, + CALL_STATE_EARLY, + CALL_STATE_ESTABLISHED, + CALL_STATE_TERMINATED, + CALL_STATE_TRANSFER, + CALL_STATE_UNKNOWN +}; + +/** Supported tags */ +enum supported_tags { + REPLACES = 1, +}; + +/** Video mode */ +enum vidmode { + VIDMODE_OFF = 0, /**< Video disabled */ + VIDMODE_ON, /**< Video enabled */ +}; + +struct call; + +typedef void (call_event_h)(struct call *call, enum call_event ev, + const char *str, void *arg); +typedef void (call_dtmf_h)(struct call *call, char key, void *arg); +typedef bool (call_match_h)(const struct call *call, void *arg); +typedef void (call_list_h)(struct call *call, void *arg); + + +int call_connect(struct call *call, const struct pl *paddr); +int call_answer(struct call *call, uint16_t scode, enum vidmode vmode); +int call_progress_dir(struct call *call, + enum sdp_dir adir, enum sdp_dir vdir); +int call_progress(struct call *call); +void call_hangup(struct call *call, uint16_t scode, const char *reason); +void call_hangupf(struct call *call, uint16_t scode, const char *reason, + const char *fmt, ...); +int call_modify(struct call *call); +int call_hold(struct call *call, bool hold); +void call_set_audio_ldir(struct call *call, enum sdp_dir dir); +void call_set_video_ldir(struct call *call, enum sdp_dir dir); +int call_set_video_dir(struct call *call, enum sdp_dir dir); +int call_update_media(struct call *call); +int call_send_digit(struct call *call, char key); +bool call_has_audio(const struct call *call); +bool call_has_video(const struct call *call); +bool call_early_video_available(const struct call *call); +bool call_refresh_allowed(const struct call *call); +bool call_ack_pending(const struct call *call); +bool call_sess_cmp(const struct call *call, const struct sip_msg *msg); +int call_transfer(struct call *call, const char *uri); +int call_replace_transfer(struct call *target_call, struct call *source_call); +int call_status(struct re_printf *pf, const struct call *call); +int call_debug(struct re_printf *pf, const struct call *call); +int call_notify_sipfrag(struct call *call, uint16_t scode, + const char *reason, ...); +void call_set_handlers(struct call *call, call_event_h *eh, + call_dtmf_h *dtmfh, void *arg); +struct account *call_account(const struct call *call); +uint16_t call_scode(const struct call *call); +enum call_state call_state(const struct call *call); +uint32_t call_duration(const struct call *call); +uint32_t call_setup_duration(const struct call *call); +const char *call_id(const struct call *call); +const char *call_peeruri(const struct call *call); +const char *call_peername(const struct call *call); +const char *call_localuri(const struct call *call); +const char *call_alerturi(const struct call *call); +const char *call_diverteruri(const struct call *call); +struct audio *call_audio(const struct call *call); +struct video *call_video(const struct call *call); +struct list *call_streaml(const struct call *call); +struct ua *call_get_ua(const struct call *call); +bool call_is_onhold(const struct call *call); +bool call_is_outgoing(const struct call *call); +void call_enable_rtp_timeout(struct call *call, uint32_t timeout_ms); +uint32_t call_linenum(const struct call *call); +int32_t call_answer_delay(const struct call *call); +void call_set_answer_delay(struct call *call, int32_t adelay); +struct call *call_find_linenum(const struct list *calls, uint32_t linenum); +struct call *call_find_id(const struct list *calls, const char *id); +void call_set_current(struct list *calls, struct call *call); +const struct list *call_get_custom_hdrs(const struct call *call); +void call_set_media_direction(struct call *call, enum sdp_dir a, + enum sdp_dir v); +void call_set_mdir(struct call *call, enum sdp_dir a, enum sdp_dir v); +void call_get_mdir(struct call *call, enum sdp_dir *ap, enum sdp_dir *vp); +void call_set_media_estdir(struct call *call, enum sdp_dir a, enum sdp_dir v); +void call_start_answtmr(struct call *call, uint32_t ms); +bool call_supported(struct call *call, uint16_t tags); +const char *call_user_data(const struct call *call); +int call_set_user_data(struct call *call, const char *user_data); +void call_set_evstop(struct call *call, bool stop); +bool call_is_evstop(struct call *call); +int call_msg_src(const struct call *call, struct sa *sa); +enum sip_transp call_transp(const struct call *call); +enum sdp_neg_state call_sdp_neg_state(const struct call *call); +bool call_sdp_change_allowed(const struct call *call); + +/* + * Custom headers + */ + +typedef int (custom_hdrs_h)(const struct pl *name, const struct pl *val, + void *arg); /* returns error code if any */ + +int custom_hdrs_add(struct list *hdrs, const char *name, const char *fmt, ...); +int custom_hdrs_apply(const struct list *hdrs, custom_hdrs_h *h, void *arg); + + +/* + * Conf (utils) + */ + +/** A range of numbers */ +struct range { + uint32_t min; /**< Minimum number */ + uint32_t max; /**< Maximum number */ +}; + + +/** Defines the configuration line handler */ +typedef int (confline_h)(const struct pl *addr, void *arg); + +int conf_configure(void); +int conf_configure_buf(const uint8_t *buf, size_t sz); +int conf_modules(void); +int conf_path_set(const char *path); +int conf_path_get(char *path, size_t sz); +int conf_parse(const char *filename, confline_h *ch, void *arg); +int conf_get_range(const struct conf *conf, const char *name, + struct range *rng); +int conf_get_vidsz(const struct conf *conf, const char *name, + struct vidsz *sz); +int conf_get_sa(const struct conf *conf, const char *name, struct sa *sa); +enum jbuf_type conf_get_jbuf_type(const struct pl *pl); +bool conf_aubuf_adaptive(const struct pl *pl); +void conf_close(void); +struct conf *conf_cur(void); +int conf_loadfile(struct mbuf **mbp, const char *filename); +const char *fs_file_extension(const char *filename); + + +/* + * Config (core configuration) + */ + +static inline bool in_range(const struct range *rng, uint32_t val) +{ + return rng ? (val >= rng->min && val <= rng->max) : false; +} + +/** Audio transmit mode */ +enum audio_mode { + AUDIO_MODE_POLL = 0, /**< Polling mode */ + AUDIO_MODE_THREAD, /**< Use dedicated thread */ +}; + +/** RTP receive mode */ +enum rtp_receive_mode { + RECEIVE_MODE_MAIN = 0, /**< RTP RX is processed in main thread */ + RECEIVE_MODE_THREAD, /**< RTP RX is processed in separate thread */ +}; + +enum rtp_receive_mode resolve_receive_mode(const struct pl *fmt); +const char *rtp_receive_mode_str(enum rtp_receive_mode rxmode); + + +/** SIP User-Agent */ +struct config_sip { + char uuid[64]; /**< Universally Unique Identifier */ + char local[64]; /**< Local SIP Address */ + char cert[256]; /**< SIP Certificate */ + char cafile[256]; /**< SIP CA-file */ + char capath[256]; /**< SIP CA-path */ + uint32_t transports; /**< Supported transports mask */ + enum sip_transp transp; /**< Default outgoing SIP transport protocol */ + bool verify_server; /**< Enable SIP TLS verify server */ + bool verify_client; /**< Enable SIP TLS verify client */ + enum tls_resume_mode tls_resume; /** TLS resumption mode */ + uint8_t tos; /**< Type-of-Service for SIP */ + uint32_t reg_filt; /**< Registrar filter transport mask*/ +}; + +/** Call config */ +struct config_call { + uint32_t local_timeout; /**< Incoming call timeout [sec] 0=off */ + uint32_t max_calls; /**< Maximum number of calls, 0=unlimited */ + bool hold_other_calls; /**< Hold other calls */ + bool accept; /**< Accept call by baresip core */ +}; + +/** Audio */ +struct config_audio { + char audio_path[256]; /**< Audio file directory */ + char src_mod[16]; /**< Audio source module */ + char src_dev[128]; /**< Audio source device */ + char play_mod[16]; /**< Audio playback module */ + char play_dev[128]; /**< Audio playback device */ + char alert_mod[16]; /**< Audio alert module */ + char alert_dev[128]; /**< Audio alert device */ + uint32_t srate_play; /**< Opt. sampling rate for player */ + uint32_t srate_src; /**< Opt. sampling rate for source */ + uint32_t channels_play; /**< Opt. channels for player */ + uint32_t channels_src; /**< Opt. channels for source */ + enum audio_mode txmode; /**< Audio transmit mode */ + bool level; /**< Enable audio level indication */ + int src_fmt; /**< Audio source sample format */ + int play_fmt; /**< Audio playback sample format */ + int enc_fmt; /**< Audio encoder sample format */ + int dec_fmt; /**< Audio decoder sample format */ + struct range buffer; /**< Audio receive buffer in [ms] */ + bool adaptive; /**< Enable adaptive audio buffer */ + double silence; /**< Silence volume in [dB] */ + uint32_t telev_pt; /**< Payload type for tel.-event */ +}; + +/** Video */ +struct config_video { + char src_mod[16]; /**< Video source module */ + char src_dev[128]; /**< Video source device */ + char disp_mod[16]; /**< Video display module */ + char disp_dev[128]; /**< Video display device */ + unsigned width, height; /**< Video resolution */ + uint32_t bitrate; /**< Encoder bitrate in [bit/s] */ + uint32_t send_bitrate; /**< Sender bitrate in [bit/s] */ + uint32_t burst_bits; /**< Number of Burst bits */ + double fps; /**< Video framerate */ + bool fullscreen; /**< Enable fullscreen display */ + int enc_fmt; /**< Encoder pixelfmt (enum vidfmt) */ +}; + +/** Audio/Video Transport */ +struct config_avt { + uint8_t rtp_tos; /**< Type-of-Service for outg. RTP */ + uint8_t rtpv_tos; /**< TOS for outg. video RTP */ + struct range rtp_ports; /**< RTP port range */ + struct range rtp_bw; /**< RTP Bandwidth range [bit/s] */ + bool rtcp_mux; /**< RTP/RTCP multiplexing */ + struct { + enum jbuf_type jbtype; /**< Jitter buffer type */ + struct range jbuf_del; /**< Delay, number of frames*/ + } audio; + struct { + enum jbuf_type jbtype; /**< Jitter buffer type */ + struct range jbuf_del; /**< Delay, number of frames*/ + } video; + bool rtp_stats; /**< Enable RTP statistics */ + uint32_t rtp_timeout; /**< RTP Timeout in seconds (0=off) */ + bool bundle; /**< Media Multiplexing (BUNDLE) */ + enum rtp_receive_mode rxmode; /**< RTP RX processing mode */ +}; + +/** Network Configuration */ +struct config_net { + int af; /**< AF_UNSPEC, AF_INET or AF_INET6 */ + char ifname[64]; /**< Bind to interface (optional) */ + struct { + char addr[64]; + bool fallback; + } nsv[NET_MAX_NS]; /**< Configured DNS nameservers */ + size_t nsc; /**< Number of DNS nameservers */ + bool use_linklocal; /**< Use v4/v6 link-local addresses */ + bool use_getaddrinfo; /**< Use getaddrinfo for A/AAAA records */ +}; + + +/** Core configuration */ +struct config { + + struct config_sip sip; + + struct config_call call; + + struct config_audio audio; + + struct config_video video; + struct config_avt avt; + + struct config_net net; +}; + +int config_parse_conf(struct config *cfg, const struct conf *conf); +int config_print(struct re_printf *pf, const struct config *cfg); +int config_write_template(const char *file, const struct config *cfg); +struct config *conf_config(void); + + +/* + * Contact + */ + +enum presence_status { + PRESENCE_UNKNOWN, + PRESENCE_OPEN, + PRESENCE_CLOSED, + PRESENCE_BUSY +}; + + +struct contact; +typedef void (contact_update_h)(struct contact *c, bool removed, void *arg); + +struct contacts; + + +int contact_init(struct contacts **contactsp); +int contact_add(struct contacts *contacts, + struct contact **contactp, const struct pl *addr); +void contact_remove(struct contacts *contacts, struct contact *c); +void contacts_enable_presence(struct contacts *contacts, bool enabled); +void contact_set_update_handler(struct contacts *contacs, + contact_update_h *updateh, void *arg); +int contact_print(struct re_printf *pf, const struct contact *cnt); +int contacts_print(struct re_printf *pf, const struct contacts *contacts); +enum presence_status contact_presence(const struct contact *c); +void contact_set_presence(struct contact *c, enum presence_status status); +bool contact_block_access(const struct contacts *contacts, const char *uri); +struct contact *contact_find(const struct contacts *contacts, + const char *uri); +struct sip_addr *contact_addr(const struct contact *c); +struct list *contact_list(const struct contacts *contacts); +const char *contact_str(const struct contact *c); +const char *contact_uri(const struct contact *c); +const char *contact_presence_str(enum presence_status status); +struct le *contact_le(struct contact *cnt); +void contacts_set_current(struct contacts *contacts, struct contact *cnt); +struct contact *contacts_current(const struct contacts *contacts); + + +/* + * Media Device + */ + +/** Defines a media device */ +struct mediadev { + struct le le; + char *name; + + /* Generic: */ + struct { + uint32_t channels; + bool is_default; + } src, play; + + /* Module/driver specific: */ + int host_index; + int device_index; +}; + +int mediadev_add(struct list *dev_list, const char *name); +struct mediadev *mediadev_find(const struct list *dev_list, const char *name); +struct mediadev *mediadev_get_default(const struct list *dev_list); +int mediadev_print(struct re_printf *pf, const struct list *dev_list); + + +/* + * Message + */ + +typedef void (message_recv_h)(struct ua *ua, const struct pl *peer, + const struct pl *ctype, + struct mbuf *body, void *arg); + +struct message; + +int message_init(struct message **messagep); +int message_listen(struct message *message, + message_recv_h *h, void *arg); +void message_unlisten(struct message *message, message_recv_h *recvh); +int message_send(struct ua *ua, const char *peer, const char *msg, + sip_resp_h *resph, void *arg); +int message_encode_dict(struct odict *od, struct account *acc, + const struct pl *peer, const struct pl *ctype, + struct mbuf *body); + + +/* + * Audio Source + */ + +struct ausrc; +struct ausrc_st; + +/** Audio Source parameters */ +struct ausrc_prm { + uint32_t srate; /**< Sampling rate in [Hz] */ + uint8_t ch; /**< Number of channels */ + uint32_t ptime; /**< Wanted packet-time in [ms] */ + int fmt; /**< Sample format (enum aufmt) */ + size_t duration; /**< Duration in [ms], 0 for infinite */ +}; + +typedef void (ausrc_read_h)(struct auframe *af, void *arg); +typedef void (ausrc_error_h)(int err, const char *str, void *arg); + +typedef int (ausrc_alloc_h)(struct ausrc_st **stp, const struct ausrc *ausrc, + struct ausrc_prm *prm, const char *device, + ausrc_read_h *rh, ausrc_error_h *errh, void *arg); +typedef int (ausrc_info_h)(const struct ausrc *ausrc, + struct ausrc_prm *prm, const char *device); + +/** Defines an Audio Source */ +struct ausrc { + struct le le; + const char *name; + struct list dev_list; + ausrc_alloc_h *alloch; + ausrc_info_h *infoh; +}; + +int ausrc_register(struct ausrc **asp, struct list *ausrcl, const char *name, + ausrc_alloc_h *alloch); +const struct ausrc *ausrc_find(const struct list *ausrcl, const char *name); +int ausrc_alloc(struct ausrc_st **stp, struct list *ausrcl, + const char *name, + struct ausrc_prm *prm, const char *device, + ausrc_read_h *rh, ausrc_error_h *errh, void *arg); +int ausrc_info(struct list *ausrcl, + const char *name, struct ausrc_prm *prm, const char *device); + + +/* + * Audio Player + */ + +struct auplay; +struct auplay_st; + +/** Audio Player parameters */ +struct auplay_prm { + uint32_t srate; /**< Sampling rate in [Hz] */ + uint8_t ch; /**< Number of channels */ + uint32_t ptime; /**< Wanted packet-time in [ms] */ + int fmt; /**< Sample format (enum aufmt) */ +}; + +typedef void (auplay_write_h)(struct auframe *af, void *arg); + +typedef int (auplay_alloc_h)(struct auplay_st **stp, const struct auplay *ap, + struct auplay_prm *prm, const char *device, + auplay_write_h *wh, void *arg); + +/** Defines an Audio Player */ +struct auplay { + struct le le; + const char *name; + struct list dev_list; + auplay_alloc_h *alloch; +}; + +int auplay_register(struct auplay **pp, struct list *auplayl, + const char *name, auplay_alloc_h *alloch); +const struct auplay *auplay_find(const struct list *auplayl, const char *name); +int auplay_alloc(struct auplay_st **stp, struct list *auplayl, + const char *name, + struct auplay_prm *prm, const char *device, + auplay_write_h *wh, void *arg); + + +/* + * Audio Filter + */ + +struct aufilt; + +/* Base class */ +struct aufilt_enc_st { + const struct aufilt *af; + struct le le; +}; + +struct aufilt_dec_st { + const struct aufilt *af; + struct le le; +}; + +/** Audio Filter Parameters */ +struct aufilt_prm { + uint32_t srate; /**< Sampling rate in [Hz] */ + uint8_t ch; /**< Number of channels */ + int fmt; /**< Sample format (enum aufmt) */ +}; + +typedef int (aufilt_encupd_h)(struct aufilt_enc_st **stp, void **ctx, + const struct aufilt *af, struct aufilt_prm *prm, + const struct audio *au); +typedef int (aufilt_encode_h)(struct aufilt_enc_st *st, + struct auframe *af); + +typedef int (aufilt_decupd_h)(struct aufilt_dec_st **stp, void **ctx, + const struct aufilt *af, struct aufilt_prm *prm, + const struct audio *au); +typedef int (aufilt_decode_h)(struct aufilt_dec_st *st, + struct auframe *af); + +struct aufilt { + struct le le; + const char *name; + bool enabled; + aufilt_encupd_h *encupdh; + aufilt_encode_h *ench; + aufilt_decupd_h *decupdh; + aufilt_decode_h *dech; +}; + +void aufilt_register(struct list *aufiltl, struct aufilt *af); +void aufilt_unregister(struct aufilt *af); +void aufilt_enable(struct list *aufiltl, const char *name, bool enable); + + +/* + * Log + */ + +enum log_level { + LEVEL_DEBUG = 0, + LEVEL_INFO, + LEVEL_WARN, + LEVEL_ERROR, +}; + +typedef void (log_h)(uint32_t level, const char *msg); + +struct log { + struct le le; + log_h *h; +}; + +void log_register_handler(struct log *logh); +void log_unregister_handler(struct log *logh); +void log_level_set(enum log_level level); +enum log_level log_level_get(void); +const char *log_level_name(enum log_level level); +void log_enable_debug(bool enable); +void log_enable_info(bool enable); +void log_enable_stdout(bool enable); +void log_enable_timestamps(bool enable); +void log_enable_color(bool enable); +void vlog(enum log_level level, const char *fmt, va_list ap); +void loglv(enum log_level level, const char *fmt, ...); +void debug(const char *fmt, ...); +void info(const char *fmt, ...); +void warning(const char *fmt, ...); + + +/* + * Menc - Media encryption (for RTP) + */ + +struct menc; +struct menc_sess; +struct menc_media; + +/** Defines a media encryption event */ +enum menc_event { + MENC_EVENT_SECURE, /**< Media is secured */ + MENC_EVENT_VERIFY_REQUEST, /**< Request user to verify a code */ + MENC_EVENT_PEER_VERIFIED, /**< Peer was verified successfully */ +}; + + +typedef void (menc_event_h)(enum menc_event event, const char *prm, + struct stream *strm, void *arg); + +typedef void (menc_error_h)(int err, void *arg); + +typedef int (menc_sess_h)(struct menc_sess **sessp, struct sdp_session *sdp, + bool offerer, menc_event_h *eventh, + menc_error_h *errorh, void *arg); + +typedef int (menc_media_h)(struct menc_media **mp, struct menc_sess *sess, + struct rtp_sock *rtp, + struct udp_sock *rtpsock, struct udp_sock *rtcpsock, + const struct sa *raddr_rtp, + const struct sa *raddr_rtcp, + struct sdp_media *sdpm, + const struct stream *strm); + +typedef int (menc_txrekey_h)(struct menc_media *m); + +struct menc { + struct le le; + const char *id; + const char *sdp_proto; + bool wait_secure; + menc_sess_h *sessh; + menc_media_h *mediah; + menc_txrekey_h *txrekeyh; +}; + +void menc_register(struct list *mencl, struct menc *menc); +void menc_unregister(struct menc *menc); +const struct menc *menc_find(const struct list *mencl, const char *id); +const char *menc_event_name(enum menc_event event); + + +/* + * Net - Networking + */ + +struct network; + +typedef void (net_change_h)(void *arg); + +int net_alloc(struct network **netp, const struct config_net *cfg); +int net_use_nameserver(struct network *net, + const struct sa *srvv, size_t srvc); +int net_set_address(struct network *net, const struct sa *ip); +int net_add_address(struct network *net, const struct sa *ip); +int net_add_address_ifname(struct network *net, const struct sa *sa, + const char *ifname); +int net_flush_addresses(struct network *net); +int net_rm_address(struct network *net, const struct sa *ip); +bool net_af_enabled(const struct network *net, int af); +int net_set_af(struct network *net, int af); +void net_dns_refresh(struct network *net); +int net_dns_debug(struct re_printf *pf, const struct network *net); +int net_debug(struct re_printf *pf, const struct network *net); +bool net_laddr_apply(const struct network *net, net_ifaddr_h *ifh, void *arg); +bool net_ifaddr_filter(const struct network *net, const char *ifname, + const struct sa *sa); +const struct sa *net_laddr_af(const struct network *net, int af); +const struct sa *net_laddr_for(const struct network *net, + const struct sa *dst); +bool net_is_laddr(const struct network *net, struct sa *sa); +int net_set_dst_scopeid(const struct network *net, struct sa *dst); +struct dnsc *net_dnsc(const struct network *net); +int net_set_dnsc(struct network *net, struct dnsc *dnsc); + + +/* + * Play - audio file player + */ + +struct play; +struct player; +typedef void (play_finish_h)(struct play *play, void *arg); + +int play_file(struct play **playp, struct player *player, + const char *filename, int repeat, + const char *play_mod, const char *play_dev); +int play_tone(struct play **playp, struct player *player, + struct mbuf *tone, + uint32_t srate, uint8_t ch, int repeat, + const char *play_mod, const char *play_dev); +void play_set_finish_handler(struct play *play, play_finish_h *fh, void *arg); +int play_init(struct player **playerp); +void play_set_path(struct player *player, const char *path); + + +/* + * User Agent + */ + +struct ua; + +/** Events from User-Agent */ +enum ua_event { + UA_EVENT_REGISTERING = 0, + UA_EVENT_REGISTER_OK, + UA_EVENT_REGISTER_FAIL, + UA_EVENT_UNREGISTERING, + UA_EVENT_FALLBACK_OK, + UA_EVENT_FALLBACK_FAIL, + UA_EVENT_MWI_NOTIFY, + UA_EVENT_CREATE, + UA_EVENT_SHUTDOWN, + UA_EVENT_EXIT, + + UA_EVENT_CALL_INCOMING, + UA_EVENT_CALL_OUTGOING, + UA_EVENT_CALL_RINGING, + UA_EVENT_CALL_PROGRESS, + UA_EVENT_CALL_ANSWERED, + UA_EVENT_CALL_ESTABLISHED, + UA_EVENT_CALL_CLOSED, + UA_EVENT_CALL_TRANSFER, + UA_EVENT_CALL_REDIRECT, + UA_EVENT_CALL_TRANSFER_FAILED, + UA_EVENT_CALL_DTMF_START, + UA_EVENT_CALL_DTMF_END, + UA_EVENT_CALL_RTPESTAB, + UA_EVENT_CALL_RTCP, + UA_EVENT_CALL_MENC, + UA_EVENT_VU_TX, + UA_EVENT_VU_RX, + UA_EVENT_AUDIO_ERROR, + UA_EVENT_CALL_LOCAL_SDP, /**< param: offer or answer */ + UA_EVENT_CALL_REMOTE_SDP, /**< param: offer or answer */ + UA_EVENT_CALL_HOLD, /**< Call put on-hold by peer */ + UA_EVENT_CALL_RESUME, /**< Call resumed by peer */ + UA_EVENT_REFER, + UA_EVENT_MODULE, + UA_EVENT_END_OF_FILE, + UA_EVENT_CUSTOM, + UA_EVENT_SIPSESS_CONN, + + UA_EVENT_MAX, +}; + + +struct bevent; + + +/** SIP auto answer method */ +enum answer_method { + ANSM_NONE = 0, + ANSM_RFC5373, + ANSM_CALLINFO, + ANSM_ALERTINFO, +}; + +/** Defines the User-Agent event handler */ +typedef void (ua_event_h)(struct ua *ua, enum ua_event ev, + struct call *call, const char *prm, void *arg); +typedef void (bevent_h)(enum ua_event ev, struct bevent *event, void *arg); +typedef void (options_resp_h)(int err, const struct sip_msg *msg, void *arg); +typedef void (refer_resp_h)(int err, const struct sip_msg *msg, void *arg); + +typedef void (ua_exit_h)(void *arg); + +/* Multiple instances */ +int ua_alloc(struct ua **uap, const char *aor); +int ua_connect(struct ua *ua, struct call **callp, + const char *from_uri, const char *req_uri, + enum vidmode vmode); +int ua_connect_dir(struct ua *ua, struct call **callp, + const char *from_uri, const char *req_uri, + enum vidmode vmode, enum sdp_dir adir, enum sdp_dir vdir); +void ua_hangup(struct ua *ua, struct call *call, + uint16_t scode, const char *reason); +void ua_hangupf(struct ua *ua, struct call *call, + uint16_t scode, const char *reason, const char *fmt, ...); +int ua_accept(struct ua *ua, const struct sip_msg *msg); +int ua_answer(struct ua *ua, struct call *call, enum vidmode vmode); +int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode); +int ua_options_send(struct ua *ua, const char *uri, + options_resp_h *resph, void *arg); +int ua_refer_send(struct ua *ua, const char *uri, const char *referto, + refer_resp_h *resph, void *arg); +int ua_debug(struct re_printf *pf, const struct ua *ua); +int ua_state_json_api(struct odict *od, const struct ua *ua); +int ua_print_calls(struct re_printf *pf, const struct ua *ua); +int ua_print_status(struct re_printf *pf, const struct ua *ua); +int ua_print_supported(struct re_printf *pf, const struct ua *ua); +int ua_update_account(struct ua *ua); +int ua_register(struct ua *ua); +int ua_fallback(struct ua *ua); +void ua_unregister(struct ua *ua); +void ua_stop_register(struct ua *ua); +bool ua_isregistered(const struct ua *ua); +bool ua_regfailed(const struct ua *ua); +unsigned ua_destroy(struct ua *ua); +void ua_pub_gruu_set(struct ua *ua, const struct pl *pval); +const char *ua_cuser(const struct ua *ua); +const char *ua_local_cuser(const struct ua *ua); +struct account *ua_account(const struct ua *ua); +const char *ua_outbound(const struct ua *ua); +struct call *ua_call(const struct ua *ua); +struct list *ua_calls(const struct ua *ua); +enum presence_status ua_presence_status(const struct ua *ua); +void ua_presence_status_set(struct ua *ua, enum presence_status status); +void ua_set_catchall(struct ua *ua, bool enabled); +int ua_add_xhdr_filter(struct ua *ua, const char *hdr_name); +int ua_set_custom_hdrs(struct ua *ua, struct list *custom_hdrs); +int ua_add_custom_hdr(struct ua *ua, const struct pl *name, + const struct pl *value); +int ua_rm_custom_hdr(struct ua *ua, struct pl *name); +int ua_enable_autoanswer(struct ua *ua, int32_t adelay, + enum answer_method met); +int ua_disable_autoanswer(struct ua *ua, enum answer_method met); +int ua_call_alloc(struct call **callp, struct ua *ua, + enum vidmode vidmode, const struct sip_msg *msg, + struct call *xcall, const char *local_uri, + bool use_rtp); +struct call *ua_find_call_state(const struct ua *ua, enum call_state st); +struct call *ua_find_call_msg(struct ua *ua, const struct sip_msg *msg); +int ua_raise(struct ua *ua); +int ua_set_autoanswer_value(struct ua *ua, const char *value); +void ua_add_extension(struct ua *ua, const char *extension); +void ua_remove_extension(struct ua *ua, const char *extension); +bool ua_req_allowed(const struct ua *ua, const struct sip_msg *msg); +bool ua_req_check_origin(const struct ua *ua, const struct sip_msg *msg); + + +/* One instance */ +int ua_init(const char *software, bool udp, bool tcp, bool tls); +void ua_close(void); +void ua_stop_all(bool forced); +int uag_hold_resume(struct call *call); +int uag_hold_others(struct call *call); +void uag_set_nodial(bool nodial); +bool uag_nodial(void); +void uag_set_exit_handler(ua_exit_h *exith, void *arg); +void uag_enable_sip_trace(bool enable); +int uag_reset_transp(bool reg, bool reinvite); +void uag_set_sub_handler(sip_msg_h *subh); +int uag_set_extra_params(const char *eprm); +int uag_enable_transport(enum sip_transp tp, bool en); +struct ua *uag_find(const struct pl *cuser); +struct ua *uag_find_msg(const struct sip_msg *msg); +struct ua *uag_find_aor(const char *aor); +struct ua *uag_find_param(const char *name, const char *val); +struct ua *uag_find_requri_pl(const struct pl *requri); +struct ua *uag_find_requri(const char *requri); +struct sip *uag_sip(void); +struct list *uag_list(void); +uint32_t uag_call_count(void); +struct tls *uag_tls(void); +struct sipsess_sock *uag_sipsess_sock(void); +struct sipevent_sock *uag_sipevent_sock(void); +struct call *uag_call_find(const char *id); +void uag_filter_calls(call_list_h *listh, call_match_h *matchh, void *arg); + + +/* + * User Interface + */ + +struct ui_sub { + struct list uil; /**< List of UIs (struct ui) */ + struct cmd_ctx *uictx; /**< Command context */ +}; + +typedef int (ui_output_h)(const char *str); + +/** Defines a User-Interface module */ +struct ui { + struct le le; /**< Linked-list element */ + const char *name; /**< Name of the UI-module */ + ui_output_h *outputh; /**< Handler for output strings (optional) */ +}; + +void ui_register(struct ui_sub *uis, struct ui *ui); +void ui_unregister(struct ui *ui); + +void ui_reset(struct ui_sub *uis); +void ui_input_key(struct ui_sub *uis, char key, struct re_printf *pf); +void ui_input_str(const char *str); +int ui_input_pl(struct re_printf *pf, const struct pl *pl); +int ui_input_long_command(struct re_printf *pf, const struct pl *pl); +void ui_output(struct ui_sub *uis, const char *fmt, ...); +bool ui_isediting(const struct ui_sub *uis); +int ui_password_prompt(char **passwordp); + + +/* + * Command interface + */ + +/* special keys */ +#define KEYCODE_NONE (0x00) /* No key */ +#define KEYCODE_REL (0x04) /* Key was released */ +#define KEYCODE_ESC (0x1b) /* Escape key */ + + +/** Command flags */ +enum { + CMD_PRM = (1<<0), /**< Command with parameter */ +}; + +/** Command arguments */ +struct cmd_arg { + char key; /**< Which key was pressed */ + char *prm; /**< Optional parameter */ + void *data; /**< Application data */ +}; + +/** Defines a command */ +struct cmd { + const char *name; /**< Long command */ + char key; /**< Short command */ + int flags; /**< Optional command flags */ + const char *desc; /**< Description string */ + re_printf_h *h; /**< Command handler */ +}; + +struct cmd_ctx; +struct commands; + + +int cmd_init(struct commands **commandsp); +int cmd_register(struct commands *commands, + const struct cmd *cmdv, size_t cmdc); +void cmd_unregister(struct commands *commands, const struct cmd *cmdv); +int cmd_process(struct commands *commands, struct cmd_ctx **ctxp, char key, + struct re_printf *pf, void *data); +int cmd_process_long(struct commands *commands, const char *str, size_t len, + struct re_printf *pf_resp, void *data); +int cmd_print(struct re_printf *pf, const struct commands *commands); +const struct cmd *cmd_find_long(const struct commands *commands, + const char *name); +struct cmds *cmds_find(const struct commands *commands, + const struct cmd *cmdv); + + +/* + * Video Source + */ + +struct vidsrc; +struct vidsrc_st; + +/** Video Source parameters */ +struct vidsrc_prm { + double fps; /**< Wanted framerate */ + int fmt; /**< Wanted pixel format (enum vidfmt) */ +}; + +struct vidpacket { + uint8_t *buf; /**< Buffer memory */ + size_t size; /**< Size of buffer */ + uint64_t timestamp; /**< Timestamp in VIDEO_TIMEBASE units */ + bool keyframe; /**< True=keyframe, False=deltaframe */ + bool picup; /**< Picture update requested */ +}; + +/* Declare function pointer */ +typedef void (vidsrc_packet_h)(struct vidpacket *packet, void *arg); + +/** + * Provides video frames to the core + * + * @param frame Video frame + * @param timestamp Frame timestamp in VIDEO_TIMEBASE units + * @param arg Handler argument + */ +typedef void (vidsrc_frame_h)(struct vidframe *frame, uint64_t timestamp, + void *arg); +typedef void (vidsrc_error_h)(int err, void *arg); + +typedef int (vidsrc_alloc_h)(struct vidsrc_st **vsp, const struct vidsrc *vs, + struct vidsrc_prm *prm, + const struct vidsz *size, + const char *fmt, const char *dev, + vidsrc_frame_h *frameh, + vidsrc_packet_h *packeth, + vidsrc_error_h *errorh, void *arg); + +typedef void (vidsrc_update_h)(struct vidsrc_st *st, struct vidsrc_prm *prm, + const char *dev); + +/** Defines a video source */ +struct vidsrc { + struct le le; + const char *name; + struct list dev_list; + vidsrc_alloc_h *alloch; + vidsrc_update_h *updateh; +}; + +int vidsrc_register(struct vidsrc **vp, struct list *vidsrcl, const char *name, + vidsrc_alloc_h *alloch, vidsrc_update_h *updateh); +const struct vidsrc *vidsrc_find(const struct list *vidsrcl, const char *name); +int vidsrc_alloc(struct vidsrc_st **stp, struct list *vidsrcl, + const char *name, + struct vidsrc_prm *prm, + const struct vidsz *size, const char *fmt, const char *dev, + vidsrc_frame_h *frameh, vidsrc_packet_h *packeth, + vidsrc_error_h *errorh, void *arg); + + +/* + * Video Display + */ + +struct vidisp; +struct vidisp_st; + +/** Video Display parameters */ +struct vidisp_prm { + bool fullscreen; /**< Enable fullscreen display */ +}; + +typedef void (vidisp_resize_h)(const struct vidsz *size, void *arg); + +typedef int (vidisp_alloc_h)(struct vidisp_st **vp, + const struct vidisp *vd, struct vidisp_prm *prm, + const char *dev, + vidisp_resize_h *resizeh, void *arg); +typedef int (vidisp_update_h)(struct vidisp_st *st, bool fullscreen, + int orient, const struct vidrect *window); +typedef int (vidisp_disp_h)(struct vidisp_st *st, const char *title, + const struct vidframe *frame, uint64_t timestamp); +typedef void (vidisp_hide_h)(struct vidisp_st *st); + +/** Defines a Video display */ +struct vidisp { + struct le le; + const char *name; + vidisp_alloc_h *alloch; + vidisp_update_h *updateh; + vidisp_disp_h *disph; + vidisp_hide_h *hideh; +}; + +int vidisp_register(struct vidisp **vp, struct list *vidispl, const char *name, + vidisp_alloc_h *alloch, vidisp_update_h *updateh, + vidisp_disp_h *disph, vidisp_hide_h *hideh); +int vidisp_alloc(struct vidisp_st **stp, struct list *vidispl, + const char *name, + struct vidisp_prm *prm, const char *dev, + vidisp_resize_h *resizeh, void *arg); +const struct vidisp *vidisp_find(const struct list *vidispl, const char *name); + + +/* + * Audio Codec + */ + +/** Audio Codec parameters */ +struct auenc_param { + uint32_t bitrate; /**< Wanted bitrate in [bit/s] */ +}; + +struct auenc_state; +struct audec_state; +struct aucodec; + +typedef int (auenc_update_h)(struct auenc_state **aesp, + const struct aucodec *ac, + struct auenc_param *prm, const char *fmtp); +typedef int (auenc_encode_h)(struct auenc_state *aes, + bool *marker, uint8_t *buf, size_t *len, + int fmt, const void *sampv, size_t sampc); + +typedef int (audec_update_h)(struct audec_state **adsp, + const struct aucodec *ac, const char *fmtp); +typedef int (audec_decode_h)(struct audec_state *ads, + int fmt, void *sampv, size_t *sampc, + bool marker, const uint8_t *buf, size_t len); +typedef int (audec_plc_h)(struct audec_state *ads, + int fmt, void *sampv, size_t *sampc, + const uint8_t *buf, size_t len); + +struct aucodec { + struct le le; + const char *pt; + const char *name; + uint32_t srate; /* Audio samplerate */ + uint32_t crate; /* RTP Clock rate */ + uint8_t ch; + uint8_t pch; /* RTP packet channels */ + uint32_t ptime; /* Packet time in [ms] (optional) */ + const char *fmtp; + auenc_update_h *encupdh; + auenc_encode_h *ench; + audec_update_h *decupdh; + audec_decode_h *dech; + audec_plc_h *plch; + sdp_fmtp_enc_h *fmtp_ench; + sdp_fmtp_cmp_h *fmtp_cmph; +}; + +void aucodec_register(struct list *aucodecl, struct aucodec *ac); +void aucodec_unregister(struct aucodec *ac); +const struct aucodec *aucodec_find(const struct list *aucodecl, + const char *name, uint32_t srate, + uint8_t ch); + + +/* + * Video Codec + */ + +/** Video Codec parameters */ +struct videnc_param { + unsigned bitrate; /**< Encoder bitrate in [bit/s] */ + unsigned pktsize; /**< RTP packetsize in [bytes] */ + double fps; /**< Video framerate (max) */ + uint32_t max_fs; +}; + +struct videnc_state; +struct viddec_state; +struct vidcodec; + +struct viddec_packet { + bool intra; /**< True=keyframe, False=deltaframe */ + const struct rtp_header *hdr; /**< RTP Header */ + uint64_t timestamp; /**< Timestamp in VIDEO_TIMEBASE units */ + struct mbuf *mb; /**< RTP Buffer memory */ +}; + +typedef int (videnc_packet_h)(bool marker, uint64_t rtp_ts, + const uint8_t *hdr, size_t hdr_len, + const uint8_t *pld, size_t pld_len, + const struct video *vid); + +typedef int (videnc_update_h)(struct videnc_state **vesp, + const struct vidcodec *vc, + struct videnc_param *prm, const char *fmtp, + videnc_packet_h *pkth, const struct video *vid); + +typedef int (videnc_encode_h)(struct videnc_state *ves, bool update, + const struct vidframe *frame, + uint64_t timestamp); + +typedef int (videnc_packetize_h)(struct videnc_state *ves, + const struct vidpacket *packet); + +typedef int(viddec_update_h)(struct viddec_state **vdsp, + const struct vidcodec *vc, const char *fmtp, + const struct video *vid); + +typedef int (viddec_decode_h)(struct viddec_state *vds, struct vidframe *frame, + struct viddec_packet *pkt); + +struct vidcodec { + struct le le; + const char *pt; + const char *name; + const char *variant; + const char *fmtp; + videnc_update_h *encupdh; + videnc_encode_h *ench; + viddec_update_h *decupdh; + viddec_decode_h *dech; + sdp_fmtp_enc_h *fmtp_ench; + sdp_fmtp_cmp_h *fmtp_cmph; + videnc_packetize_h *packetizeh; +}; + +void vidcodec_register(struct list *vidcodecl, struct vidcodec *vc); +void vidcodec_unregister(struct vidcodec *vc); +const struct vidcodec *vidcodec_find(const struct list *vidcodecl, + const char *name, const char *variant); +const struct vidcodec *vidcodec_find_encoder(const struct list *vidcodecl, + const char *name); +const struct vidcodec *vidcodec_find_decoder(const struct list *vidcodecl, + const char *name); + + +/* + * Video Filter + */ + +struct vidfilt; + +/* Base class */ +struct vidfilt_enc_st { + const struct vidfilt *vf; + struct le le; +}; + +struct vidfilt_dec_st { + const struct vidfilt *vf; + struct le le; +}; + +/** Video Filter Parameters */ +struct vidfilt_prm { + unsigned width; /**< Picture width */ + unsigned height; /**< Picture height */ + int fmt; /**< Pixel format (enum vidfmt) */ + double fps; /**< Video framerate */ +}; + +typedef int (vidfilt_encupd_h)(struct vidfilt_enc_st **stp, void **ctx, + const struct vidfilt *vf, + struct vidfilt_prm *prm, + const struct video *vid); +typedef int (vidfilt_encode_h)(struct vidfilt_enc_st *st, + struct vidframe *frame, uint64_t *timestamp); + +typedef int (vidfilt_decupd_h)(struct vidfilt_dec_st **stp, void **ctx, + const struct vidfilt *vf, + struct vidfilt_prm *prm, + const struct video *vid); +typedef int (vidfilt_decode_h)(struct vidfilt_dec_st *st, + struct vidframe *frame, uint64_t *timestamp); + +struct vidfilt { + struct le le; + const char *name; + vidfilt_encupd_h *encupdh; + vidfilt_encode_h *ench; + vidfilt_decupd_h *decupdh; + vidfilt_decode_h *dech; +}; + +void vidfilt_register(struct list *vidfiltl, struct vidfilt *vf); +void vidfilt_unregister(struct vidfilt *vf); +int vidfilt_enc_append(struct list *filtl, void **ctx, + const struct vidfilt *vf, struct vidfilt_prm *prm, + const struct video *vid); +int vidfilt_dec_append(struct list *filtl, void **ctx, + const struct vidfilt *vf, struct vidfilt_prm *prm, + const struct video *vid); + + +/* + * Audio stream + */ + +struct audio; +struct stream_param; +struct mnat; +struct mnat_sess; + +typedef void (audio_event_h)(int key, bool end, void *arg); +typedef void (audio_level_h)(bool tx, double lvl, void *arg); +typedef void (audio_err_h)(int err, const char *str, void *arg); + +int audio_alloc(struct audio **ap, struct list *streaml, + const struct stream_param *stream_prm, + const struct config *cfg, + struct account *acc, struct sdp_session *sdp_sess, + const struct mnat *mnat, struct mnat_sess *mnat_sess, + const struct menc *menc, struct menc_sess *menc_sess, + uint32_t ptime, const struct list *aucodecl, bool offerer, + audio_event_h *eventh, audio_level_h *levelh, + audio_err_h *errh, void *arg); +void audio_mute(struct audio *a, bool muted); +bool audio_ismuted(const struct audio *a); +int audio_set_devicename(struct audio *a, const char *src, const char *play); +int audio_set_source(struct audio *au, const char *mod, const char *device); +int audio_set_player(struct audio *au, const char *mod, const char *device); +void audio_level_put(const struct audio *au, bool tx, double lvl); +int audio_level_get(const struct audio *au, double *level); +int audio_debug(struct re_printf *pf, const struct audio *a); +struct stream *audio_strm(const struct audio *au); +uint64_t audio_jb_current_value(const struct audio *au); +int audio_set_bitrate(struct audio *au, uint32_t bitrate); +bool audio_rxaubuf_started(const struct audio *au); +int audio_update(struct audio *a); +int audio_start(struct audio *a); +int audio_start_source(struct audio *a, struct list *ausrcl, + struct list *aufiltl); +void audio_stop(struct audio *a); +bool audio_started(const struct audio *a); +void audio_set_hold(struct audio *au, bool hold); +int audio_set_conference(struct audio *au, bool conference); +bool audio_is_conference(const struct audio *au); +int audio_encoder_set(struct audio *a, const struct aucodec *ac, + int pt_tx, const char *params); +int audio_decoder_set(struct audio *a, const struct aucodec *ac, + int pt_rx, const char *params); +const struct aucodec *audio_codec(const struct audio *au, bool tx); +struct config_audio *audio_config(struct audio *au); +bool audio_txtelev_empty(const struct audio *au); +void audio_call_telev_handler(const struct audio *au, int key, bool end); + + +/* + * Video stream + */ + +struct video; + +typedef void (video_err_h)(int err, const char *str, void *arg); + +int video_alloc(struct video **vp, struct list *streaml, + const struct stream_param *stream_prm, + const struct config *cfg, + const struct account *acc, + struct sdp_session *sdp_sess, + const struct mnat *mnat, struct mnat_sess *mnat_sess, + const struct menc *menc, struct menc_sess *menc_sess, + const char *content, const struct list *vidcodecl, + const struct list *vidfiltl, bool offerer, + video_err_h *errh, void *arg); +int video_encoder_set(struct video *v, struct vidcodec *vc, + int pt_tx, const char *params); +int video_update(struct video *v, const char *peer); +int video_start_source(struct video *v); +int video_start_display(struct video *v, const char *peer); +void video_stop_display(struct video *v); +void video_stop(struct video *v); +int video_set_fullscreen(struct video *v, bool fs); +void video_vidsrc_set_device(struct video *v, const char *dev); +int video_set_source(struct video *v, const char *name, const char *dev); +void video_set_devicename(struct video *v, const char *src, const char *disp); +const char *video_get_src_dev(const struct video *v); +const char *video_get_disp_dev(const struct video *v); +int video_debug(struct re_printf *pf, const struct video *v); +struct stream *video_strm(const struct video *v); +const struct vidcodec *video_codec(const struct video *vid, bool tx); +void video_sdp_attr_decode(struct video *v); +void video_req_keyframe(struct video *vid); + +double video_calc_seconds(uint64_t rtp_ts); +double video_timestamp_to_seconds(uint64_t timestamp); +uint64_t video_calc_rtp_timestamp_fix(uint64_t timestamp); +uint64_t video_calc_timebase_timestamp(uint64_t rtp_ts); + + +/* + * Generic stream + */ + +/** Common parameters for media stream */ +struct stream_param { + bool use_rtp; /**< Enable or disable RTP */ + bool rtcp_mux; /**< Enable or disable rtcp_mux */ + int af; /**< Wanted address family */ + const char *cname; /**< Canonical name */ + const char *peer; /**< Peer uri/name or identifier */ +}; + +struct jbuf_stat; + +typedef void (stream_mnatconn_h)(struct stream *strm, void *arg); +typedef void (stream_rtpestab_h)(struct stream *strm, void *arg); +typedef void (stream_rtcp_h)(struct stream *strm, + struct rtcp_msg *msg, void *arg); +typedef void (stream_error_h)(struct stream *strm, int err, void *arg); + +int stream_update(struct stream *s); +const struct rtcp_stats *stream_rtcp_stats(const struct stream *strm); +int stream_jbuf_stats(const struct stream *strm, struct jbuf_stat *s); +struct sdp_media *stream_sdpmedia(const struct stream *s); +uint32_t stream_metric_get_tx_n_packets(const struct stream *strm); +uint32_t stream_metric_get_tx_n_bytes(const struct stream *strm); +uint32_t stream_metric_get_tx_n_err(const struct stream *strm); +uint32_t stream_metric_get_tx_bitrate(const struct stream *strm); +double stream_metric_get_tx_avg_bitrate(const struct stream *strm); +uint32_t stream_metric_get_rx_n_packets(const struct stream *strm); +uint32_t stream_metric_get_rx_n_bytes(const struct stream *strm); +uint32_t stream_metric_get_rx_n_err(const struct stream *strm); +uint32_t stream_metric_get_rx_bitrate(const struct stream *strm); +double stream_metric_get_rx_avg_bitrate(const struct stream *strm); +void stream_set_secure(struct stream *strm, bool secure); +bool stream_is_secure(const struct stream *strm); +int stream_start_mediaenc(struct stream *strm); +int stream_start_rtcp(const struct stream *strm); +int stream_enable(struct stream *strm, bool enable); +int stream_enable_tx(struct stream *strm, bool enable); +int stream_enable_rx(struct stream *strm, bool enable); +void stream_mnat_attr(struct stream *strm, const char *name, + const char *value); +void stream_set_session_handlers(struct stream *strm, + stream_mnatconn_h *mnatconnh, + stream_rtpestab_h *rtpestabh, + stream_rtcp_h *rtcph, + stream_error_h *errorh, void *arg); +struct stream *stream_lookup_mid(const struct list *streaml, + const char *mid, size_t len); +const char *stream_name(const struct stream *strm); +const char *stream_cname(const struct stream *strm); +const char *stream_peer(const struct stream *strm); +int stream_bundle_init(struct stream *strm, bool offerer); +int stream_debug(struct re_printf *pf, const struct stream *s); +void stream_enable_rtp_timeout(struct stream *strm, uint32_t timeout_ms); + + +/** + * Jitter Buffer + */ +struct jbuf; +struct rtp_header; + +/** Jitter buffer statistics */ +struct jbuf_stat { + uint32_t n_put; /**< Number of frames put into jitter buffer */ + uint32_t n_get; /**< Number of frames got from jitter buffer */ + uint32_t n_oos; /**< Number of out-of-sequence frames */ + uint32_t n_dups; /**< Number of duplicate frames detected */ + uint32_t n_late; /**< Number of frames arriving too late */ + uint32_t n_lost; /**< Number of lost frames */ + uint32_t n_overflow; /**< Number of overflows */ + uint32_t n_underflow; /**< Number of underflows */ + uint32_t n_flush; /**< Number of times jitter buffer flushed */ +}; + + +int jbuf_alloc(struct jbuf **jbp, uint32_t min, uint32_t max); +int jbuf_set_type(struct jbuf *jb, enum jbuf_type jbtype); +void jbuf_set_gnack(struct jbuf *jb, struct rtp_sock *rtp); +int jbuf_put(struct jbuf *jb, const struct rtp_header *hdr, void *mem); +int jbuf_get(struct jbuf *jb, struct rtp_header *hdr, void **mem); +int jbuf_drain(struct jbuf *jb, struct rtp_header *hdr, void **mem); +void jbuf_flush(struct jbuf *jb); +int jbuf_stats(const struct jbuf *jb, struct jbuf_stat *jstat); +int jbuf_debug(struct re_printf *pf, const struct jbuf *jb); +uint32_t jbuf_frames(const struct jbuf *jb); +uint32_t jbuf_packets(const struct jbuf *jb); + + +/* + * STUN URI + */ + +/** Defines the STUN uri scheme */ +enum stun_scheme { + STUN_SCHEME_STUN, /**< STUN scheme */ + STUN_SCHEME_STUNS, /**< Secure STUN scheme */ + STUN_SCHEME_TURN, /**< TURN scheme */ + STUN_SCHEME_TURNS, /**< Secure TURN scheme */ +}; + +/** Defines a STUN/TURN uri */ +struct stun_uri { + enum stun_scheme scheme; /**< STUN Scheme */ + char *host; /**< Hostname or IP-address */ + uint16_t port; /**< Port number */ + int proto; /**< Transport protocol */ +}; + +int stunuri_decode(struct stun_uri **sup, const struct pl *pl); +int stunuri_set_host(struct stun_uri *su, const char *host); +int stunuri_set_port(struct stun_uri *su, uint16_t port); +int stunuri_print(struct re_printf *pf, const struct stun_uri *su); +const char *stunuri_scheme_name(enum stun_scheme scheme); + + +/* + * Media NAT + */ + +struct mnat; +struct mnat_sess; +struct mnat_media; + +typedef void (mnat_estab_h)(int err, uint16_t scode, const char *reason, + void *arg); + +typedef void (mnat_connected_h)(const struct sa *raddr1, + const struct sa *raddr2, void *arg); + + +typedef int (mnat_sess_h)(struct mnat_sess **sessp, + const struct mnat *mnat, struct dnsc *dnsc, + int af, const struct stun_uri *srv, + const char *user, const char *pass, + struct sdp_session *sdp, bool offerer, + mnat_estab_h *estabh, void *arg); + +typedef int (mnat_media_h)(struct mnat_media **mp, struct mnat_sess *sess, + struct udp_sock *sock1, struct udp_sock *sock2, + struct sdp_media *sdpm, + mnat_connected_h *connh, void *arg); + +typedef int (mnat_update_h)(struct mnat_sess *sess); + +typedef void (mnat_attr_h)(struct mnat_media *mm, + const char *name, const char *value); + +struct mnat { + struct le le; + const char *id; + const char *ftag; + bool wait_connected; + mnat_sess_h *sessh; + mnat_media_h *mediah; + mnat_update_h *updateh; + mnat_attr_h *attrh; +}; + +void mnat_register(struct list *mnatl, struct mnat *mnat); +void mnat_unregister(struct mnat *mnat); +const struct mnat *mnat_find(const struct list *mnatl, const char *id); + + +/* + * SDP + */ + +bool sdp_media_has_media(const struct sdp_media *m); +int sdp_fingerprint_decode(const char *attr, struct pl *hash, + uint8_t *md, size_t *sz); + + +/* + * SIP Request + */ + +int sip_req_send(struct ua *ua, const char *method, const char *uri, + sip_resp_h *resph, void *arg, const char *fmt, ...); + + +/* + * Modules + */ + +#ifdef STATIC +#define DECL_EXPORTS(name) exports_ ##name +#else +#define DECL_EXPORTS(name) exports +#endif + + +int module_preload(const char *module); +int module_load(const char *path, const char *name); +void module_unload(const char *name); +void module_app_unload(void); + + +/* + * Generic event + */ + +int event_encode_dict(struct odict *od, struct ua *ua, enum ua_event ev, + struct call *call, const char *prm); +int odict_encode_bevent(struct odict *od, struct bevent *event); +int event_add_au_jb_stat(struct odict *od_parent, const struct call *call); +int uag_event_register(ua_event_h *eh, void *arg); +void uag_event_unregister(ua_event_h *eh); +int bevent_register(bevent_h *eh, void *arg); +void bevent_unregister(bevent_h *eh); +void ua_event(struct ua *ua, enum ua_event ev, struct call *call, + const char *fmt, ...); +int bevent_app_emit(enum ua_event ev, void *arg, const char *fmt, ...); +int bevent_ua_emit(enum ua_event ev, struct ua *ua, const char *fmt, ...); +int bevent_call_emit(enum ua_event ev, struct call *call, + const char *fmt, ...); +int bevent_sip_msg_emit(enum ua_event ev, const struct sip_msg *msg, + const char *fmt, ...); +void module_event(const char *module, const char *event, struct ua *ua, + struct call *call, const char *fmt, ...); +const char *uag_event_str(enum ua_event ev); +struct call *bevent_get_call(const struct bevent *event); +struct ua *bevent_get_ua(const struct bevent *event); +const struct sip_msg *bevent_get_msg(const struct bevent *event); +void *bevent_get_apparg(const struct bevent *event); +enum ua_event bevent_get_type(const struct bevent *event); +const char *bevent_get_text(const struct bevent *event); +void bevent_set_error(struct bevent *event, int err); +void bevent_stop(struct bevent *event); + + +/* + * Baresip instance + */ + +int baresip_init(struct config *cfg); +void baresip_close(void); +struct network *baresip_network(void); +struct contacts *baresip_contacts(void); +struct commands *baresip_commands(void); +struct player *baresip_player(void); +struct message *baresip_message(void); +struct list *baresip_mnatl(void); +struct list *baresip_mencl(void); +struct list *baresip_aucodecl(void); +struct list *baresip_ausrcl(void); +struct list *baresip_auplayl(void); +struct list *baresip_aufiltl(void); +struct list *baresip_vidcodecl(void); +struct list *baresip_vidsrcl(void); +struct list *baresip_vidispl(void); +struct list *baresip_vidfiltl(void); +struct ui_sub *baresip_uis(void); + + +/* + * Dialing numbers helpers + */ + +int clean_number(char* str); + + +/* bundle */ + +int bundle_sdp_encode(struct sdp_session *sdp, const struct list *streaml); +int bundle_sdp_decode(struct sdp_session *sdp, struct list *streaml); + + +/* + * Session Description + */ + +/* RTCSdpType */ +enum sdp_type { + SDP_NONE, + SDP_OFFER, + SDP_ANSWER, + SDP_ROLLBACK /* special type */ +}; + +/* + * https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription + * + * format: + * + * { + * "type" : "answer", + * "sdp" : "v=0\r\ns=-\r\n..." + * } + */ +struct session_description { + enum sdp_type type; + struct mbuf *sdp; +}; + +int session_description_encode(struct odict **odp, + enum sdp_type type, struct mbuf *sdp); +int session_description_decode(struct session_description *sd, + struct mbuf *mb); +void session_description_reset(struct session_description *sd); +const char *sdptype_name(enum sdp_type type); + + +/* + * WebRTC Media Track + */ + +enum media_kind { + MEDIA_KIND_AUDIO, + MEDIA_KIND_VIDEO, +}; + +struct media_track; + +int mediatrack_start_audio(struct media_track *media, + struct list *ausrcl, struct list *aufiltl); +int mediatrack_start_video(struct media_track *media); +struct stream *media_get_stream(const struct media_track *media); +struct audio *media_get_audio(const struct media_track *media); +struct video *media_get_video(const struct media_track *media); +enum media_kind mediatrack_kind(const struct media_track *media); +const char *media_kind_name(enum media_kind kind); + + +/* + * WebRTC RTCPeerConnection + * + * https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection + */ + + +/* RTCPeerConnection.signalingState */ +enum signaling_st { + SS_STABLE, + SS_HAVE_LOCAL_OFFER, + SS_HAVE_REMOTE_OFFER +}; + + +/* RTCConfiguration */ +struct rtc_configuration { + struct stun_uri *ice_server; + const char *stun_user; + const char *credential; + bool offerer; +}; + +struct peer_connection; + +typedef void (peerconnection_gather_h)(void *arg); +typedef void (peerconnection_estab_h)(struct media_track *media, + void *arg); +typedef void (peerconnection_close_h)(int err, void *arg); + +int peerconnection_new(struct peer_connection **pcp, + const struct rtc_configuration *config, + const struct mnat *mnat, const struct menc *menc, + peerconnection_gather_h *gatherh, + peerconnection_estab_h, + peerconnection_close_h *closeh, void *arg); +int peerconnection_add_audio_track(struct peer_connection *pc, + const struct config *cfg, + struct list *aucodecl, enum sdp_dir dir); +int peerconnection_add_video_track(struct peer_connection *pc, + const struct config *cfg, + struct list *vidcodecl, enum sdp_dir dir); +int peerconnection_set_remote_descr(struct peer_connection *pc, + const struct session_description *sd); +int peerconnection_create_offer(struct peer_connection *sess, + struct mbuf **mb); +int peerconnection_create_answer(struct peer_connection *sess, + struct mbuf **mb); +int peerconnection_start_ice(struct peer_connection *pc); +void peerconnection_close(struct peer_connection *pc); +void peerconnection_add_ice_candidate(struct peer_connection *pc, + const char *cand, const char *mid); +enum signaling_st peerconnection_signaling(const struct peer_connection *pc); + + +/* + * HTTP functions + */ + +const char *http_extension_to_mimetype(const char *ext); +int http_reply_json(struct http_conn *conn, const char *sessid, + const struct odict *od); + + +#ifdef __cplusplus +} +#endif + + +#endif /* BARESIP_H__ */ diff --git a/distribution.video/baresip/lib/arm64-v8a/libbaresip.a b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a new file mode 100644 index 0000000..b043d60 Binary files /dev/null and b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a differ diff --git a/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev0 b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev0 new file mode 100644 index 0000000..b7cbc70 Binary files /dev/null and b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev0 differ diff --git a/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev1 b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev1 new file mode 100644 index 0000000..34fac5f Binary files /dev/null and b/distribution.video/baresip/lib/arm64-v8a/libbaresip.a_rev1 differ diff --git a/distribution.video/codec2/lib/arm64-v8a/libcodec2.a b/distribution.video/codec2/lib/arm64-v8a/libcodec2.a new file mode 100644 index 0000000..a05f730 Binary files /dev/null and b/distribution.video/codec2/lib/arm64-v8a/libcodec2.a differ diff --git a/distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a b/distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a new file mode 100644 index 0000000..924e7c0 Binary files /dev/null and b/distribution.video/cpu_features/lib/arm64-v8a/libcpu_features.a differ diff --git a/distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a b/distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a new file mode 100644 index 0000000..33bb2e4 Binary files /dev/null and b/distribution.video/cpu_features/lib/arm64-v8a/libndk_compat.a differ diff --git a/distribution.video/ffmpeg/include/libavcodec/jni.h b/distribution.video/ffmpeg/include/libavcodec/jni.h new file mode 100644 index 0000000..dd99e92 --- /dev/null +++ b/distribution.video/ffmpeg/include/libavcodec/jni.h @@ -0,0 +1,46 @@ +/* + * JNI public API functions + * + * Copyright (c) 2015-2016 Matthieu Bouron + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_JNI_H +#define AVCODEC_JNI_H + +/* + * Manually set a Java virtual machine which will be used to retrieve the JNI + * environment. Once a Java VM is set it cannot be changed afterwards, meaning + * you can call multiple times av_jni_set_java_vm with the same Java VM pointer + * however it will error out if you try to set a different Java VM. + * + * @param vm Java virtual machine + * @param log_ctx context used for logging, can be NULL + * @return 0 on success, < 0 otherwise + */ +int av_jni_set_java_vm(void *vm, void *log_ctx); + +/* + * Get the Java virtual machine which has been set with av_jni_set_java_vm. + * + * @param vm Java virtual machine + * @return a pointer to the Java virtual machine + */ +void *av_jni_get_java_vm(void *log_ctx); + +#endif /* AVCODEC_JNI_H */ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so b/distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so new file mode 100644 index 0000000..46f3220 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libavcodec.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so b/distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so new file mode 100644 index 0000000..b064943 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libavdevice.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so b/distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so new file mode 100644 index 0000000..33c1141 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libavfilter.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so b/distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so new file mode 100644 index 0000000..f364a69 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libavformat.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so b/distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so new file mode 100644 index 0000000..e7f587a Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libavutil.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so b/distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so new file mode 100644 index 0000000..2deef49 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libswresample.so differ diff --git a/distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so b/distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so new file mode 100644 index 0000000..aa81997 Binary files /dev/null and b/distribution.video/ffmpeg/lib/arm64-v8a/libswscale.so differ diff --git a/distribution.video/g7221/lib/arm64-v8a/libg722_1.a b/distribution.video/g7221/lib/arm64-v8a/libg722_1.a new file mode 100644 index 0000000..62c56bb Binary files /dev/null and b/distribution.video/g7221/lib/arm64-v8a/libg722_1.a differ diff --git a/distribution.video/g729/lib/arm64-v8a/libbcg729.a b/distribution.video/g729/lib/arm64-v8a/libbcg729.a new file mode 100644 index 0000000..881ccea Binary files /dev/null and b/distribution.video/g729/lib/arm64-v8a/libbcg729.a differ diff --git a/distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a b/distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a new file mode 100644 index 0000000..d64790f Binary files /dev/null and b/distribution.video/gzrtp/lib/arm64-v8a/libzrtpcppcore.a differ diff --git a/distribution.video/openssl/lib/arm64-v8a/libcrypto.a b/distribution.video/openssl/lib/arm64-v8a/libcrypto.a new file mode 100644 index 0000000..13c852b Binary files /dev/null and b/distribution.video/openssl/lib/arm64-v8a/libcrypto.a differ diff --git a/distribution.video/openssl/lib/arm64-v8a/libssl.a b/distribution.video/openssl/lib/arm64-v8a/libssl.a new file mode 100644 index 0000000..4a3b94f Binary files /dev/null and b/distribution.video/openssl/lib/arm64-v8a/libssl.a differ diff --git a/distribution.video/opus/lib/arm64-v8a/libopus.a b/distribution.video/opus/lib/arm64-v8a/libopus.a new file mode 100644 index 0000000..989137d Binary files /dev/null and b/distribution.video/opus/lib/arm64-v8a/libopus.a differ diff --git a/distribution.video/png/lib/arm64-v8a/libpng.a b/distribution.video/png/lib/arm64-v8a/libpng.a new file mode 100644 index 0000000..860a8a3 Binary files /dev/null and b/distribution.video/png/lib/arm64-v8a/libpng.a differ diff --git a/distribution.video/re/cmake/re-config.cmake b/distribution.video/re/cmake/re-config.cmake new file mode 100644 index 0000000..0927638 --- /dev/null +++ b/distribution.video/re/cmake/re-config.cmake @@ -0,0 +1,297 @@ +include(CheckIncludeFile) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(CheckTypeSize) +include(CheckCXXSourceCompiles) + +option(USE_MBEDTLS "Enable MbedTLS" OFF) + +find_package(Backtrace) +find_package(Threads REQUIRED) +find_package(ZLIB) + +if (USE_MBEDTLS) +find_package(MBEDTLS) +else() +find_package(OpenSSL "1.1.1") +endif() + +option(USE_OPENSSL "Enable OpenSSL" ${OPENSSL_FOUND}) +option(USE_UNIXSOCK "Enable Unix Domain Sockets" ON) +option(USE_TRACE "Enable Tracing helpers" OFF) + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to 'Debug' as none was specified.") + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." + FORCE) +endif() + +check_symbol_exists("arc4random" "stdlib.h" HAVE_ARC4RANDOM) +if(HAVE_ARC4RANDOM) + list(APPEND RE_DEFINITIONS HAVE_ARC4RANDOM) +endif() + +if(ZLIB_FOUND) + list(APPEND RE_DEFINITIONS USE_ZLIB) +endif() + +check_include_file(syslog.h HAVE_SYSLOG_H) +if(HAVE_SYSLOG_H) + list(APPEND RE_DEFINITIONS HAVE_SYSLOG) +endif() + +check_include_file(getopt.h HAVE_GETOPT_H) +if(HAVE_GETOPT_H) + list(APPEND RE_DEFINITIONS HAVE_GETOPT) +endif() + +check_include_file(unistd.h HAVE_UNISTD_H) +if(HAVE_UNISTD_H) + list(APPEND RE_DEFINITIONS HAVE_UNISTD_H) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + check_symbol_exists(res_init resolv.h HAVE_RESOLV) +else() + check_symbol_exists(res_ninit resolv.h HAVE_RESOLV) +endif() +if(HAVE_RESOLV AND ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + list(APPEND RE_DEFINITIONS HAVE_RESOLV) + set(RESOLV_LIBRARY) # Provided by libc +elseif(HAVE_RESOLV) + set(RESOLV_LIBRARY resolv) + list(APPEND RE_DEFINITIONS HAVE_RESOLV) +else() + set(RESOLV_LIBRARY) +endif() + +if(Backtrace_FOUND) + list(APPEND RE_DEFINITIONS HAVE_EXECINFO) +else() + set(Backtrace_LIBRARIES) +endif() + +check_function_exists(thrd_create HAVE_THREADS_FUN) +check_include_file(threads.h HAVE_THREADS_H) +if(HAVE_THREADS_FUN AND HAVE_THREADS_H) + set(HAVE_THREADS CACHE BOOL true) +endif() +if(HAVE_THREADS) + list(APPEND RE_DEFINITIONS HAVE_THREADS) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + check_function_exists(accept4 HAVE_ACCEPT4) + if(HAVE_ACCEPT4) + list(APPEND RE_DEFINITIONS HAVE_ACCEPT4) + endif() +endif() + +if(CMAKE_USE_PTHREADS_INIT) + list(APPEND RE_DEFINITIONS HAVE_PTHREAD) + set(HAVE_PTHREAD ON) +endif() + +if(UNIX) + check_symbol_exists(epoll_create "sys/epoll.h" HAVE_EPOLL) + if(HAVE_EPOLL) + list(APPEND RE_DEFINITIONS HAVE_EPOLL) + endif() + check_symbol_exists(kqueue "sys/types.h;sys/event.h" HAVE_KQUEUE) + if(HAVE_KQUEUE) + list(APPEND RE_DEFINITIONS HAVE_KQUEUE) + endif() +endif() + +check_include_file(sys/prctl.h HAVE_PRCTL) +if(HAVE_PRCTL) + list(APPEND RE_DEFINITIONS HAVE_PRCTL) +endif() + + +list(APPEND RE_DEFINITIONS + HAVE_ATOMIC + HAVE_SELECT + ) + +if(UNIX) + list(APPEND RE_DEFINITIONS + HAVE_PWD_H + HAVE_SETRLIMIT + HAVE_STRERROR_R + HAVE_STRINGS_H + HAVE_SYS_TIME_H + HAVE_UNAME + HAVE_SELECT_H + HAVE_SIGNAL + HAVE_FORK + ) + if(NOT ANDROID) + list(APPEND RE_DEFINITIONS HAVE_GETIFADDRS) + endif() + if(NOT IOS) + list(APPEND RE_DEFINITIONS HAVE_ROUTE_LIST) + endif() +endif() + + +if(MSVC) + list(APPEND RE_DEFINITIONS + HAVE_IO_H + _CRT_SECURE_NO_WARNINGS + ) +endif() + +if(WIN32) + list(APPEND RE_DEFINITIONS + WIN32 + _WIN32_WINNT=0x0600 + ) + + unset(CMAKE_EXTRA_INCLUDE_FILES) + set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;qos2.h") + check_type_size("QOS_FLOWID" HAVE_QOS_FLOWID BUILTIN_TYPES_ONLY) + check_type_size("PQOS_FLOWID" HAVE_PQOS_FLOWID BUILTIN_TYPES_ONLY) + unset(CMAKE_EXTRA_INCLUDE_FILES) + + if(HAVE_QOS_FLOWID) + list(APPEND RE_DEFINITIONS HAVE_QOS_FLOWID) + endif() + + if(HAVE_PQOS_FLOWID) + list(APPEND RE_DEFINITIONS HAVE_PQOS_FLOWID) + endif() +endif() + +if(USE_OPENSSL) + list(APPEND RE_DEFINITIONS + USE_DTLS + USE_OPENSSL + USE_OPENSSL_AES + USE_OPENSSL_HMAC + USE_TLS + ) +endif() + +if(USE_MBEDTLS) + list(APPEND RE_DEFINITIONS + USE_MBEDTLS + ) +endif() + +if(USE_UNIXSOCK) + list(APPEND RE_DEFINITIONS + HAVE_UNIXSOCK=1 + ) +else() + list(APPEND RE_DEFINITIONS + HAVE_UNIXSOCK=0 + ) +endif() + +if(USE_TRACE) + list(APPEND RE_DEFINITIONS + RE_TRACE_ENABLED + ) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + list(APPEND RE_DEFINITIONS DARWIN) + include_directories(/opt/local/include) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS") + list(APPEND RE_DEFINITIONS DARWIN) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + list(APPEND RE_DEFINITIONS FREEBSD) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + list(APPEND RE_DEFINITIONS OPENBSD) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + list(APPEND RE_DEFINITIONS LINUX) +endif() + + +list(APPEND RE_DEFINITIONS + ARCH="${CMAKE_SYSTEM_PROCESSOR}" + OS="${CMAKE_SYSTEM_NAME}" + $<$>:RELEASE> +) + +if(NOT ${CMAKE_BUILD_TYPE} MATCHES "[Rr]el") + if(Backtrace_FOUND) + set(CMAKE_ENABLE_EXPORTS ON) + endif() +endif() + + +############################################################################## +# +# Linking LIBS +# + +set(RE_LIBS Threads::Threads ${RESOLV_LIBRARY}) + +if(BACKTRACE_FOUND) + list(APPEND RE_LIBS ${Backtrace_LIBRARIES}) +endif() + +if(ZLIB_FOUND) + list(APPEND RE_LIBS ZLIB::ZLIB) +endif() + +if(USE_OPENSSL) + list(APPEND RE_LIBS OpenSSL::SSL OpenSSL::Crypto) +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + list(APPEND RE_LIBS + "-framework SystemConfiguration" "-framework CoreFoundation" + ) +endif() + +if(WIN32) + list(APPEND RE_LIBS + qwave + iphlpapi + wsock32 + ws2_32 + dbghelp + ) +else() + list(APPEND RE_LIBS m) +endif() + +if(UNIX) + list(APPEND RE_LIBS + ${CMAKE_DL_LIBS} + ) +endif() + + +############################################################################## +# +# Testing Atomic +# + +enable_language(CXX) + +set(ATOMIC_TEST_CODE " + #include + #include + std::atomic n8 (0); // riscv64 + std::atomic n64 (0); // armel, mipsel, powerpc + int main() { + ++n8; + ++n64; + return 0; + }") + +check_cxx_source_compiles("${ATOMIC_TEST_CODE}" atomic_test) + +if(NOT atomic_test) + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} atomic) + check_cxx_source_compiles("${ATOMIC_TEST_CODE}" atomic_test_lib) + if(NOT atomic_test_lib) + message(FATAL_ERROR "No builtin or libatomic support") + else() + list(APPEND RE_LIBS atomic) + endif() +endif() diff --git a/distribution.video/re/include/re.h b/distribution.video/re/include/re.h new file mode 100644 index 0000000..f00f1bc --- /dev/null +++ b/distribution.video/re/include/re.h @@ -0,0 +1,76 @@ +/** + * @file re.h Wrapper for all header files + * + * Copyright (C) 2010 Creytiv.com + */ + +#ifndef RE_H__ +#define RE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Basic types */ +#include "re_types.h" +#include "re_fmt.h" +#include "re_mbuf.h" +#include "re_msg.h" +#include "re_list.h" +#include "re_sa.h" + +/* Library modules */ +#include "re_aes.h" +#include "re_async.h" +#include "re_base64.h" +#include "re_bfcp.h" +#include "re_btrace.h" +#include "re_conf.h" +#include "re_convert.h" +#include "re_crc32.h" +#include "re_dns.h" +#include "re_h264.h" +#include "re_hash.h" +#include "re_hmac.h" +#include "re_http.h" +#include "re_httpauth.h" +#include "re_ice.h" +#include "re_net.h" +#include "re_main.h" +#include "re_md5.h" +#include "re_mem.h" +#include "re_mod.h" +#include "re_mqueue.h" +#include "re_odict.h" +#include "re_json.h" +#include "re_rtmp.h" +#include "re_rtp.h" +#include "re_rtpext.h" +#include "re_sdp.h" +#include "re_uri.h" +#include "re_sip.h" +#include "re_sipevent.h" +#include "re_sipreg.h" +#include "re_sipsess.h" +#include "re_stun.h" +#include "re_srtp.h" +#include "re_sys.h" +#include "re_tcp.h" +#include "re_telev.h" +#include "re_thread.h" +#include "re_tmr.h" +#include "re_trace.h" +#include "re_tls.h" +#include "re_turn.h" +#include "re_udp.h" +#include "re_unixsock.h" +#include "re_websock.h" +#include "re_shim.h" +#include "re_trice.h" +#include "re_pcp.h" + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/distribution.video/re/include/re_aes.h b/distribution.video/re/include/re_aes.h new file mode 100644 index 0000000..4559bad --- /dev/null +++ b/distribution.video/re/include/re_aes.h @@ -0,0 +1,27 @@ +/** + * @file re_aes.h Interface to AES (Advanced Encryption Standard) + * + * Copyright (C) 2010 Creytiv.com + */ + + +#ifndef AES_BLOCK_SIZE +#define AES_BLOCK_SIZE 16 +#endif + +/** AES mode */ +enum aes_mode { + AES_MODE_CTR, /**< AES Counter mode (CTR) */ + AES_MODE_GCM, /**< AES Galois Counter Mode (GCM) */ +}; + +struct aes; + +int aes_alloc(struct aes **stp, enum aes_mode mode, + const uint8_t *key, size_t key_bits, + const uint8_t *iv); +void aes_set_iv(struct aes *aes, const uint8_t *iv); +int aes_encr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len); +int aes_decr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len); +int aes_get_authtag(struct aes *aes, uint8_t *tag, size_t taglen); +int aes_authenticate(struct aes *aes, const uint8_t *tag, size_t taglen); diff --git a/distribution.video/re/include/re_async.h b/distribution.video/re/include/re_async.h new file mode 100644 index 0000000..921f565 --- /dev/null +++ b/distribution.video/re/include/re_async.h @@ -0,0 +1,19 @@ +/** + * @file re_async.h async + * + * Copyright (C) 2022 Sebastian Reimers + */ + +#ifndef RE_H_ASYNC__ +#define RE_H_ASYNC__ +struct re_async; + +typedef int(re_async_work_h)(void *arg); +typedef void(re_async_h)(int err, void *arg); + +int re_async_alloc(struct re_async **asyncp, uint16_t workers); +int re_async(struct re_async *a, intptr_t id, re_async_work_h *workh, + re_async_h *cb, void *arg); +void re_async_cancel(struct re_async *async, intptr_t id); + +#endif diff --git a/distribution.video/re/include/re_atomic.h b/distribution.video/re/include/re_atomic.h new file mode 100644 index 0000000..cbcc181 --- /dev/null +++ b/distribution.video/re/include/re_atomic.h @@ -0,0 +1,1198 @@ +/** + * @file re_atomic.h Atomic support + * + * Copyright (C) 2022 Sebastian Reimers + */ + +#ifndef RE_H_ATOMIC__ +#define RE_H_ATOMIC__ + +/* C11 */ +#if defined(HAVE_ATOMIC) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include + +#define RE_ATOMIC _Atomic + +#define RE_ATOMIC_BOOL_LOCK_FREE ATOMIC_BOOL_LOCK_FREE +#define RE_ATOMIC_CHAR_LOCK_FREE ATOMIC_CHAR_LOCK_FREE +#define RE_ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_WCHAR_T_LOCK_FREE +#define RE_ATOMIC_SHORT_LOCK_FREE ATOMIC_SHORT_LOCK_FREE +#define RE_ATOMIC_INT_LOCK_FREE ATOMIC_INT_LOCK_FREE +#define RE_ATOMIC_LONG_LOCK_FREE ATOMIC_LONG_LOCK_FREE +#define RE_ATOMIC_LLONG_LOCK_FREE ATOMIC_LLONG_LOCK_FREE +#define RE_ATOMIC_POINTER_LOCK_FREE ATOMIC_POINTER_LOCK_FREE + +#define re_memory_order_relaxed memory_order_relaxed +#define re_memory_order_acquire memory_order_acquire +#define re_memory_order_release memory_order_release +#define re_memory_order_acq_rel memory_order_acq_rel +#define re_memory_order_seq_cst memory_order_seq_cst + +#define re_atomic_store(_a, _v, _mo) \ + atomic_store_explicit(_a, _v, _mo) + +#define re_atomic_load(_a, _mo) \ + atomic_load_explicit(_a, _mo) + +#define re_atomic_exchange(_a, _v, _mo) \ + atomic_exchange_explicit(_a, _v, _mo) + +#define re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + atomic_compare_exchange_strong_explicit(\ + _a, _expected, _desired, _success_mo, _fail_mo) + +#define re_atomic_compare_exchange_weak(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + atomic_compare_exchange_weak_explicit(\ + _a, _expected, _desired, _success_mo, _fail_mo) + +#define re_atomic_fetch_add(_a, _v, _mo) \ + atomic_fetch_add_explicit(_a, _v, _mo) + +#define re_atomic_fetch_sub(_a, _v, _mo) \ + atomic_fetch_sub_explicit(_a, _v, _mo) + +#define re_atomic_fetch_or(_a, _v, _mo) \ + atomic_fetch_or_explicit(_a, _v, _mo) + +#define re_atomic_fetch_xor(_a, _v, _mo) \ + atomic_fetch_xor_explicit(_a, _v, _mo) + +#define re_atomic_fetch_and(_a, _v, _mo) \ + atomic_fetch_and_explicit(_a, _v, _mo) + +/* gcc-style __atomic* intrinsics. + * Note: clang-cl also supports these, even though it impersonates MSVC. */ +#elif (defined(__GNUC__) || defined(__clang__)) && \ + defined(__GCC_ATOMIC_BOOL_LOCK_FREE) && \ + defined(__GCC_ATOMIC_CHAR_LOCK_FREE) && \ + defined(__GCC_ATOMIC_WCHAR_T_LOCK_FREE) && \ + defined(__GCC_ATOMIC_SHORT_LOCK_FREE) && \ + defined(__GCC_ATOMIC_INT_LOCK_FREE) && \ + defined(__GCC_ATOMIC_LONG_LOCK_FREE) && \ + defined(__GCC_ATOMIC_LLONG_LOCK_FREE) && \ + defined(__GCC_ATOMIC_POINTER_LOCK_FREE) && \ + defined(__ATOMIC_RELAXED) && defined(__ATOMIC_ACQUIRE) && \ + defined(__ATOMIC_RELEASE) && defined(__ATOMIC_ACQ_REL) && \ + defined(__ATOMIC_SEQ_CST) + +#define RE_ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE +#define RE_ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE +#define RE_ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE +#define RE_ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#define RE_ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#define RE_ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#define RE_ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#define RE_ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE + +#define re_memory_order_relaxed __ATOMIC_RELAXED +#define re_memory_order_acquire __ATOMIC_ACQUIRE +#define re_memory_order_release __ATOMIC_RELEASE +#define re_memory_order_acq_rel __ATOMIC_ACQ_REL +#define re_memory_order_seq_cst __ATOMIC_SEQ_CST + +#define re_atomic_store(_a, _v, _mo) \ + __atomic_store_n(_a, _v, _mo) + +#define re_atomic_load(_a, _mo) \ + __atomic_load_n(_a, _mo) + +#define re_atomic_exchange(_a, _v, _mo) \ + __atomic_exchange_n(_a, _v, _mo) + +#define re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + __atomic_compare_exchange_n(\ + _a, _expected, _desired, 0, _success_mo, _fail_mo) + +#define re_atomic_compare_exchange_weak(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + __atomic_compare_exchange_n(\ + _a, _expected, _desired, 1, _success_mo, _fail_mo) + +#define re_atomic_fetch_add(_a, _v, _mo) \ + __atomic_fetch_add(_a, _v, _mo) + +#define re_atomic_fetch_sub(_a, _v, _mo) \ + __atomic_fetch_sub(_a, _v, _mo) + +#define re_atomic_fetch_or(_a, _v, _mo) \ + __atomic_fetch_or(_a, _v, _mo) + +#define re_atomic_fetch_xor(_a, _v, _mo) \ + __atomic_fetch_xor(_a, _v, _mo) + +#define re_atomic_fetch_and(_a, _v, _mo) \ + __atomic_fetch_and(_a, _v, _mo) + +/* gcc-style __sync* intrinsics. */ +#elif defined(__GNUC__) && \ + (defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) || \ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) || \ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) || \ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)) + +#if !defined(__SIZEOF_SHORT__) || !defined(__SIZEOF_INT__) || \ + !defined(__SIZEOF_LONG__) || !defined(__SIZEOF_LONG_LONG__) +#include +#endif +#if !defined(__SIZEOF_POINTER__) +#include +#endif +#if !defined(__SIZEOF_WCHAR_T__) +#include +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) +#define RE_ATOMIC_CHAR_LOCK_FREE 2 +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) +#if (defined(__SIZEOF_SHORT__) && __SIZEOF_SHORT__ == 2) || \ + (defined(USHRT_MAX) && USHRT_MAX == 0xffffu) +#define RE_ATOMIC_SHORT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_INT__) && __SIZEOF_INT__ == 2) || \ + (defined(UINT_MAX) && UINT_MAX == 0xffffu) +#define RE_ATOMIC_INT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 2) || \ + (defined(ULONG_MAX) && ULONG_MAX == 0xffffu) +#define RE_ATOMIC_LONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 2) || \ + (defined(ULLONG_MAX) && ULLONG_MAX == 0xffffu) +#define RE_ATOMIC_LLONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 2) || \ + (defined(UINTPTR_MAX) && UINTPTR_MAX == 0xffffu) +#define RE_ATOMIC_POINTER_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_WCHAR_T__) && __SIZEOF_WCHAR_T__ == 2) || \ + (defined(WCHAR_MAX) && (WCHAR_MAX == 0xffff || WCHAR_MAX == 0x7fff)) +#define RE_ATOMIC_WCHAR_T_LOCK_FREE 2 +#endif +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) +#if (defined(__SIZEOF_SHORT__) && __SIZEOF_SHORT__ == 4) || \ + (defined(USHRT_MAX) && USHRT_MAX == 0xffffffffu) +#define RE_ATOMIC_SHORT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_INT__) && __SIZEOF_INT__ == 4) || \ + (defined(UINT_MAX) && UINT_MAX == 0xffffffffu) +#define RE_ATOMIC_INT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \ + (defined(ULONG_MAX) && ULONG_MAX == 0xffffffffu) +#define RE_ATOMIC_LONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 4) || \ + (defined(ULLONG_MAX) && ULLONG_MAX == 0xffffffffu) +#define RE_ATOMIC_LLONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 4) || \ + (defined(UINTPTR_MAX) && UINTPTR_MAX == 0xffffffffu) +#define RE_ATOMIC_POINTER_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_WCHAR_T__) && __SIZEOF_WCHAR_T__ == 4) || \ + (defined(WCHAR_MAX) && (WCHAR_MAX == 0xffffffff || \ + WCHAR_MAX == 0x7fffffff)) +#define RE_ATOMIC_WCHAR_T_LOCK_FREE 2 +#endif +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) +#if (defined(__SIZEOF_SHORT__) && __SIZEOF_SHORT__ == 8) || \ + (defined(USHRT_MAX) && USHRT_MAX == 0xffffffffffffffffu) +#define RE_ATOMIC_SHORT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_INT__) && __SIZEOF_INT__ == 8) || \ + (defined(UINT_MAX) && UINT_MAX == 0xffffffffffffffffu) +#define RE_ATOMIC_INT_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \ + (defined(ULONG_MAX) && ULONG_MAX == 0xffffffffffffffffu) +#define RE_ATOMIC_LONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8) || \ + (defined(ULLONG_MAX) && ULLONG_MAX == 0xffffffffffffffffu) +#define RE_ATOMIC_LLONG_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 8) || \ + (defined(UINTPTR_MAX) && UINTPTR_MAX == 0xffffffffffffffffu) +#define RE_ATOMIC_POINTER_LOCK_FREE 2 +#endif +#if (defined(__SIZEOF_WCHAR_T__) && __SIZEOF_WCHAR_T__ == 8) || \ + (defined(WCHAR_MAX) && (WCHAR_MAX == 0xffffffffffffffff || \ + WCHAR_MAX == 0x7fffffffffffffff)) +#define RE_ATOMIC_WCHAR_T_LOCK_FREE 2 +#endif +#endif + +#if !defined(RE_ATOMIC_CHAR_LOCK_FREE) +#define RE_ATOMIC_CHAR_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_SHORT_LOCK_FREE) +#define RE_ATOMIC_SHORT_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_INT_LOCK_FREE) +#define RE_ATOMIC_INT_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_LONG_LOCK_FREE) +#define RE_ATOMIC_LONG_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_LLONG_LOCK_FREE) +#define RE_ATOMIC_LLONG_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_POINTER_LOCK_FREE) +#define RE_ATOMIC_POINTER_LOCK_FREE 0 +#endif +#if !defined(RE_ATOMIC_WCHAR_T_LOCK_FREE) +#define RE_ATOMIC_WCHAR_T_LOCK_FREE 0 +#endif + +/* Assume bool is always 1 byte. Add platform-specific exceptions, + * if needed. */ +#define RE_ATOMIC_BOOL_LOCK_FREE RE_ATOMIC_CHAR_LOCK_FREE + +/* These constants match __ATOMIC_* predefined macros on + * gcc versions that support __atomic intrinsics. */ +#define re_memory_order_relaxed 0 +#define re_memory_order_acquire 2 +#define re_memory_order_release 3 +#define re_memory_order_acq_rel 4 +#define re_memory_order_seq_cst 5 + +#if defined(__x86_64__) + +#define re_atomic_store(_a, _v, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val = (_v);\ + if ((_mo) != re_memory_order_seq_cst) {\ + __asm__ __volatile__ ("mov %1, %0"\ + : "=m" (*(_a))\ + : "q" (_val)\ + : "memory");\ + }\ + else {\ + __asm__ __volatile__ ("xchg %1, %0"\ + : "=m" (*(_a)), "+q" (_val)\ + : \ + : "memory");\ + }\ + }) + +#define re_atomic_load(_a, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val;\ + __asm__ __volatile__ ("mov %1, %0"\ + : "=q" (_val)\ + : "m" (*(_a))\ + : "memory");\ + _val;\ + }) + +#define re_atomic_exchange(_a, _v, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val = (_v);\ + __asm__ __volatile__ ("xchg %1, %0"\ + : "+m" (*(_a)), "+q" (_val)\ + : \ + : "memory");\ + _val;\ + }) + +#elif defined(__i386__) + +#define re_atomic_store(_a, _v, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val = (_v);\ + if (sizeof(_val) < 8) {\ + if ((_mo) != re_memory_order_seq_cst) {\ + __asm__ __volatile__ ("mov %1, %0"\ + : "=m" (*(_a))\ + : "q" (_val)\ + : "memory");\ + }\ + else {\ + __asm__ __volatile__ ("xchg %1, %0"\ + : "=m" (*(_a)), "+q" (_val)\ + : \ + : "memory");\ + }\ + }\ + else {\ + __typeof__(*(_a)) _expected = *(_a);\ + while (1) {\ + __typeof__(*(_a)) _prev_val =\ + __sync_val_compare_and_swap(\ + _a, _expected, _val);\ + if (_prev_val == _expected)\ + break;\ + _expected = _prev_val;\ + }\ + }\ + }) + +#define re_atomic_load(_a, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val;\ + if (sizeof(_val) < 8) {\ + __asm__ __volatile__ ("mov %1, %0"\ + : "=q" (_val)\ + : "m" (*(_a))\ + : "memory");\ + }\ + else {\ + _val = __sync_val_compare_and_swap(\ + _a,\ + (__typeof__(*(_a)))0,\ + (__typeof__(*(_a)))0);\ + }\ + _val;\ + }) + +#define re_atomic_exchange(_a, _v, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val = (_v);\ + if (sizeof(_val) < 8) {\ + __asm__ __volatile__ ("xchg %1, %0"\ + : "+m" (*(_a)), "+q" (_val)\ + : \ + : "memory");\ + }\ + else {\ + __typeof__(*(_a)) _expected = *(_a);\ + while (1) {\ + __typeof__(*(_a)) _prev_val =\ + __sync_val_compare_and_swap(\ + _a, _expected, _val);\ + if (_prev_val == _expected)\ + break;\ + _expected = _prev_val;\ + }\ + _val = _expected;\ + }\ + _val;\ + }) + +#else + +#define re_atomic_store(_a, _v, _mo) \ + (void)re_atomic_exchange(_a, _v, _mo) + +#define re_atomic_load(_a, _mo) \ + __sync_val_compare_and_swap(\ + _a, (__typeof__(*(_a)))0, (__typeof__(*(_a)))0) + +#define re_atomic_exchange(_a, _v, _mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _val = (_v);\ + __typeof__(*(_a)) _expected = *(_a);\ + while (1) {\ + __typeof__(*(_a)) _prev_val =\ + __sync_val_compare_and_swap(\ + _a, _expected, _val);\ + if (_prev_val == _expected)\ + break;\ + _expected = _prev_val;\ + }\ + _expected;\ + }) + +#endif + +#define re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + __extension__\ + ({\ + __typeof__(*(_a)) _exp_val = *(_expected);\ + __typeof__(*(_a)) _prev_val =\ + __sync_val_compare_and_swap(_a, _exp_val,\ + (__typeof__(*(_a)))(_desired));\ + *(_expected) = _prev_val;\ + _prev_val == _exp_val;\ + }) + +#define re_atomic_compare_exchange_weak(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) + +#define re_atomic_fetch_add(_a, _v, _mo) \ + __sync_fetch_and_add(_a, (__typeof__(*(_a)))(_v)) + +#define re_atomic_fetch_sub(_a, _v, _mo) \ + __sync_fetch_and_sub(_a, (__typeof__(*(_a)))(_v)) + +#define re_atomic_fetch_or(_a, _v, _mo) \ + __sync_fetch_and_or(_a, (__typeof__(*(_a)))(_v)) + +#define re_atomic_fetch_xor(_a, _v, _mo) \ + __sync_fetch_and_xor(_a, (__typeof__(*(_a)))(_v)) + +#define re_atomic_fetch_and(_a, _v, _mo) \ + __sync_fetch_and_and(_a, (__typeof__(*(_a)))(_v)) + +/* MSVC Interlocked* intrinsics. This needs to go after clang to let clang-cl + * get handled above. */ +#elif defined(_MSC_VER) + +#include +#include +#include "re_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define RE_ATOMIC_BOOL_LOCK_FREE 2 +#define RE_ATOMIC_CHAR_LOCK_FREE 2 +#define RE_ATOMIC_WCHAR_T_LOCK_FREE 2 +#define RE_ATOMIC_SHORT_LOCK_FREE 2 +#define RE_ATOMIC_INT_LOCK_FREE 2 +#define RE_ATOMIC_LONG_LOCK_FREE 2 +#define RE_ATOMIC_LLONG_LOCK_FREE 2 +#define RE_ATOMIC_POINTER_LOCK_FREE 2 + +/* These constants don't matter but for consistency they match + * values in std::memory_order from in C++. + * There are specialized intrinsics for ARM and ARM64 + * for different memory ordering types, but they are not used (yet) below. */ +#define re_memory_order_relaxed 0 +#define re_memory_order_acquire 2 +#define re_memory_order_release 3 +#define re_memory_order_acq_rel 4 +#define re_memory_order_seq_cst 5 + +static unsigned __int64 _re_atomic_exchange( + size_t size, void *a, unsigned __int64 v); + +#if defined(_M_IX86) || defined(_M_AMD64) + +static __forceinline void _re_atomic_store( + size_t size, void *a, unsigned __int64 v, unsigned int mo) +{ + assert(size == 1u || size == 2u || size == 4u || size == 8u); + if (mo != re_memory_order_seq_cst) { + _ReadWriteBarrier(); + switch (size) { + case 1u: + *(volatile unsigned __int8*)a = (unsigned __int8)v; + break; + case 2u: + *(volatile unsigned __int16*)a = (unsigned __int16)v; + break; + case 4u: + *(volatile unsigned __int32*)a = (unsigned __int32)v; + break; + default: +#if defined(_M_IX86) + { + __int64 prev_val = + *(const volatile __int64*)(a); + while (1) { + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)v, + prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + } +#else + *(volatile unsigned __int64*)a = v; +#endif + break; + } + _ReadWriteBarrier(); + } + else { + _re_atomic_exchange(size, a, v); + } +} + +static __forceinline unsigned __int64 _re_atomic_load( + size_t size, const void *a, unsigned int mo) +{ + unsigned __int64 v; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + _ReadWriteBarrier(); + switch (size) { + case 1u: + v = *(const volatile unsigned __int8*)a; + break; + case 2u: + v = *(const volatile unsigned __int16*)a; + break; + case 4u: + v = *(const volatile unsigned __int32*)a; + break; + default: +#if defined(_M_IX86) + v = _InterlockedCompareExchange64((__int64*)a, 0, 0); +#else + v = *(const volatile unsigned __int64*)a; +#endif + break; + } + _ReadWriteBarrier(); + + return v; +} + +#elif defined(_M_ARM) || defined(_M_ARM64) + +static __forceinline void _re_atomic_store( + size_t size, void *a, unsigned __int64 v, unsigned int mo) +{ + assert(size == 1u || size == 2u || size == 4u || size == 8u); + _ReadWriteBarrier(); + + if (mo >= re_memory_order_release) + __dmb(0x0b); /* dmb ish */ + + _ReadWriteBarrier(); + + switch (size) { + case 1u: + __iso_volatile_store8((__int8*)a, (__int8)v); + break; + case 2u: + __iso_volatile_store16((__int16*)a, (__int16)v); + break; + case 4u: + __iso_volatile_store32((__int32*)a, (__int32)v); + break; + default: + __iso_volatile_store64((__int64*)a, (__int64)v); + break; + } + + _ReadWriteBarrier(); + + if (mo == re_memory_order_seq_cst) + __dmb(0x0b); /* dmb ish */ + + _ReadWriteBarrier(); +} + +static __forceinline unsigned __int64 _re_atomic_load( + size_t size, const void *a, unsigned int mo) +{ + unsigned __int64 v; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + _ReadWriteBarrier(); + + switch (size) { + case 1u: + v = __iso_volatile_load8((const volatile __int8*)a); + break; + case 2u: + v = __iso_volatile_load16((const volatile __int16*)a); + break; + case 4u: + v = __iso_volatile_load32((const volatile __int32*)a); + break; + default: + v = __iso_volatile_load64((const volatile __int64*)a); + break; + } + + _ReadWriteBarrier(); + + if (mo != re_memory_order_relaxed && mo <= re_memory_order_acquire) + __dmb(0x0b); /* dmb ish */ + + _ReadWriteBarrier(); + + return v; +} + +#else + +static __forceinline void _re_atomic_store( + size_t size, void *a, unsigned __int64 v, unsigned int mo) +{ + assert(size == 1u || size == 2u || size == 4u || size == 8u); + _ReadWriteBarrier(); + switch (size) { + case 1u: + { + char prev_val = *(const volatile char*)(a); + while (1) { + char prev_val2 = + _InterlockedCompareExchange8( + (char*)a, + (char)v, + prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + } + break; + case 2u: + { + short prev_val = *(const volatile short*)(a); + while (1) { + short prev_val2 = + _InterlockedCompareExchange16( + (short*)a, + (short)v, + prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + } + break; + case 4u: + { + long prev_val = *(const volatile long*)(a); + while (1) { + long prev_val2 = + _InterlockedCompareExchange( + (long*)a, + (long)v, + prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + } + break; + default: + { + __int64 prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)v, + prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + } + break; + } + _ReadWriteBarrier(); +} + +static __forceinline unsigned __int64 _re_atomic_load( + size_t size, const void *a, unsigned int mo) +{ + unsigned __int64 v; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + v = _InterlockedCompareExchange8((char*)a, 0, 0); + break; + case 2u: + v = _InterlockedCompareExchange16((short*)a, 0, 0); + break; + case 4u: + v = _InterlockedCompareExchange((long*)a, 0, 0); + break; + default: + v = _InterlockedCompareExchange64((__int64*)a, 0, 0); + break; + } + + return v; +} + +#endif + +#define re_atomic_store(_a, _v, _mo) \ + _re_atomic_store(sizeof(*(_a)), _a, _v, _mo); + +#define re_atomic_load(_a, _mo) \ + _re_atomic_load(sizeof(*(_a)), _a, _mo) + +static __forceinline unsigned __int64 _re_atomic_exchange( + size_t size, void *a, unsigned __int64 v) +{ + unsigned __int64 prev_val; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + prev_val = _InterlockedExchange8((char*)a, (char)v); + break; + case 2u: + prev_val = _InterlockedExchange16((short*)a, (short)v); + break; + case 4u: + prev_val = _InterlockedExchange((long*)a, (long)v); + break; + default: +#if defined(_M_IX86) + { + _ReadWriteBarrier(); + prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)v, + (__int64)prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + _ReadWriteBarrier(); + } +#else + prev_val = _InterlockedExchange64((__int64*)a, (__int64)v); +#endif + break; + } + + return prev_val; +} + +#define re_atomic_exchange(_a, _v, _mo) \ + _re_atomic_exchange(sizeof(*(_a)), _a, _v) + +static __forceinline bool _re_atomic_compare_exchange_strong( + size_t size, void *a, void *expected, unsigned __int64 desired) +{ + bool res; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + { + char expected_val = *(char*)expected; + char prev_val = + _InterlockedCompareExchange8( + (char*)a, + (char)desired, + expected_val); + *(char*)expected = prev_val; + res = prev_val == expected_val; + } + break; + case 2u: + { + short expected_val = *(short*)expected; + short prev_val = + _InterlockedCompareExchange16( + (short*)a, + (short)desired, + expected_val); + *(short*)expected = prev_val; + res = prev_val == expected_val; + } + break; + case 4u: + { + long expected_val = *(long*)expected; + long prev_val = + _InterlockedCompareExchange( + (long*)a, + (long)desired, + expected_val); + *(long*)expected = prev_val; + res = prev_val == expected_val; + } + break; + default: + { + __int64 expected_val = *(__int64*)expected; + __int64 prev_val = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)desired, + expected_val); + *(__int64*)expected = prev_val; + res = prev_val == expected_val; + } + break; + } + + return res; +} + +#define re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + _re_atomic_compare_exchange_strong(\ + sizeof(*(_a)), _a, _expected, _desired) + +#define re_atomic_compare_exchange_weak(\ + _a, _expected, _desired, _success_mo, _fail_mo) \ + re_atomic_compare_exchange_strong(\ + _a, _expected, _desired, _success_mo, _fail_mo) + +static __forceinline unsigned __int64 _re_atomic_fetch_add( + size_t size, void *a, unsigned __int64 v) +{ + unsigned __int64 prev_val; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + prev_val = _InterlockedExchangeAdd8((char*)a, (char)v); + break; + case 2u: + prev_val = _InterlockedExchangeAdd16((short*)a, (short)v); + break; + case 4u: + prev_val = _InterlockedExchangeAdd((long*)a, (long)v); + break; + default: +#if defined(_M_IX86) + { + _ReadWriteBarrier(); + prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 new_val = prev_val + v; + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)new_val, + (__int64)prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + _ReadWriteBarrier(); + } +#else + prev_val = _InterlockedExchangeAdd64((__int64*)a, (__int64)v); +#endif + break; + } + + return prev_val; +} + +#define re_atomic_fetch_add(_a, _v, _mo) \ + _re_atomic_fetch_add(sizeof(*(_a)), _a, _v) + +#define re_atomic_fetch_sub(_a, _v, _mo) \ + re_atomic_fetch_add(_a, -(__int64)(_v), _mo) + +static __forceinline unsigned __int64 _re_atomic_fetch_or( + size_t size, void *a, unsigned __int64 v) +{ + unsigned __int64 prev_val; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + prev_val = _InterlockedOr8((char*)a, (char)v); + break; + case 2u: + prev_val = _InterlockedOr16((short*)a, (short)v); + break; + case 4u: + prev_val = _InterlockedOr((long*)a, (long)v); + break; + default: +#if defined(_M_IX86) + { + _ReadWriteBarrier(); + prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 new_val = prev_val | v; + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)new_val, + (__int64)prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + _ReadWriteBarrier(); + } +#else + prev_val = _InterlockedOr64((__int64*)a, (__int64)v); +#endif + break; + } + + return prev_val; +} + +#define re_atomic_fetch_or(_a, _v, _mo) \ + _re_atomic_fetch_or(sizeof(*(_a)), _a, _v) + +static __forceinline unsigned __int64 _re_atomic_fetch_xor( + size_t size, void *a, unsigned __int64 v) +{ + unsigned __int64 prev_val; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + prev_val = _InterlockedXor8((char*)a, (char)v); + break; + case 2u: + prev_val = _InterlockedXor16((short*)a, (short)v); + break; + case 4u: + prev_val = _InterlockedXor((long*)a, (long)v); + break; + default: +#if defined(_M_IX86) + { + _ReadWriteBarrier(); + prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 new_val = prev_val ^ v; + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)new_val, + (__int64)prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + _ReadWriteBarrier(); + } +#else + prev_val = _InterlockedXor64((__int64*)a, (__int64)v); +#endif + break; + } + + return prev_val; +} + +#define re_atomic_fetch_xor(_a, _v, _mo) \ + _re_atomic_fetch_xor(sizeof(*(_a)), _a, _v) + +static __forceinline unsigned __int64 _re_atomic_fetch_and( + size_t size, void *a, unsigned __int64 v) +{ + unsigned __int64 prev_val; + assert(size == 1u || size == 2u || size == 4u || size == 8u); + switch (size) { + case 1u: + prev_val = _InterlockedAnd8((char*)a, (char)v); + break; + case 2u: + prev_val = _InterlockedAnd16((short*)a, (short)v); + break; + case 4u: + prev_val = _InterlockedAnd((long*)a, (long)v); + break; + default: +#if defined(_M_IX86) + { + _ReadWriteBarrier(); + prev_val = *(const volatile __int64*)(a); + while (1) { + __int64 new_val = prev_val & v; + __int64 prev_val2 = + _InterlockedCompareExchange64( + (__int64*)a, + (__int64)new_val, + (__int64)prev_val); + if (prev_val2 == prev_val) + break; + prev_val = prev_val2; + } + _ReadWriteBarrier(); + } +#else + prev_val = _InterlockedAnd64((__int64*)a, (__int64)v); +#endif + break; + } + + return prev_val; +} + +#define re_atomic_fetch_and(_a, _v, _mo) \ + _re_atomic_fetch_and(sizeof(*(_a)), _a, _v) + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#else +#error "Compiler does not support atomics" +#endif /* HAVE_ATOMIC */ + +#ifndef RE_ATOMIC +#define RE_ATOMIC +#endif + + +/* --- Some short alias helpers --- */ + +/** + * @def re_atomic_rlx(_a) + * + * Load value from an atomic object with relaxed order + * + * @param _a pointer to the atomic object + * + * @return value of the atomic variable + */ +#define re_atomic_rlx(_a) re_atomic_load(_a, re_memory_order_relaxed) + + +/** + * @def re_atomic_rlx_set(_a, _v) + * + * Store value in an atomic object with relaxed order + * + * @param _a pointer to the atomic object + * @param _v new value + */ +#define re_atomic_rlx_set(_a, _v) \ + re_atomic_store(_a, _v, re_memory_order_relaxed) + + +/** + * @def re_atomic_rlx_add(_a, _v) + * + * Replace value from an atomic object with addition and relaxed order + * + * @param _a pointer to the atomic object + * @param _v value to add + * + * @return value held previously by the atomic variable + */ +#define re_atomic_rlx_add(_a, _v) \ + re_atomic_fetch_add(_a, _v, re_memory_order_relaxed) + + +/** + * @def re_atomic_rlx_sub(_a, _v) + * + * Replace value from an atomic object with subtraction and relaxed order + * + * @param _a pointer to the atomic object + * @param _v value to subtract + * + * @return value held previously by the atomic variable + */ +#define re_atomic_rlx_sub(_a, _v) \ + re_atomic_fetch_sub(_a, _v, re_memory_order_relaxed) + + +/** + * @def re_atomic_acq(_a) + * + * Load value from an atomic object with acquire order + * + * @param _a pointer to the atomic object + * + * @return value of the atomic variable + */ +#define re_atomic_acq(_a) re_atomic_load(_a, re_memory_order_acquire) + + +/** + * @def re_atomic_rls_set(_a, _v) + * + * Store value in an atomic object with release order + * + * @param _a pointer to the atomic object + * @param _v new value + */ +#define re_atomic_rls_set(_a, _v) \ + re_atomic_store(_a, _v, re_memory_order_release) + + +/** + * @def re_atomic_acq_add(_a, _v) + * + * Replace value from an atomic object with addition and acquire-release order + * + * @param _a pointer to the atomic object + * @param _v value to add + * + * @return value held previously by the atomic variable + */ +#define re_atomic_acq_add(_a, _v) \ + re_atomic_fetch_add(_a, _v, re_memory_order_acq_rel) + + +/** + * @def re_atomic_acq_sub(_a, _v) + * + * Replace value from an atomic object with subtraction and acquire-release + * order + * + * @param _a pointer to the atomic object + * @param _v value to subtract + * + * @return value held previously by the atomic variable + */ +#define re_atomic_acq_sub(_a, _v) \ + re_atomic_fetch_sub(_a, _v, re_memory_order_acq_rel) + + +/** + * @def re_atomic_seq(_a) + * + * Load value from an atomic object with sequentially-consistent order + * + * @param _a pointer to the atomic object + * + * @return value of the atomic variable + */ +#define re_atomic_seq(_a) re_atomic_load(_a, re_memory_order_seq_cst) + + +/** + * @def re_atomic_seq_set(_a, _v) + * + * Store value in an atomic object with sequentially-consistent order + * + * @param _a pointer to the atomic object + * @param _v new value + */ +#define re_atomic_seq_set(_a, _v) \ + re_atomic_store(_a, _v, re_memory_order_seq_cst) + + +/** + * @def re_atomic_seq_add(_a, _v) + * + * Replace value from an atomic object with addition and + * sequentially-consistent order + * + * @param _a pointer to the atomic object + * @param _v value to add + * + * @return value held previously by the atomic variable + */ +#define re_atomic_seq_add(_a, _v) \ + re_atomic_fetch_add(_a, _v, re_memory_order_seq_cst) + + +/** + * @def re_atomic_seq_sub(_a, _v) + * + * Replace value from an atomic object with subtraction and + * sequentially-consistent order + * + * @param _a pointer to the atomic object + * @param _v value to subtract + * + * @return value held previously by the atomic variable + */ +#define re_atomic_seq_sub(_a, _v) \ + re_atomic_fetch_sub(_a, _v, re_memory_order_seq_cst) + + +#endif /* RE_H_ATOMIC__ */ diff --git a/distribution.video/re/include/re_av1.h b/distribution.video/re/include/re_av1.h new file mode 100644 index 0000000..16476db --- /dev/null +++ b/distribution.video/re/include/re_av1.h @@ -0,0 +1,80 @@ +/** + * @file re_av1.h AV1 Open Bitstream Unit (OBU) + * + * Copyright (C) 2010 - 2022 Alfred E. Heggestad + */ + + +/* OBU (Open Bitstream Units) */ + + +/** Defines the OBU type */ +enum obu_type { + AV1_OBU_SEQUENCE_HEADER = 1, + AV1_OBU_TEMPORAL_DELIMITER = 2, + AV1_OBU_FRAME_HEADER = 3, + AV1_OBU_TILE_GROUP = 4, + AV1_OBU_METADATA = 5, + AV1_OBU_FRAME = 6, + AV1_OBU_REDUNDANT_FRAME_HEADER = 7, + AV1_OBU_TILE_LIST = 8, + AV1_OBU_PADDING = 15, +}; + +/** + * AV1 OBU Header + * + * 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+ + * |F| type |X|S|-| (REQUIRED) + * +-+-+-+-+-+-+-+-+ + */ +struct av1_obu_hdr { + enum obu_type type; /**< OBU type */ + bool x; /**< Extension flag */ + bool s; /**< Has size field */ + size_t size; /**< Payload size */ +}; + +int av1_leb128_encode(struct mbuf *mb, uint64_t value); +int av1_leb128_decode(struct mbuf *mb, uint64_t *value); +int av1_obu_encode(struct mbuf *mb, uint8_t type, bool has_size, + size_t len, const uint8_t *payload); +int av1_obu_decode(struct av1_obu_hdr *hdr, struct mbuf *mb); +int av1_obu_print(struct re_printf *pf, const struct av1_obu_hdr *hdr); +unsigned av1_obu_count(const uint8_t *buf, size_t size); +unsigned av1_obu_count_rtp(const uint8_t *buf, size_t size); +const char *av1_obu_name(enum obu_type type); +bool obu_allowed_rtp(enum obu_type type); + + +/* + * Packetizer + */ + +typedef int (av1_packet_h)(bool marker, uint64_t rtp_ts, + const uint8_t *hdr, size_t hdr_len, + const uint8_t *pld, size_t pld_len, + void *arg); + +int av1_packetize_high(bool *newp, bool marker, uint64_t rtp_ts, + const uint8_t *buf, size_t len, size_t maxlen, + av1_packet_h *pkth, void *arg); +int av1_packetize_one_w(bool *newp, bool marker, uint64_t rtp_ts, + const uint8_t *buf, size_t len, size_t maxlen, + av1_packet_h *pkth, void *arg); + + +enum { + AV1_AGGR_HDR_SIZE = 1, +}; + +/** AV1 Aggregation Header */ +struct av1_aggr_hdr { + unsigned z:1; /**< Continuation of OBU fragment from prev packet */ + unsigned y:1; /**< Last OBU element will continue in next packe */ + unsigned w:2; /**< Number of OBU elements in the packet */ + unsigned n:1; /**< First packet of a coded video sequence */ +}; + +int av1_aggr_hdr_decode(struct av1_aggr_hdr *hdr, struct mbuf *mb); diff --git a/distribution.video/re/include/re_base64.h b/distribution.video/re/include/re_base64.h new file mode 100644 index 0000000..8ab074c --- /dev/null +++ b/distribution.video/re/include/re_base64.h @@ -0,0 +1,11 @@ +/** + * @file re_base64.h Interface to Base64 encoding/decoding functions + * + * Copyright (C) 2010 Creytiv.com + */ + + +int base64_encode(const uint8_t *in, size_t ilen, char *out, size_t *olen); +int base64url_encode(const uint8_t *in, size_t ilen, char *out, size_t *olen); +int base64_print(struct re_printf *pf, const uint8_t *ptr, size_t len); +int base64_decode(const char *in, size_t ilen, uint8_t *out, size_t *olen); diff --git a/distribution.video/re/include/re_bfcp.h b/distribution.video/re/include/re_bfcp.h new file mode 100644 index 0000000..2f9e6b3 --- /dev/null +++ b/distribution.video/re/include/re_bfcp.h @@ -0,0 +1,317 @@ +/** + * @file re_bfcp.h Interface to Binary Floor Control Protocol (BFCP) + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** BFCP Versions */ +enum { + BFCP_VER1 = 1, + BFCP_VER2 = 2, +}; + +/** BFCP Primitives */ +enum bfcp_prim { + BFCP_FLOOR_REQUEST = 1, + BFCP_FLOOR_RELEASE = 2, + BFCP_FLOOR_REQUEST_QUERY = 3, + BFCP_FLOOR_REQUEST_STATUS = 4, + BFCP_USER_QUERY = 5, + BFCP_USER_STATUS = 6, + BFCP_FLOOR_QUERY = 7, + BFCP_FLOOR_STATUS = 8, + BFCP_CHAIR_ACTION = 9, + BFCP_CHAIR_ACTION_ACK = 10, + BFCP_HELLO = 11, + BFCP_HELLO_ACK = 12, + BFCP_ERROR = 13, + BFCP_FLOOR_REQ_STATUS_ACK = 14, + BFCP_FLOOR_STATUS_ACK = 15, + BFCP_GOODBYE = 16, + BFCP_GOODBYE_ACK = 17, +}; + +/** BFCP Attributes */ +enum bfcp_attrib { + BFCP_BENEFICIARY_ID = 1, + BFCP_FLOOR_ID = 2, + BFCP_FLOOR_REQUEST_ID = 3, + BFCP_PRIORITY = 4, + BFCP_REQUEST_STATUS = 5, + BFCP_ERROR_CODE = 6, + BFCP_ERROR_INFO = 7, + BFCP_PART_PROV_INFO = 8, + BFCP_STATUS_INFO = 9, + BFCP_SUPPORTED_ATTRS = 10, + BFCP_SUPPORTED_PRIMS = 11, + BFCP_USER_DISP_NAME = 12, + BFCP_USER_URI = 13, + /* grouped: */ + BFCP_BENEFICIARY_INFO = 14, + BFCP_FLOOR_REQ_INFO = 15, + BFCP_REQUESTED_BY_INFO = 16, + BFCP_FLOOR_REQ_STATUS = 17, + BFCP_OVERALL_REQ_STATUS = 18, + + /** Mandatory Attribute */ + BFCP_MANDATORY = 1<<7, + /** Encode Handler */ + BFCP_ENCODE_HANDLER = 1<<8, +}; + +/** BFCP Request Status */ +enum bfcp_reqstat { + BFCP_PENDING = 1, + BFCP_ACCEPTED = 2, + BFCP_GRANTED = 3, + BFCP_DENIED = 4, + BFCP_CANCELLED = 5, + BFCP_RELEASED = 6, + BFCP_REVOKED = 7 +}; + +/** BFCP Error Codes */ +enum bfcp_err { + BFCP_CONF_NOT_EXIST = 1, + BFCP_USER_NOT_EXIST = 2, + BFCP_UNKNOWN_PRIM = 3, + BFCP_UNKNOWN_MAND_ATTR = 4, + BFCP_UNAUTH_OPERATION = 5, + BFCP_INVALID_FLOOR_ID = 6, + BFCP_FLOOR_REQ_ID_NOT_EXIST = 7, + BFCP_MAX_FLOOR_REQ_REACHED = 8, + BFCP_USE_TLS = 9, + BFCP_PARSE_ERROR = 10, + BFCP_USE_DTLS = 11, + BFCP_UNSUPPORTED_VERSION = 12, + BFCP_BAD_LENGTH = 13, + BFCP_GENERIC_ERROR = 14, +}; + +/** BFCP Priority */ +enum bfcp_priority { + BFCP_PRIO_LOWEST = 0, + BFCP_PRIO_LOW = 1, + BFCP_PRIO_NORMAL = 2, + BFCP_PRIO_HIGH = 3, + BFCP_PRIO_HIGHEST = 4 +}; + +/** BFCP Transport */ +enum bfcp_transp { + BFCP_UDP, + BFCP_DTLS, + BFCP_TCP +}; + +/** BFCP Request Status */ +struct bfcp_reqstatus { + enum bfcp_reqstat status; + uint8_t qpos; +}; + +/** BFCP Error Code */ +struct bfcp_errcode { + enum bfcp_err code; + uint8_t *details; /* optional */ + size_t len; +}; + +/** BFCP Supported Attributes */ +struct bfcp_supattr { + enum bfcp_attrib *attrv; + size_t attrc; +}; + +/** BFCP Supported Primitives */ +struct bfcp_supprim { + enum bfcp_prim *primv; + size_t primc; +}; + +/** BFCP Attribute */ +struct bfcp_attr { + struct le le; + struct list attrl; + enum bfcp_attrib type; + bool mand; + union bfcp_union { + /* generic types */ + char *str; + uint16_t u16; + + /* actual attributes */ + uint16_t beneficiaryid; + uint16_t floorid; + uint16_t floorreqid; + enum bfcp_priority priority; + struct bfcp_reqstatus reqstatus; + struct bfcp_errcode errcode; + char *errinfo; + char *partprovinfo; + char *statusinfo; + struct bfcp_supattr supattr; + struct bfcp_supprim supprim; + char *userdname; + char *useruri; + uint16_t reqbyid; + } v; +}; + +/** BFCP unknown attributes */ +struct bfcp_unknown_attr { + uint8_t typev[16]; + size_t typec; +}; + +/** BFCP Message */ +struct bfcp_msg { + struct bfcp_unknown_attr uma; + struct sa src; + uint8_t ver; + unsigned r:1; + unsigned f:1; + enum bfcp_prim prim; + uint16_t len; + uint32_t confid; + uint16_t tid; + uint16_t userid; + struct list attrl; +}; + +struct tls; +struct bfcp_conn; + + +/** + * Defines the BFCP encode handler + * + * @param mb Mbuf to encode into + * @param arg Handler argument + * + * @return 0 if success, otherwise errorcode + */ +typedef int (bfcp_encode_h)(struct mbuf *mb, void *arg); + +/** BFCP Encode */ +struct bfcp_encode { + bfcp_encode_h *ench; + void *arg; +}; + + +/** + * Defines the BFCP attribute handler + * + * @param attr BFCP attribute + * @param arg Handler argument + * + * @return True to stop processing, false to continue + */ +typedef bool (bfcp_attr_h)(const struct bfcp_attr *attr, void *arg); + + +/** + * Defines the BFCP receive handler + * + * @param msg BFCP message + * @param arg Handler argument + */ +typedef void (bfcp_recv_h)(const struct bfcp_msg *msg, void *arg); + + +/** + * Defines the BFCP response handler + * + * @param err Error code + * @param msg BFCP message + * @param arg Handler argument + */ +typedef void (bfcp_resp_h)(int err, const struct bfcp_msg *msg, void *arg); + + +/* attr */ +int bfcp_attrs_vencode(struct mbuf *mb, unsigned attrc, va_list *ap); +int bfcp_attrs_encode(struct mbuf *mb, unsigned attrc, ...); +struct bfcp_attr *bfcp_attr_subattr(const struct bfcp_attr *attr, + enum bfcp_attrib type); +struct bfcp_attr *bfcp_attr_subattr_apply(const struct bfcp_attr *attr, + bfcp_attr_h *h, void *arg); +int bfcp_attr_print(struct re_printf *pf, const struct bfcp_attr *attr); +const char *bfcp_attr_name(enum bfcp_attrib type); +const char *bfcp_reqstatus_name(enum bfcp_reqstat status); +const char *bfcp_errcode_name(enum bfcp_err code); + + +/* msg */ +int bfcp_msg_vencode(struct mbuf *mb, uint8_t ver, bool r, enum bfcp_prim prim, + uint32_t confid, uint16_t tid, uint16_t userid, + unsigned attrc, va_list *ap); +int bfcp_msg_encode(struct mbuf *mb, uint8_t ver, bool r, enum bfcp_prim prim, + uint32_t confid, uint16_t tid, uint16_t userid, + unsigned attrc, ...); +int bfcp_msg_decode(struct bfcp_msg **msgp, struct mbuf *mb); +struct bfcp_attr *bfcp_msg_attr(const struct bfcp_msg *msg, + enum bfcp_attrib type); +struct bfcp_attr *bfcp_msg_attr_apply(const struct bfcp_msg *msg, + bfcp_attr_h *h, void *arg); +int bfcp_msg_print(struct re_printf *pf, const struct bfcp_msg *msg); +const char *bfcp_prim_name(enum bfcp_prim prim); + + +/* conn */ + +/** + * Defines the BFCP incoming connection handler + * + * @param peer Remote peer address + * @param arg Handler argument + */ +typedef void (bfcp_conn_h)(const struct sa *peer, void *arg); + +/** + * Defines the BFCP connection established handler + * + * @param arg Handler argument + */ +typedef void (bfcp_estab_h)(void *arg); + +/** + * Defines the BFCP close handler for example for TCP connection + * + * @param err Error code + * @param arg Handler argument + */ +typedef void (bfcp_close_h)(int err, void *arg); + +int bfcp_listen(struct bfcp_conn **bcp, enum bfcp_transp tp, + struct sa *laddr, struct tls *tls, bfcp_conn_h *connh, + bfcp_estab_h *estabh, bfcp_recv_h *recvh, bfcp_close_h *closeh, + void *arg); +int bfcp_connect(struct bfcp_conn **bcp, enum bfcp_transp tp, + struct sa *laddr, const struct sa *peer, bfcp_estab_h *estabh, + bfcp_recv_h *recvh, bfcp_close_h *closeh, void *arg); +int bfcp_accept(struct bfcp_conn *bc); +void bfcp_reject(struct bfcp_conn *bc); +void *bfcp_sock(const struct bfcp_conn *bc); + +/* request */ +int bfcp_request(struct bfcp_conn *bc, const struct sa *dst, uint8_t ver, + enum bfcp_prim prim, uint32_t confid, uint16_t userid, + bfcp_resp_h *resph, void *arg, unsigned attrc, ...); + + +/* notify */ +int bfcp_notify(struct bfcp_conn *bc, const struct sa *dst, uint8_t ver, + enum bfcp_prim prim, uint32_t confid, uint16_t userid, + unsigned attrc, ...); + + +/* reply */ +int bfcp_reply(struct bfcp_conn *bc, const struct bfcp_msg *req, + enum bfcp_prim prim, unsigned attrc, ...); +int bfcp_edreply(struct bfcp_conn *bc, const struct bfcp_msg *req, + enum bfcp_err code, const uint8_t *details, size_t len); +int bfcp_ereply(struct bfcp_conn *bc, const struct bfcp_msg *req, + enum bfcp_err code); diff --git a/distribution.video/re/include/re_btrace.h b/distribution.video/re/include/re_btrace.h new file mode 100644 index 0000000..5304929 --- /dev/null +++ b/distribution.video/re/include/re_btrace.h @@ -0,0 +1,47 @@ +/** + * @file re_btrace.h Backtrace API + * + */ +#define BTRACE_SZ 16 + +struct btrace { + void *stack[BTRACE_SZ]; + size_t len; +}; + +int btrace_print(struct re_printf *pf, struct btrace *bt); +int btrace_println(struct re_printf *pf, struct btrace *bt); +int btrace_print_json(struct re_printf *pf, struct btrace *bt); + +#if defined(HAVE_EXECINFO) && !defined(RELEASE) +#include +static inline int btrace(struct btrace *bt) +{ + if (!bt) + return EINVAL; + + bt->len = backtrace(bt->stack, BTRACE_SZ); + + return 0; +} +#elif defined(WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +static inline int btrace(struct btrace *bt) +{ + if (!bt) + return EINVAL; + + bt->len = CaptureStackBackTrace(0, BTRACE_SZ, bt->stack, NULL); + + return 0; +} +#else +static inline int btrace(struct btrace *bt) +{ + (void)bt; + return 0; +} +#endif diff --git a/distribution.video/re/include/re_conf.h b/distribution.video/re/include/re_conf.h new file mode 100644 index 0000000..f702bba --- /dev/null +++ b/distribution.video/re/include/re_conf.h @@ -0,0 +1,22 @@ +/** + * @file re_conf.h Interface to configuration + * + * Copyright (C) 2010 Creytiv.com + */ + + +struct conf; + +typedef int (conf_h)(const struct pl *val, void *arg); + +int conf_alloc(struct conf **confp, const char *filename); +int conf_alloc_buf(struct conf **confp, const uint8_t *buf, size_t sz); +int conf_get(const struct conf *conf, const char *name, struct pl *pl); +int conf_get_str(const struct conf *conf, const char *name, char *str, + size_t size); +int conf_get_u32(const struct conf *conf, const char *name, uint32_t *num); +int conf_get_i32(const struct conf *conf, const char *name, int32_t *num); +int conf_get_float(const struct conf *conf, const char *name, double *num); +int conf_get_bool(const struct conf *conf, const char *name, bool *val); +int conf_apply(const struct conf *conf, const char *name, + conf_h *ch, void *arg); diff --git a/distribution.video/re/include/re_convert.h b/distribution.video/re/include/re_convert.h new file mode 100644 index 0000000..39819ff --- /dev/null +++ b/distribution.video/re/include/re_convert.h @@ -0,0 +1,81 @@ +/** + * @file re_convert.h Conversion helpers + * + * Copyright (C) 2022 Sebastian Reimers + */ +#include + +static inline int try_into_u16_from_size(uint16_t *dest, const size_t src) +{ + *dest = 0; + + if (src > UINT16_MAX) + return ERANGE; + + *dest = (uint16_t)src; + + return 0; +} + + +static inline int try_into_u16_from_int(uint16_t *dest, const int src) +{ + *dest = 0; + + if (src > UINT16_MAX) + return ERANGE; + + if (src < 0) + return ERANGE; + + *dest = (uint16_t)src; + + return 0; +} + + +static inline int try_into_int_from_size(int *dest, const size_t src) +{ + *dest = 0; + + if (src > INT_MAX) + return ERANGE; + + *dest = (int)src; + + return 0; +} + + +static inline int try_into_err(void *dest, ...) +{ + (void)dest; + + return ENOTSUP; +} + + +#if __STDC_VERSION__ >= 201112L /* Needs C11 support */ +/** + * Try to convert safely from one type (src) into another (dest). + * Types are auto detected. + * + * @param dest Destination + * @param src Source value + * + * @return 0 if success, ERANGE if value overflow and ENOTSUP if not supported + */ +#define try_into(dest, src) \ + _Generic((dest), \ + uint16_t: _Generic((src), \ + size_t: try_into_u16_from_size, \ + int: try_into_u16_from_int, \ + default: try_into_err \ + ), \ + int: _Generic((src), \ + size_t: try_into_int_from_size, \ + default: try_into_err \ + ) \ + ) \ + (&(dest), (src)) +#endif diff --git a/distribution.video/re/include/re_crc32.h b/distribution.video/re/include/re_crc32.h new file mode 100644 index 0000000..a131761 --- /dev/null +++ b/distribution.video/re/include/re_crc32.h @@ -0,0 +1,8 @@ +/** + * @file re_crc32.h Interface to CRC-32 functions + * + * Copyright (C) 2010 Creytiv.com + */ + + +uint32_t re_crc32(uint32_t crc, const void *buf, uint32_t size); diff --git a/distribution.video/re/include/re_dbg.h b/distribution.video/re/include/re_dbg.h new file mode 100644 index 0000000..4db8869 --- /dev/null +++ b/distribution.video/re/include/re_dbg.h @@ -0,0 +1,123 @@ +/** + * @file re_dbg.h Interface to debugging module + * + * Copyright (C) 2010 Creytiv.com + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** Debug levels */ +enum { + DBG_EMERG = 0, /**< System is unusable */ + DBG_ALERT = 1, /**< Action must be taken immediately */ + DBG_CRIT = 2, /**< Critical conditions */ + DBG_ERR = 3, /**< Error conditions */ + DBG_WARNING = 4, /**< Warning conditions */ + DBG_NOTICE = 5, /**< Normal but significant condition */ + DBG_INFO = 6, /**< Informational */ + DBG_DEBUG = 7 /**< Debug-level messages */ +}; + + +/** + * @def DEBUG_MODULE + * + * Module name defined by application + */ + +/** + * @def DEBUG_LEVEL + * + * Debug level defined by application + */ + +#ifndef DEBUG_MODULE +# warning "DEBUG_MODULE is not defined" +#define DEBUG_MODULE "?" +#endif + +#ifndef DEBUG_LEVEL +# warning "DEBUG_LEVEL is not defined" +#define DEBUG_LEVEL 7 +#endif + + +/** + * @def DEBUG_WARNING(...) + * + * Print warning message + */ +#if (DEBUG_LEVEL >= 4) +#define DEBUG_WARNING(...) \ + dbg_printf(DBG_WARNING, DEBUG_MODULE ": " __VA_ARGS__) +#else +#define DEBUG_WARNING(...) +#endif + +/** + * @def DEBUG_NOTICE(...) + * + * Print notice message + */ +#if (DEBUG_LEVEL >= 5) +#define DEBUG_NOTICE(...) \ + dbg_printf(DBG_NOTICE, DEBUG_MODULE ": " __VA_ARGS__) +#else +#define DEBUG_NOTICE(...) +#endif + +/** + * @def DEBUG_INFO(...) + * + * Print info message + */ +#if (DEBUG_LEVEL >= 6) +#define DEBUG_INFO(...) \ + dbg_printf(DBG_INFO, DEBUG_MODULE ": " __VA_ARGS__) +#else +#define DEBUG_INFO(...) +#endif + +/** + * @def DEBUG_PRINTF(...) + * + * Print debug message + */ +#if (DEBUG_LEVEL >= 7) +#define DEBUG_PRINTF(...) \ + dbg_printf(DBG_DEBUG, DEBUG_MODULE ": " __VA_ARGS__) +#else +#define DEBUG_PRINTF(...) +#endif + + +/** Debug flags */ +enum dbg_flags { + DBG_NONE = 0, /**< No debug flags */ + DBG_TIME = 1<<0, /**< Print timestamp flag */ + DBG_ANSI = 1<<1, /**< Print ANSI color codes */ + DBG_ALL = DBG_TIME|DBG_ANSI /**< All flags enabled */ +}; + + +/** + * Defines the debug print handler + * + * @param level Debug level + * @param p Debug string + * @param len String length + * @param arg Handler argument + */ +typedef void (dbg_print_h)(int level, const char *p, size_t len, void *arg); + +void dbg_init(int level, enum dbg_flags flags); +void dbg_close(void); +void dbg_handler_set(dbg_print_h *ph, void *arg); +void dbg_printf(int level, const char *fmt, ...); +const char *dbg_level_str(int level); + +#ifdef __cplusplus +} +#endif diff --git a/distribution.video/re/include/re_dd.h b/distribution.video/re/include/re_dd.h new file mode 100644 index 0000000..9dfecd2 --- /dev/null +++ b/distribution.video/re/include/re_dd.h @@ -0,0 +1,109 @@ +/** + * @file re_dd.h Dependency Descriptor (DD) + * + * Copyright (C) 2010 - 2023 Alfred E. Heggestad + */ + + +/* + * Put bits wrapper (XXX: move to common place) + */ + +struct putbit { + struct mbuf *mb; + size_t bit_pos; +}; + +void putbit_init(struct putbit *pb, struct mbuf *mb); +int putbit_one(struct putbit *pb, unsigned bit); +int putbit_write(struct putbit *pb, unsigned count, unsigned val); +int putbit_write_ns(struct putbit *pb, unsigned n, unsigned v); + + +/* + * Dependency Descriptor (DD) + * + * DT: Decode Target + * DTI: Decode Target Indication + * SID: Spatial ID + * TID: Temporal ID + */ + +/* Constants. */ +enum { + DD_MAX_SPATIAL_IDS = 4u, + DD_MAX_TEMPORAL_IDS = 4u, + DD_MAX_TEMPLATES = 8u, + DD_MAX_FDIFFS = 16u, + DD_MAX_DECODE_TARGETS= 16u, + DD_MAX_CHAINS = 32u, +}; + + +/* Decode Target Indication (DTI) */ +enum dd_dti { + DD_DTI_NOT_PRESENT = 0, + DD_DTI_DISCARDABLE = 1, + DD_DTI_SWITCH = 2, + DD_DTI_REQUIRED = 3, +}; + +enum dd_next_layer_idc { + DD_SAME_LAYER = 0, + DD_NEXT_TEMPORAL_LAYER = 1, + DD_NEXT_SPATIAL_LAYER = 2, + DD_NO_MORE_TEMPLATES = 3, +}; + +/* + * https://aomediacodec.github.io/av1-rtp-spec/ + * #dependency-descriptor-rtp-header-extension + */ +struct dd { + + /* Mandatory Descriptor Fields */ + unsigned start_of_frame:1; + unsigned end_of_frame:1; + unsigned frame_dependency_template_id:6; + uint16_t frame_number; + + // TODO: needed? + bool ext; + + unsigned template_dependency_structure_present_flag:1; + unsigned active_decode_targets_present_flag:1; + unsigned custom_dtis_flag:1; + unsigned custom_fdiffs_flag:1; + unsigned custom_chains_flag:1; + + unsigned active_decode_targets_bitmask; + unsigned template_id_offset:6; + uint8_t dt_cnt; + uint8_t template_cnt; + uint8_t max_spatial_id; + + uint8_t template_spatial_id[DD_MAX_TEMPLATES]; + uint8_t template_temporal_id[DD_MAX_TEMPLATES]; + + /* render_resolutions */ + bool resolutions_present_flag; + uint16_t max_render_width_minus_1[DD_MAX_SPATIAL_IDS]; + uint16_t max_render_height_minus_1[DD_MAX_SPATIAL_IDS]; + uint8_t render_count; + + /* type: enum dd_dti */ + uint8_t template_dti[DD_MAX_TEMPLATES][DD_MAX_DECODE_TARGETS]; + + /* template fdiffs */ + uint8_t template_fdiff[DD_MAX_TEMPLATES][DD_MAX_FDIFFS]; + uint8_t template_fdiff_cnt[DD_MAX_TEMPLATES]; + + /* template chains */ + uint8_t decode_target_protected_by[DD_MAX_DECODE_TARGETS]; + uint8_t template_chain_fdiff[DD_MAX_TEMPLATES][DD_MAX_CHAINS]; + uint8_t chain_cnt; +}; + +int dd_encode(struct mbuf *mb, const struct dd *dd); +int dd_decode(struct dd *dd, const uint8_t *buf, size_t sz); +void dd_print(const struct dd *dd); diff --git a/distribution.video/re/include/re_dns.h b/distribution.video/re/include/re_dns.h new file mode 100644 index 0000000..5f43e63 --- /dev/null +++ b/distribution.video/re/include/re_dns.h @@ -0,0 +1,231 @@ +/** + * @file re_dns.h Interface to DNS module + * + * Copyright (C) 2010 Creytiv.com + */ + + +enum { + DNS_PORT = 53, + DNS_HEADER_SIZE = 12 +}; + + +/** DNS Opcodes */ +enum { + DNS_OPCODE_QUERY = 0, + DNS_OPCODE_IQUERY = 1, + DNS_OPCODE_STATUS = 2, + DNS_OPCODE_NOTIFY = 4 +}; + + +/** DNS Response codes */ +enum { + DNS_RCODE_OK = 0, + DNS_RCODE_FMT_ERR = 1, + DNS_RCODE_SRV_FAIL = 2, + DNS_RCODE_NAME_ERR = 3, + DNS_RCODE_NOT_IMPL = 4, + DNS_RCODE_REFUSED = 5, + DNS_RCODE_NOT_AUTH = 9 +}; + + +/** DNS Resource Record types */ +enum { + DNS_TYPE_A = 0x0001, + DNS_TYPE_NS = 0x0002, + DNS_TYPE_CNAME = 0x0005, + DNS_TYPE_SOA = 0x0006, + DNS_TYPE_PTR = 0x000c, + DNS_TYPE_MX = 0x000f, + DNS_TYPE_TXT = 0x0010, + DNS_TYPE_AAAA = 0x001c, + DNS_TYPE_SRV = 0x0021, + DNS_TYPE_NAPTR = 0x0023, + DNS_QTYPE_IXFR = 0x00fb, + DNS_QTYPE_AXFR = 0x00fc, + DNS_QTYPE_ANY = 0x00ff +}; + + +/** DNS Classes */ +enum { + DNS_CLASS_IN = 0x0001, + DNS_QCLASS_ANY = 0x00ff +}; + + +/** Defines a DNS Header */ +struct dnshdr { + uint16_t id; + bool qr; + uint8_t opcode; + bool aa; + bool tc; + bool rd; + bool ra; + uint8_t z; + uint8_t rcode; + uint16_t nq; + uint16_t nans; + uint16_t nauth; + uint16_t nadd; +}; + + +/** Defines a DNS Resource Record (RR) */ +struct dnsrr { + struct le le; + struct le le_priv; + char *name; + uint16_t type; + uint16_t dnsclass; + int64_t ttl; + uint16_t rdlen; + union { + struct { + uint32_t addr; + } a; + struct { + char *nsdname; + } ns; + struct { + char *cname; + } cname; + struct { + char *mname; + char *rname; + uint32_t serial; + uint32_t refresh; + uint32_t retry; + uint32_t expire; + uint32_t ttlmin; + } soa; + struct { + char *ptrdname; + } ptr; + struct { + uint16_t pref; + char *exchange; + } mx; + struct { + char *data; + } txt; + struct { + uint8_t addr[16]; + } aaaa; + struct { + uint16_t pri; + uint16_t weight; + uint16_t port; + char *target; + } srv; + struct { + uint16_t order; + uint16_t pref; + char *flags; + char *services; + char *regexp; + char *replace; + } naptr; + } rdata; +}; + +struct hash; + +/** + * Defines the DNS Query handler + * + * @param err 0 if success, otherwise errorcode + * @param hdr DNS Header + * @param ansl List of Answer records + * @param authl List of Authoritative records + * @param addl List of Additional records + * @param arg Handler argument + */ +typedef void(dns_query_h)(int err, const struct dnshdr *hdr, + struct list *ansl, struct list *authl, + struct list *addl, void *arg); + +/** + * Defines the DNS Resource Record list handler + * + * @param rr DNS Resource Record + * @param arg Handler argument + * + * @return True to stop traversing, False to continue + */ +typedef bool(dns_rrlist_h)(struct dnsrr *rr, void *arg); + +int dns_hdr_encode(struct mbuf *mb, const struct dnshdr *hdr); +int dns_hdr_decode(struct mbuf *mb, struct dnshdr *hdr); +const char *dns_hdr_opcodename(uint8_t opcode); +const char *dns_hdr_rcodename(uint8_t rcode); +struct dnsrr *dns_rr_alloc(void); +int dns_rr_encode(struct mbuf *mb, const struct dnsrr *rr, int64_t ttl_offs, + struct hash *ht_dname, size_t start); +int dns_rr_decode(struct mbuf *mb, struct dnsrr **rr, size_t start); +bool dns_rr_cmp(const struct dnsrr *rr1, const struct dnsrr *rr2, bool rdata); +const char *dns_rr_typename(uint16_t type); +const char *dns_rr_classname(uint16_t dnsclass); +int dns_rr_print(struct re_printf *pf, const struct dnsrr *rr); +int dns_dname_encode(struct mbuf *mb, const char *name, + struct hash *ht_dname, size_t start, bool comp); +int dns_dname_decode(struct mbuf *mb, char **name, size_t start); +int dns_cstr_encode(struct mbuf *mb, const char *str); +int dns_cstr_decode(struct mbuf *mb, char **str); +void dns_rrlist_sort(struct list *rrl, uint16_t type, size_t key); +void dns_rrlist_sort_addr(struct list *rrl, size_t key); +struct dnsrr *dns_rrlist_apply(struct list *rrl, const char *name, + uint16_t type, uint16_t dnsclass, + bool recurse, dns_rrlist_h *rrlh, void *arg); +struct dnsrr *dns_rrlist_apply2(struct list *rrl, const char *name, + uint16_t type1, uint16_t type2, + uint16_t dnsclass, bool recurse, + dns_rrlist_h *rrlh, void *arg); +struct dnsrr *dns_rrlist_find(struct list *rrl, const char *name, + uint16_t type, uint16_t dnsclass, bool recurse); + + +/* DNS Client */ +struct sa; +struct dnsc; +struct dns_query; + +/** DNS Client configuration */ +struct dnsc_conf { + uint32_t query_hash_size; + uint32_t tcp_hash_size; + uint32_t conn_timeout; /* in [ms] */ + uint32_t idle_timeout; /* in [ms] */ + uint32_t cache_ttl_max; /* in [s] 0 for disabled */ + bool getaddrinfo; /* use getaddrinfo (by default disabled) */ +}; + +int dnsc_alloc(struct dnsc **dcpp, const struct dnsc_conf *conf, + const struct sa *srvv, uint32_t srvc); +int dnsc_conf_set(struct dnsc *dnsc, const struct dnsc_conf *conf); +void dnsc_conf_set_timeout(struct dnsc *dnsc, uint32_t connect, uint32_t idle); +int dnsc_srv_set(struct dnsc *dnsc, const struct sa *srvv, uint32_t srvc); +int dnsc_query(struct dns_query **qp, struct dnsc *dnsc, const char *name, + uint16_t type, uint16_t dnsclass, + bool rd, dns_query_h *qh, void *arg); +int dnsc_query_srv(struct dns_query **qp, struct dnsc *dnsc, const char *name, + uint16_t type, uint16_t dnsclass, int proto, + const struct sa *srvv, const uint32_t *srvc, + bool rd, dns_query_h *qh, void *arg); +int dnsc_notify(struct dns_query **qp, struct dnsc *dnsc, const char *name, + uint16_t type, uint16_t dnsclass, const struct dnsrr *ans_rr, + int proto, const struct sa *srvv, const uint32_t *srvc, + dns_query_h *qh, void *arg); +void dnsc_cache_flush(struct dnsc *dnsc); +void dnsc_cache_max(struct dnsc *dnsc, uint32_t max); +void dnsc_getaddrinfo(struct dnsc *dnsc, bool active); +bool dnsc_getaddrinfo_enabled(struct dnsc *dnsc); +bool dnsc_getaddrinfo_only(const struct dnsc *dnsc); + + +/* DNS System functions */ +int dns_srv_get(char *domain, size_t dsize, struct sa *srvv, uint32_t *n); diff --git a/distribution.video/re/include/re_fmt.h b/distribution.video/re/include/re_fmt.h new file mode 100644 index 0000000..bb64be4 --- /dev/null +++ b/distribution.video/re/include/re_fmt.h @@ -0,0 +1,218 @@ +/** + * @file re_fmt.h Interface to formatted text functions + * + * Copyright (C) 2010 Creytiv.com + */ + + +#include +#include + +enum { + ITOA_BUFSZ = 34, +}; + +struct mbuf; + + +/** Defines a pointer-length string type */ +struct pl { + const char *p; /**< Pointer to string */ + size_t l; /**< Length of string */ +}; + +/** Initialise a pointer-length object from a constant string */ +#define PL(s) {(s), sizeof((s))-1} + +/** Pointer-length Initializer */ +#define PL_INIT {NULL, 0} + +extern const struct pl pl_null; + +struct pl *pl_alloc_str(const char *str); +void pl_set_str(struct pl *pl, const char *str); +void pl_set_mbuf(struct pl *pl, const struct mbuf *mb); +int32_t pl_i32(const struct pl *pl); +int64_t pl_i64(const struct pl *pl); +uint32_t pl_u32(const struct pl *pl); +uint32_t pl_x32(const struct pl *pl); +uint64_t pl_u64(const struct pl *pl); +uint64_t pl_x64(const struct pl *pl); +double pl_float(const struct pl *pl); +int pl_bool(bool *val, const struct pl *pl); +int pl_hex(const struct pl *pl, uint8_t *hex, size_t len); +bool pl_isset(const struct pl *pl); +int pl_strcpy(const struct pl *pl, char *str, size_t size); +int pl_strdup(char **dst, const struct pl *src); +int pl_dup(struct pl *dst, const struct pl *src); +int pl_strcmp(const struct pl *pl, const char *str); +int pl_strncmp(const struct pl *pl, const char *str, size_t n); +int pl_strcasecmp(const struct pl *pl, const char *str); +int pl_cmp(const struct pl *pl1, const struct pl *pl2); +int pl_casecmp(const struct pl *pl1, const struct pl *pl2); +const char *pl_strchr(const struct pl *pl, char c); +const char *pl_strrchr(const struct pl *pl, char c); +const char *pl_strstr(const struct pl *pl, const char *str); +int pl_trim(struct pl *pl); +int pl_ltrim(struct pl *pl); +int pl_rtrim(struct pl *pl); + +/** Advance pl position/length by +/- N bytes */ +static inline void pl_advance(struct pl *pl, ssize_t n) +{ + pl->p += n; + pl->l -= n; +} + + +/* Formatted printing */ + +/** + * Defines the re_vhprintf() print handler + * + * @param p String to print + * @param size Size of string to print + * @param arg Handler argument + * + * @return 0 for success, otherwise errorcode + */ +typedef int(re_vprintf_h)(const char *p, size_t size, void *arg); + +/** Defines a print backend */ +struct re_printf { + re_vprintf_h *vph; /**< Print handler */ + void *arg; /**< Handler argument */ +}; + +/** + * Defines the %H print handler + * + * @param pf Print backend + * @param arg Handler argument + * + * @return 0 for success, otherwise errorcode + */ +typedef int(re_printf_h)(struct re_printf *pf, void *arg); + +int re_vhprintf(const char *fmt, va_list ap, re_vprintf_h *vph, void *arg); +int re_vfprintf(FILE *stream, const char *fmt, va_list ap); +int re_vprintf(const char *fmt, va_list ap); +int re_vsnprintf(char *re_restrict str, size_t size, + const char *re_restrict fmt, va_list ap); +int re_vsdprintf(char **strp, const char *fmt, va_list ap); + +/* Secure va_list print */ +int re_vhprintf_s(const char *fmt, va_list ap, re_vprintf_h *vph, void *arg); +int re_vfprintf_s(FILE *stream, const char *fmt, va_list ap); +int re_vprintf_s(const char *fmt, va_list ap); +int re_vsnprintf_s(char *re_restrict str, size_t size, + const char *re_restrict fmt, va_list ap); +int re_vsdprintf_s(char **strp, const char *fmt, va_list ap); + +#ifdef HAVE_RE_ARG +#define re_printf(fmt, ...) _re_printf_s((fmt), RE_VA_ARGS(__VA_ARGS__)) +#define re_hprintf(pf, fmt, ...) \ + _re_hprintf_s((pf), (fmt), RE_VA_ARGS(__VA_ARGS__)) +#define re_fprintf(stream, fmt, ...) \ + _re_fprintf_s((stream), (fmt), RE_VA_ARGS(__VA_ARGS__)) +#define re_snprintf(str, size, fmt, ...) \ + _re_snprintf_s((str), (size), (fmt), RE_VA_ARGS(__VA_ARGS__)) +#define re_sdprintf(strp, fmt, ...) \ + _re_sdprintf_s((strp), (fmt), RE_VA_ARGS(__VA_ARGS__)) +#else +#define re_printf(...) _re_printf(__VA_ARGS__) +#define re_hprintf _re_hprintf +#define re_fprintf _re_fprintf +#define re_snprintf _re_snprintf +#define re_sdprintf _re_sdprintf +#endif + +int _re_printf(const char *fmt, ...); +int _re_hprintf(struct re_printf *pf, const char *fmt, ...); +int _re_fprintf(FILE *stream, const char *fmt, ...); +int _re_snprintf(char *re_restrict str, size_t size, + const char *re_restrict fmt, ...); +int _re_sdprintf(char **strp, const char *fmt, ...); + +int _re_printf_s(const char *fmt, ...); +int _re_hprintf_s(struct re_printf *pf, const char *fmt, ...); +int _re_fprintf_s(FILE *stream, const char *fmt, ...); +int _re_snprintf_s(char *re_restrict str, size_t size, + const char *re_restrict fmt, ...); +int _re_sdprintf_s(char **strp, const char *fmt, ...); + + +/* Regular expressions */ +int re_regex(const char *ptr, size_t len, const char *expr, ...); + + +/* Character functions */ +uint8_t ch_hex(char ch); + + +/* String functions */ +int str_bool(bool *val, const char *str); +int str_hex(uint8_t *hex, size_t len, const char *str); +void str_ncpy(char *dst, const char *src, size_t n); +int str_dup(char **dst, const char *src); +int str_x64dup(char **dst, uint64_t val); +int str_cmp(const char *s1, const char *s2); +int str_ncmp(const char *s1, const char *s2, size_t n); +const char *str_str(const char *s1, const char *s2); +int str_casecmp(const char *s1, const char *s2); +size_t str_len(const char *s); +const char *str_error(int errnum, char *buf, size_t sz); +char *str_itoa(uint32_t val, char *buf, int base); +wchar_t *str_wchar(const char *c); + + +/** + * Check if string is set + * + * @param s Zero-terminated string + * + * @return true if set, false if not set + */ +static inline bool str_isset(const char *s) +{ + return s && s[0] != '\0'; +} + + +/* time */ +int fmt_gmtime(struct re_printf *pf, void *ts); +int fmt_timestamp(struct re_printf *pf, void *ts); +int fmt_timestamp_us(struct re_printf *pf, void *arg); +int fmt_human_time(struct re_printf *pf, const uint32_t *seconds); + + +void hexdump(FILE *f, const void *p, size_t len); + + +/* param */ +typedef void (fmt_param_h)(const struct pl *name, const struct pl *val, + void *arg); + +bool fmt_param_exists(const struct pl *pl, const char *pname); +bool fmt_param_sep_get(const struct pl *pl, const char *pname, char sep, + struct pl *val); +bool fmt_param_get(const struct pl *pl, const char *pname, struct pl *val); +void fmt_param_apply(const struct pl *pl, fmt_param_h *ph, void *arg); + + +/* unicode */ +int utf8_encode(struct re_printf *pf, const char *str); +int utf8_decode(struct re_printf *pf, const struct pl *pl); +size_t utf8_byteseq(char u[4], unsigned cp); + + +/* text2pcap */ +struct re_text2pcap { + bool in; + const struct mbuf *mb; + const char *id; +}; + +int re_text2pcap(struct re_printf *pf, struct re_text2pcap *pcap); +void re_text2pcap_trace(const char *name, const char *id, bool in, + const struct mbuf *mb); diff --git a/distribution.video/re/include/re_h264.h b/distribution.video/re/include/re_h264.h new file mode 100644 index 0000000..c1ffbfb --- /dev/null +++ b/distribution.video/re/include/re_h264.h @@ -0,0 +1,125 @@ +/** + * @file re_h264.h Interface to H.264 header parser + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** NAL unit types */ +enum h264_nalu { + H264_NALU_SLICE = 1, + H264_NALU_DPA = 2, + H264_NALU_DPB = 3, + H264_NALU_DPC = 4, + H264_NALU_IDR_SLICE = 5, + H264_NALU_SEI = 6, + H264_NALU_SPS = 7, + H264_NALU_PPS = 8, + H264_NALU_AUD = 9, + H264_NALU_END_SEQUENCE = 10, + H264_NALU_END_STREAM = 11, + H264_NALU_FILLER_DATA = 12, + H264_NALU_SPS_EXT = 13, + H264_NALU_AUX_SLICE = 19, + + H264_NALU_STAP_A = 24, + H264_NALU_STAP_B = 25, + H264_NALU_MTAP16 = 26, + H264_NALU_MTAP24 = 27, + H264_NALU_FU_A = 28, + H264_NALU_FU_B = 29, +}; + + +/** + * H.264 NAL Header + */ +struct h264_nal_header { + unsigned f:1; /**< Forbidden zero bit (must be 0) */ + unsigned nri:2; /**< nal_ref_idc */ + unsigned type:5; /**< NAL unit type */ +}; + + +int h264_nal_header_encode(struct mbuf *mb, const struct h264_nal_header *hdr); +int h264_nal_header_decode(struct h264_nal_header *hdr, struct mbuf *mb); +void h264_nal_header_decode_buf(struct h264_nal_header *hdr, + const uint8_t *buf); +const char *h264_nal_unit_name(enum h264_nalu nal_type); + + +/** + * H.264 Sequence Parameter Set (SPS) + */ +struct h264_sps { + uint8_t profile_idc; + uint8_t level_idc; + uint8_t seq_parameter_set_id; /* 0-31 */ + uint8_t chroma_format_idc; /* 0-3 */ + + unsigned log2_max_frame_num; + unsigned pic_order_cnt_type; + + unsigned max_num_ref_frames; + unsigned pic_width_in_mbs; + unsigned pic_height_in_map_units; + + unsigned frame_crop_left_offset; /* pixels */ + unsigned frame_crop_right_offset; /* pixels */ + unsigned frame_crop_top_offset; /* pixels */ + unsigned frame_crop_bottom_offset; /* pixels */ +}; + +int h264_sps_decode(struct h264_sps *sps, const uint8_t *p, size_t len); +void h264_sps_resolution(const struct h264_sps *sps, + unsigned *width, unsigned *height); +const char *h264_sps_chroma_format_name(uint8_t chroma_format_idc); + + +typedef int (h264_packet_h)(bool marker, uint64_t rtp_ts, + const uint8_t *hdr, size_t hdr_len, + const uint8_t *pld, size_t pld_len, + void *arg); + +/** Fragmentation Unit header */ +struct h264_fu { + unsigned s:1; /**< Start bit */ + unsigned e:1; /**< End bit */ + unsigned r:1; /**< The Reserved bit MUST be equal to 0 */ + unsigned type:5; /**< The NAL unit payload type */ +}; + +int h264_fu_hdr_encode(const struct h264_fu *fu, struct mbuf *mb); +int h264_fu_hdr_decode(struct h264_fu *fu, struct mbuf *mb); + +const uint8_t *h264_find_startcode(const uint8_t *p, const uint8_t *end); + +int h264_packetize(uint64_t rtp_ts, const uint8_t *buf, size_t len, + size_t pktsize, h264_packet_h *pkth, void *arg); +int h264_nal_send(bool first, bool last, + bool marker, uint32_t ihdr, uint64_t rtp_ts, + const uint8_t *buf, size_t size, size_t maxsz, + h264_packet_h *pkth, void *arg); +bool h264_is_keyframe(int type); +int h264_stap_encode(struct mbuf *mb, const uint8_t *frame, + size_t frame_sz); +int h264_stap_decode_annexb(struct mbuf *mb_frame, struct mbuf *mb_pkt); +int h264_stap_decode_annexb_long(struct mbuf *mb_frame, struct mbuf *mb_pkt); + + +/* + * Get bits wrapper + */ + +struct getbit { + const uint8_t *buf; + size_t pos; + size_t end; +}; + +void getbit_init(struct getbit *gb, const uint8_t *buf, size_t size); +size_t getbit_get_left(const struct getbit *gb); +unsigned get_bit(struct getbit *gb); +int get_ue_golomb(struct getbit *gb, unsigned *valp); +unsigned get_bits(struct getbit *gb, unsigned n); +unsigned getbit_read_ns(struct getbit *gb, unsigned n); diff --git a/distribution.video/re/include/re_h265.h b/distribution.video/re/include/re_h265.h new file mode 100644 index 0000000..2c1d3c7 --- /dev/null +++ b/distribution.video/re/include/re_h265.h @@ -0,0 +1,72 @@ +/** + * @file re_h265.h Interface to H.265 header parser + * + * Copyright (C) 2010 - 2022 Alfred E. Heggestad + */ + + +enum { + H265_HDR_SIZE = 2 +}; + + +enum h265_naltype { + /* VCL class */ + H265_NAL_TRAIL_N = 0, + H265_NAL_TRAIL_R = 1, + + H265_NAL_TSA_N = 2, + H265_NAL_TSA_R = 3, + + H265_NAL_STSA_N = 4, + H265_NAL_STSA_R = 5, + H265_NAL_RADL_N = 6, + H265_NAL_RADL_R = 7, + + H265_NAL_RASL_N = 8, + H265_NAL_RASL_R = 9, + + H265_NAL_BLA_W_LP = 16, + H265_NAL_BLA_W_RADL = 17, + H265_NAL_BLA_N_LP = 18, + H265_NAL_IDR_W_RADL = 19, + H265_NAL_IDR_N_LP = 20, + H265_NAL_CRA_NUT = 21, + + /* non-VCL class */ + H265_NAL_VPS_NUT = 32, + H265_NAL_SPS_NUT = 33, + H265_NAL_PPS_NUT = 34, + H265_NAL_AUD = 35, + H265_NAL_EOS_NUT = 36, /* End of sequence */ + H265_NAL_EOB_NUT = 37, /* End of bitstream */ + H265_NAL_FD_NUT = 38, /* Filler data */ + H265_NAL_PREFIX_SEI_NUT = 39, + H265_NAL_SUFFIX_SEI_NUT = 40, + + /* RFC 7798 */ + H265_NAL_AP = 48, /* Aggregation Packets */ + H265_NAL_FU = 49, +}; + +struct h265_nal { + unsigned nal_unit_type:6; /* NAL unit type (0-40) */ + unsigned nuh_temporal_id_plus1:3; /* temporal identifier plus 1 */ +}; + +void h265_nal_encode(uint8_t buf[2], unsigned nal_unit_type, + unsigned nuh_temporal_id_plus1); +int h265_nal_encode_mbuf(struct mbuf *mb, const struct h265_nal *nal); +int h265_nal_decode(struct h265_nal *nal, const uint8_t *p); +void h265_nal_print(const struct h265_nal *nal); +const char *h265_nalunit_name(enum h265_naltype type); +bool h265_is_keyframe(enum h265_naltype type); + + +typedef int (h265_packet_h)(bool marker, uint64_t rtp_ts, + const uint8_t *hdr, size_t hdr_len, + const uint8_t *pld, size_t pld_len, + void *arg); + +int h265_packetize(uint64_t rtp_ts, const uint8_t *buf, size_t len, + size_t pktsize, h265_packet_h *pkth, void *arg); diff --git a/distribution.video/re/include/re_hash.h b/distribution.video/re/include/re_hash.h new file mode 100644 index 0000000..cf9e4f1 --- /dev/null +++ b/distribution.video/re/include/re_hash.h @@ -0,0 +1,35 @@ +/** + * @file re_hash.h Interface to hashmap table + * + * Copyright (C) 2010 Creytiv.com + */ + + +struct hash; +struct pl; + + +int hash_alloc(struct hash **hp, uint32_t bsize); +void hash_append(struct hash *h, uint32_t key, struct le *le, void *data); +void hash_unlink(struct le *le); +struct le *hash_lookup(const struct hash *h, uint32_t key, list_apply_h *ah, + void *arg); +struct le *hash_apply(const struct hash *h, list_apply_h *ah, void *arg); +struct list *hash_list_idx(const struct hash *h, uint32_t i); +struct list *hash_list(const struct hash *h, uint32_t key); +uint32_t hash_bsize(const struct hash *h); +void hash_flush(struct hash *h); +void hash_clear(struct hash *h); +uint32_t hash_valid_size(uint32_t size); +int hash_debug(struct re_printf *pf, struct hash *h); + + +/* Hash functions */ +uint32_t hash_joaat(const uint8_t *key, size_t len); +uint32_t hash_joaat_ci(const char *str, size_t len); +uint32_t hash_joaat_str(const char *str); +uint32_t hash_joaat_str_ci(const char *str); +uint32_t hash_joaat_pl(const struct pl *pl); +uint32_t hash_joaat_pl_ci(const struct pl *pl); +uint32_t hash_fast(const char *k, size_t len); +uint32_t hash_fast_str(const char *str); diff --git a/distribution.video/re/include/re_hmac.h b/distribution.video/re/include/re_hmac.h new file mode 100644 index 0000000..4d77caf --- /dev/null +++ b/distribution.video/re/include/re_hmac.h @@ -0,0 +1,33 @@ +/** + * @file re_hmac.h Interface to HMAC functions + * + * Copyright (C) 2010 Creytiv.com + */ + + +void hmac_sha1(const uint8_t *k, /* secret key */ + size_t lk, /* length of the key in bytes */ + const uint8_t *d, /* data */ + size_t ld, /* length of data in bytes */ + uint8_t* out, /* output buffer, at least "t" bytes */ + size_t t); + +void hmac_sha256(const uint8_t *key, + size_t key_len, + const uint8_t *data, + size_t data_len, + uint8_t *out, + size_t out_len); + + +enum hmac_hash { + HMAC_HASH_SHA1, + HMAC_HASH_SHA256 +}; + +struct hmac; + +int hmac_create(struct hmac **hmacp, enum hmac_hash hash, + const uint8_t *key, size_t key_len); +int hmac_digest(struct hmac *hmac, uint8_t *md, size_t md_len, + const uint8_t *data, size_t data_len); diff --git a/distribution.video/re/include/re_http.h b/distribution.video/re/include/re_http.h new file mode 100644 index 0000000..0a97f3c --- /dev/null +++ b/distribution.video/re/include/re_http.h @@ -0,0 +1,263 @@ +/** + * @file re_http.h Hypertext Transfer Protocol + * + * Copyright (C) 2010 Creytiv.com + */ + +/* forward declarations */ +struct tls; + +/** HTTP Header ID (perfect hash value) */ +enum http_hdrid { + HTTP_HDR_ACCEPT = 3186, + HTTP_HDR_ACCEPT_CHARSET = 24, + HTTP_HDR_ACCEPT_ENCODING = 708, + HTTP_HDR_ACCEPT_LANGUAGE = 2867, + HTTP_HDR_ACCEPT_RANGES = 3027, + HTTP_HDR_AGE = 742, + HTTP_HDR_ALLOW = 2429, + HTTP_HDR_AUTHORIZATION = 2503, + HTTP_HDR_CACHE_CONTROL = 2530, + HTTP_HDR_CONNECTION = 865, + HTTP_HDR_CONTENT_ENCODING = 580, + HTTP_HDR_CONTENT_LANGUAGE = 3371, + HTTP_HDR_CONTENT_LENGTH = 3861, + HTTP_HDR_CONTENT_LOCATION = 3927, + HTTP_HDR_CONTENT_MD5 = 406, + HTTP_HDR_CONTENT_RANGE = 2846, + HTTP_HDR_CONTENT_TYPE = 809, + HTTP_HDR_DATE = 1027, + HTTP_HDR_ETAG = 2392, + HTTP_HDR_EXPECT = 1550, + HTTP_HDR_EXPIRES = 1983, + HTTP_HDR_FROM = 1963, + HTTP_HDR_HOST = 3191, + HTTP_HDR_IF_MATCH = 2684, + HTTP_HDR_IF_MODIFIED_SINCE = 2187, + HTTP_HDR_IF_NONE_MATCH = 4030, + HTTP_HDR_IF_RANGE = 2220, + HTTP_HDR_IF_UNMODIFIED_SINCE = 962, + HTTP_HDR_LAST_MODIFIED = 2946, + HTTP_HDR_LOCATION = 2514, + HTTP_HDR_MAX_FORWARDS = 3549, + HTTP_HDR_PRAGMA = 1673, + HTTP_HDR_PROXY_AUTHENTICATE = 116, + HTTP_HDR_PROXY_AUTHORIZATION = 2363, + HTTP_HDR_RANGE = 4004, + HTTP_HDR_REFERER = 2991, + HTTP_HDR_RETRY_AFTER = 409, + HTTP_HDR_SEC_WEBSOCKET_ACCEPT = 2959, + HTTP_HDR_SEC_WEBSOCKET_EXTENSIONS = 2937, + HTTP_HDR_SEC_WEBSOCKET_KEY = 746, + HTTP_HDR_SEC_WEBSOCKET_PROTOCOL = 2076, + HTTP_HDR_SEC_WEBSOCKET_VERSION = 3158, + HTTP_HDR_SERVER = 973, + HTTP_HDR_TE = 2035, + HTTP_HDR_TRAILER = 2577, + HTTP_HDR_TRANSFER_ENCODING = 2115, + HTTP_HDR_UPGRADE = 717, + HTTP_HDR_USER_AGENT = 4064, + HTTP_HDR_VARY = 3076, + HTTP_HDR_VIA = 3961, + HTTP_HDR_WARNING = 2108, + HTTP_HDR_WWW_AUTHENTICATE = 2763, + + HTTP_HDR_NONE = -1 +}; + + +/** HTTP Header */ +struct http_hdr { + struct le le; /**< Linked-list element */ + struct pl name; /**< HTTP Header name */ + struct pl val; /**< HTTP Header value */ + enum http_hdrid id; /**< HTTP Header id (unique) */ +}; + +/** HTTP Message */ +struct http_msg { + struct pl ver; /**< HTTP Version number */ + struct pl met; /**< Request Method */ + struct pl path; /**< Request path/resource */ + struct pl prm; /**< Request parameters */ + uint16_t scode; /**< Response Status code */ + struct pl reason; /**< Response Reason phrase */ + struct list hdrl; /**< List of HTTP headers (struct http_hdr) */ + struct msg_ctype ctyp; /**< Content-type */ + struct mbuf *_mb; /**< Buffer containing the HTTP message */ + struct mbuf *mb; /**< Buffer containing the HTTP body */ + uint32_t clen; /**< Content length */ +}; + + +struct http_uri { + struct pl scheme; + struct pl host; + struct pl port; + struct pl path; +}; + +int http_uri_decode(struct http_uri *hu, const struct pl *uri); + + +/** Http Client configuration */ +struct http_conf { + uint32_t conn_timeout; /* in [ms] */ + uint32_t recv_timeout; /* in [ms] */ + uint32_t idle_timeout; /* in [ms] */ +}; + + +typedef bool(http_hdr_h)(const struct http_hdr *hdr, void *arg); + +int http_msg_decode(struct http_msg **msgp, struct mbuf *mb, bool req); + + +const struct http_hdr *http_msg_hdr(const struct http_msg *msg, + enum http_hdrid id); +const struct http_hdr *http_msg_hdr_apply(const struct http_msg *msg, + bool fwd, enum http_hdrid id, + http_hdr_h *h, void *arg); +const struct http_hdr *http_msg_xhdr(const struct http_msg *msg, + const char *name); +const struct http_hdr *http_msg_xhdr_apply(const struct http_msg *msg, + bool fwd, const char *name, + http_hdr_h *h, void *arg); +uint32_t http_msg_hdr_count(const struct http_msg *msg, enum http_hdrid id); +uint32_t http_msg_xhdr_count(const struct http_msg *msg, const char *name); +bool http_msg_hdr_has_value(const struct http_msg *msg, enum http_hdrid id, + const char *value); +bool http_msg_xhdr_has_value(const struct http_msg *msg, const char *name, + const char *value); +int http_msg_print(struct re_printf *pf, const struct http_msg *msg); + + +/* Client */ +struct http_cli; +struct http_req; +struct dnsc; +struct tcp_conn; +struct tls_conn; + +typedef void (http_resp_h)(int err, const struct http_msg *msg, void *arg); +typedef int (http_data_h)(const uint8_t *buf, size_t size, + const struct http_msg *msg, void *arg); +typedef void (http_conn_h)(struct tcp_conn *tc, struct tls_conn *sc, + void *arg); +typedef size_t (http_bodyh)(struct mbuf *mb, void *arg); + +int http_client_alloc(struct http_cli **clip, struct dnsc *dnsc); +int http_client_set_config(struct http_cli *cli, struct http_conf *conf); +int http_request(struct http_req **reqp, struct http_cli *cli, const char *met, + const char *uri, http_resp_h *resph, http_data_h *datah, + http_bodyh *bodyh, void *arg, const char *fmt, ...); +void http_req_set_conn_handler(struct http_req *req, http_conn_h *connh); +void http_client_set_laddr(struct http_cli *cli, const struct sa *addr); +void http_client_set_laddr6(struct http_cli *cli, const struct sa *addr); +void http_client_set_bufsize_max(struct http_cli *cli, size_t max_size); +size_t http_client_get_bufsize_max(struct http_cli *cli); + +#ifdef USE_TLS +int http_client_set_tls(struct http_cli *cli, struct tls *tls); +int http_client_get_tls(struct http_cli *cli, struct tls **tls); +int http_client_add_ca(struct http_cli *cli, const char *tls_ca); +int http_client_add_capem(struct http_cli *cli, const char *capem); +int http_client_add_crlpem(struct http_cli *cli, const char *pem); +int http_client_set_tls_hostname(struct http_cli *cli, + const struct pl *hostname); +int http_client_set_cert(struct http_cli *cli, const char *path); +int http_client_set_certpem(struct http_cli *cli, const char *pem); +int http_client_set_key(struct http_cli *cli, const char *path); +int http_client_set_keypem(struct http_cli *cli, const char *pem); +int http_client_use_chain(struct http_cli *cli, const char *path); +int http_client_use_chainpem(struct http_cli *cli, const char *chain, + int len_chain); + +int http_client_set_session_reuse(struct http_cli *cli, bool enabled); +int http_client_set_tls_min_version(struct http_cli *cli, int version); +int http_client_set_tls_max_version(struct http_cli *cli, int version); +int http_client_disable_verify_server(struct http_cli *cli); +#endif + +/* Server */ +struct http_sock; +struct http_conn; + +enum re_https_verify_msg { + HTTPS_MSG_OK = 0, + HTTPS_MSG_REQUEST_CERT = 1, + HTTPS_MSG_IGNORE = 2, +}; + +typedef void (http_req_h)(struct http_conn *conn, const struct http_msg *msg, + void *arg); +typedef enum re_https_verify_msg (https_verify_msg_h)(struct http_conn *conn, + const struct http_msg *msg, void *arg); + +int http_listen_fd(struct http_sock **sockp, re_sock_t fd, http_req_h *reqh, + void *arg); +int http_listen(struct http_sock **sockp, const struct sa *laddr, + http_req_h *reqh, void *arg); +int https_listen(struct http_sock **sockp, const struct sa *laddr, + const char *cert, http_req_h *reqh, void *arg); +int https_set_verify_msgh(struct http_sock *sock, + https_verify_msg_h *verifyh); +void http_set_max_body_size(struct http_sock *sock, size_t limit); +struct tcp_sock *http_sock_tcp(struct http_sock *sock); +struct tls *http_sock_tls(const struct http_sock *conn); +const struct sa *http_conn_peer(const struct http_conn *conn); +struct tcp_conn *http_conn_tcp(struct http_conn *conn); +struct tls_conn *http_conn_tls(struct http_conn *conn); + +void http_conn_reset_timeout(struct http_conn *conn); +void http_conn_close(struct http_conn *conn); +int http_reply(struct http_conn *conn, uint16_t scode, const char *reason, + const char *fmt, ...); +int http_creply(struct http_conn *conn, uint16_t scode, const char *reason, + const char *ctype, const char *fmt, ...); +int http_ereply(struct http_conn *conn, uint16_t scode, const char *reason); + + +/* Authentication */ +struct http_auth { + const char *realm; + bool stale; +}; + +typedef int (http_auth_h)(const struct pl *username, uint8_t *ha1, void *arg); + +int http_auth_print_challenge(struct re_printf *pf, + const struct http_auth *auth); +bool http_auth_check(const struct pl *hval, const struct pl *method, + struct http_auth *auth, http_auth_h *authh, void *arg); +bool http_auth_check_request(const struct http_msg *msg, + struct http_auth *auth, + http_auth_h *authh, void *arg); + +/* http_reqconn - HTTP request connection */ +struct http_reqconn; +int http_reqconn_alloc(struct http_reqconn **pconn, + struct http_cli *client, + http_resp_h *resph, http_data_h *datah, void* arg); +int http_reqconn_set_auth(struct http_reqconn *conn, const struct pl *user, + const struct pl *pass); +int http_reqconn_set_bearer(struct http_reqconn *conn, + const struct pl *bearer); +int http_reqconn_set_authtoken(struct http_reqconn *conn, + const struct pl *token); +int http_reqconn_set_tokentype(struct http_reqconn *conn, + const struct pl *tokentype); +int http_reqconn_set_method(struct http_reqconn *conn, const struct pl *met); +int http_reqconn_set_body(struct http_reqconn *conn, struct mbuf *body); +int http_reqconn_set_ctype(struct http_reqconn *conn, const struct pl *ctype); +int http_reqconn_add_header(struct http_reqconn *conn, + const struct pl *header); +int http_reqconn_clr_header(struct http_reqconn *conn); +int http_reqconn_send(struct http_reqconn *conn, const struct pl *uri); +#ifdef USE_TLS +int http_reqconn_set_tls_hostname(struct http_reqconn *conn, + const struct pl *hostname); +#endif + +int http_reqconn_set_req_bodyh(struct http_reqconn *conn, + http_bodyh cb, uint64_t len); diff --git a/distribution.video/re/include/re_httpauth.h b/distribution.video/re/include/re_httpauth.h new file mode 100644 index 0000000..e5b3c00 --- /dev/null +++ b/distribution.video/re/include/re_httpauth.h @@ -0,0 +1,152 @@ +/** + * @file re_httpauth.h Interface to HTTP Authentication + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** HTTP digest request challenge */ +struct httpauth_digest_chall_req { + char *realm; + char *domain; + char *nonce; + char *opaque; + bool stale; + char *algorithm; + char *qop; + + /* optional */ + char *charset; + bool userhash; +}; + +/** HTTP Digest Challenge */ +struct httpauth_digest_chall { + struct pl realm; + struct pl nonce; + + /* optional */ + struct pl opaque; + struct pl stale; + struct pl algorithm; + struct pl qop; + struct pl domain; + struct pl charset; + struct pl userhash; +}; + +struct httpauth_digest_enc_resp { + char *realm; + char *nonce; + char *opaque; + char *algorithm; + char *qop; + + /* response specific */ + char *response; + char *username; + char *username_star; + char *uri; + uint32_t cnonce; + uint32_t nc; + + /* optional */ + char *charset; + bool userhash; + void (*hashh)(const uint8_t *, size_t, uint8_t *); + size_t hash_length; +}; + +/** HTTP Digest response */ +struct httpauth_digest_resp { + struct pl realm; + struct pl nonce; + struct pl response; + struct pl username; + struct pl uri; + + /* optional */ + struct pl nc; + struct pl cnonce; + struct pl qop; + + struct pl algorithm; + struct pl charset; + struct pl userhash; + void (*hashh)(const uint8_t *, size_t, uint8_t *); + size_t hash_length; + + struct mbuf *mb; +}; + + +/** HTTP Basic */ +struct httpauth_basic { + struct mbuf *mb; + struct pl realm; + struct pl auth; +}; + +struct httpauth_basic_req { + char *realm; + + /* optional */ + char *charset; +}; + + +int httpauth_digest_challenge_decode(struct httpauth_digest_chall *chall, + const struct pl *hval); +int httpauth_digest_response_decode(struct httpauth_digest_resp *resp, + const struct pl *hval); +int httpauth_digest_response_auth(const struct httpauth_digest_resp *resp, + const struct pl *method, const uint8_t *ha1); +int httpauth_digest_make_response(struct httpauth_digest_resp **resp, + const struct httpauth_digest_chall *chall, + const char *path, const char *method, const char *user, + const char *pwd, struct mbuf *body); +int httpauth_digest_response_encode(const struct httpauth_digest_resp *resp, + struct mbuf *mb); + + +int httpauth_digest_response_print(struct re_printf *pf, + const struct httpauth_digest_enc_resp *resp); +int httpauth_digest_response_set_cnonce(struct httpauth_digest_enc_resp *resp, + const struct httpauth_digest_chall *chall, const struct pl *method, + const char *user, const char *passwd, const char *entitybody, + uint32_t cnonce, uint32_t nonce_cnt); +int httpauth_digest_response(struct httpauth_digest_enc_resp **presp, + const struct httpauth_digest_chall *chall, const struct pl *method, + const char *uri, const char *user, const char *passwd, const char *qop, + const char *entitybody); +int httpauth_digest_response_full(struct httpauth_digest_enc_resp **presp, + const struct httpauth_digest_chall *chall, const struct pl *method, + const char *uri, const char *user, const char *passwd, const char *qop, + const char *entitybody, const char *charset, const bool userhash); +int httpauth_digest_verify(struct httpauth_digest_chall_req *req, + const struct pl *hval, const struct pl *method, const char *etag, + const char *user, const char *passwd, const char *entitybody); + +int httpauth_digest_chall_req_print(struct re_printf *pf, + const struct httpauth_digest_chall_req *req); +int httpauth_digest_chall_request(struct httpauth_digest_chall_req **preq, + const char *realm, const char *etag, const char *qop); +int httpauth_digest_chall_request_full(struct httpauth_digest_chall_req **preq, + const char *real, const char *domain, const char *etag, + const char *opaque, const bool stale, const char *algo, + const char *qop, const char *charset, const bool userhash); + +struct httpauth_basic *httpauth_basic_alloc(void); +int httpauth_basic_decode(struct httpauth_basic *basic, + const struct pl *hval); +int httpauth_basic_make_response(struct httpauth_basic *basic, + const char *user, const char *pwd); +int httpauth_basic_encode(const struct httpauth_basic *basic, struct mbuf *mb); + + +int httpauth_basic_request_print(struct re_printf *pf, + const struct httpauth_basic_req *req); +int httpauth_basic_verify(const struct pl *hval, const char *user, + const char *passwd); +int httpauth_basic_request(struct httpauth_basic_req **preq, + const char *realm, const char *charset); diff --git a/distribution.video/re/include/re_ice.h b/distribution.video/re/include/re_ice.h new file mode 100644 index 0000000..5d9d9f8 --- /dev/null +++ b/distribution.video/re/include/re_ice.h @@ -0,0 +1,160 @@ +/** + * @file re_ice.h Interface to Interactive Connectivity Establishment (ICE) + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** ICE Role */ +enum ice_role { + ICE_ROLE_UNKNOWN = 0, + ICE_ROLE_CONTROLLING, + ICE_ROLE_CONTROLLED +}; + +/** ICE Transport **/ +enum ice_transp { + ICE_TRANSP_NONE = -1, + ICE_TRANSP_UDP = IPPROTO_UDP +}; + +/** ICE Component ID */ +enum ice_compid { + ICE_COMPID_RTP = 1, + ICE_COMPID_RTCP = 2 +}; + +/** ICE Candidate type */ +enum ice_cand_type { + ICE_CAND_TYPE_HOST, /**< Host candidate */ + ICE_CAND_TYPE_SRFLX, /**< Server Reflexive candidate */ + ICE_CAND_TYPE_PRFLX, /**< Peer Reflexive candidate */ + ICE_CAND_TYPE_RELAY /**< Relayed candidate */ +}; + +/** ICE TCP protocol type */ +enum ice_tcptype { + ICE_TCP_ACTIVE, /**< Active TCP client */ + ICE_TCP_PASSIVE, /**< Passive TCP server */ + ICE_TCP_SO /**< Simultaneous-open TCP client/server */ +}; + +/** Candidate pair states */ +enum ice_candpair_state { + ICE_CANDPAIR_FROZEN = 0, /**< Frozen state (default) */ + ICE_CANDPAIR_WAITING, /**< Waiting to become highest on list */ + ICE_CANDPAIR_INPROGRESS, /**< In-Progress state;transac. in progress */ + ICE_CANDPAIR_SUCCEEDED, /**< Succeeded state; successful result */ + ICE_CANDPAIR_FAILED /**< Failed state; check failed */ +}; + +/** ICE local candidate policy */ +enum ice_policy { + ICE_POLICY_ALL, /**< Allow all local candidates */ + ICE_POLICY_RELAY, /**< Use only RELAY candidates */ +}; + +struct ice; +struct ice_cand; +struct icem; +struct turnc; + +/** ICE Configuration */ +struct ice_conf { + uint32_t rto; /**< STUN Retransmission TimeOut */ + uint32_t rc; /**< STUN Retransmission Count */ + enum ice_policy policy; /**< ICE Local Candidate Policy */ + bool debug; /**< Enable ICE debugging */ +}; + +typedef void (ice_connchk_h)(int err, bool update, void *arg); + + +/* ICE Media */ +int icem_alloc(struct icem **icemp, enum ice_role role, int proto, int layer, + uint64_t tiebrk, const char *lufrag, const char *lpwd, + ice_connchk_h *chkh, void *arg); +struct ice_conf *icem_conf(struct icem *icem); +enum ice_role icem_local_role(const struct icem *icem); +void icem_set_conf(struct icem *icem, const struct ice_conf *conf); +void icem_set_role(struct icem *icem, enum ice_role role); +void icem_set_name(struct icem *icem, const char *name); +int icem_comp_add(struct icem *icem, unsigned compid, void *sock); + +bool icem_verify_support(struct icem *icem, unsigned compid, + const struct sa *raddr); +int icem_conncheck_start(struct icem *icem); +void icem_conncheck_stop(struct icem *icem, int err); +int icem_add_chan(struct icem *icem, unsigned compid, const struct sa *raddr); +bool icem_mismatch(const struct icem *icem); +void icem_update(struct icem *icem); +int ice_sdp_decode(struct icem *ice, const char *name, const char *value); +int icem_sdp_decode(struct icem *icem, const char *name, const char *value); +int icem_debug(struct re_printf *pf, const struct icem *icem); +struct list *icem_lcandl(const struct icem *icem); +struct list *icem_rcandl(const struct icem *icem); +struct list *icem_checkl(const struct icem *icem); +struct list *icem_validl(const struct icem *icem); +const struct sa *icem_cand_default(struct icem *icem, unsigned compid); +const struct sa *icem_selected_laddr(const struct icem *icem, unsigned compid); +const struct ice_cand *icem_selected_lcand(const struct icem *icem, + unsigned compid); +const struct ice_cand *icem_selected_rcand(const struct icem *icem, + unsigned compid); +void ice_candpair_set_states(struct icem *icem); +void icem_cand_redund_elim(struct icem *icem); +int icem_comps_set_default_cand(struct icem *icem); +struct stun *icem_stun(struct icem *icem); +int icem_set_turn_client(struct icem *icem, unsigned compid, + struct turnc *turnc); + + +bool ice_remotecands_avail(const struct icem *icem); +int ice_cand_encode(struct re_printf *pf, const struct ice_cand *cand); +int ice_remotecands_encode(struct re_printf *pf, const struct icem *icem); +struct ice_cand *icem_cand_find(const struct list *lst, unsigned compid, + const struct sa *addr); +int icem_lcand_add_base(struct icem *icem, enum ice_cand_type type, + unsigned compid, uint16_t lprio, const char *ifname, + enum ice_transp transp, const struct sa *addr); +int icem_lcand_add(struct icem *icem, struct ice_cand *base, + enum ice_cand_type type, + const struct sa *addr); +struct ice_cand *icem_lcand_base(struct ice_cand *lcand); +const struct sa *icem_lcand_addr(const struct ice_cand *cand); +enum ice_cand_type icem_cand_type(const struct ice_cand *cand); + + +extern const char ice_attr_cand[]; +extern const char ice_attr_lite[]; +extern const char ice_attr_mismatch[]; +extern const char ice_attr_pwd[]; +extern const char ice_attr_remote_cand[]; +extern const char ice_attr_ufrag[]; + + +const char *ice_cand_type2name(enum ice_cand_type type); +enum ice_cand_type ice_cand_name2type(const char *name); +const char *ice_role2name(enum ice_role role); +const char *ice_candpair_state2name(enum ice_candpair_state st); + + +uint32_t ice_cand_calc_prio(enum ice_cand_type type, uint16_t lpref, + unsigned compid); + + +/** Defines an SDP candidate attribute */ +struct ice_cand_attr { + char foundation[32]; /**< Foundation string */ + unsigned compid; /**< Component ID (1-256) */ + int proto; /**< Transport protocol */ + uint32_t prio; /**< Priority of this candidate */ + struct sa addr; /**< Transport address */ + enum ice_cand_type type; /**< Candidate type */ + struct sa rel_addr; /**< Related transport address (optional) */ + enum ice_tcptype tcptype; /**< TCP candidate type (TCP-only) */ +}; + +int ice_cand_attr_encode(struct re_printf *pf, + const struct ice_cand_attr *cand); +int ice_cand_attr_decode(struct ice_cand_attr *cand, const char *val); diff --git a/distribution.video/re/include/re_json.h b/distribution.video/re/include/re_json.h new file mode 100644 index 0000000..0cc43db --- /dev/null +++ b/distribution.video/re/include/re_json.h @@ -0,0 +1,50 @@ +/** + * @file re_json.h Interface to JavaScript Object Notation (JSON) -- RFC 7159 + * + * Copyright (C) 2010 - 2015 Creytiv.com + */ + +enum json_typ { + JSON_STRING, + JSON_INT, + JSON_DOUBLE, + JSON_BOOL, + JSON_NULL, +}; + +struct json_value { + union { + char *str; + int64_t integer; + double dbl; + bool boolean; + } v; + enum json_typ type; +}; + +struct json_handlers; + +typedef int (json_object_entry_h)(const char *name, + const struct json_value *value, void *arg); +typedef int (json_array_entry_h)(unsigned idx, + const struct json_value *value, void *arg); +typedef int (json_object_h)(const char *name, unsigned idx, + struct json_handlers *h); +typedef int (json_array_h)(const char *name, unsigned idx, + struct json_handlers *h); + +struct json_handlers { + json_object_h *oh; + json_array_h *ah; + json_object_entry_h *oeh; + json_array_entry_h *aeh; + void *arg; +}; + +int json_decode(const char *str, size_t len, unsigned maxdepth, + json_object_h *oh, json_array_h *ah, + json_object_entry_h *oeh, json_array_entry_h *aeh, void *arg); + +int json_decode_odict(struct odict **op, uint32_t hash_size, const char *str, + size_t len, unsigned maxdepth); +int json_encode_odict(struct re_printf *pf, const struct odict *o); diff --git a/distribution.video/re/include/re_list.h b/distribution.video/re/include/re_list.h new file mode 100644 index 0000000..8cf08f1 --- /dev/null +++ b/distribution.video/re/include/re_list.h @@ -0,0 +1,111 @@ +/** + * @file re_list.h Interface to Linked List + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Linked-list element */ +struct le { + struct le *prev; /**< Previous element */ + struct le *next; /**< Next element */ + struct list *list; /**< Parent list (NULL if not linked-in) */ + void *data; /**< User-data */ +}; + +/** List Element Initializer */ +#define LE_INIT {NULL, NULL, NULL, NULL} + + +/** Defines a linked list */ +struct list { + struct le *head; /**< First list element */ + struct le *tail; /**< Last list element */ +}; + +/** Linked list Initializer */ +#define LIST_INIT {NULL, NULL} + + +/** + * Defines the list apply handler + * + * @param le List element + * @param arg Handler argument + * + * @return true to stop traversing, false to continue + */ +typedef bool (list_apply_h)(struct le *le, void *arg); + +/** + * Defines the list sort handler + * + * @param le1 Current list element + * @param le2 Next list element + * @param arg Handler argument + * + * @return true if sorted, otherwise false + */ +typedef bool (list_sort_h)(struct le *le1, struct le *le2, void *arg); + + +void list_init(struct list *list); +void list_flush(struct list *list); +void list_clear(struct list *list); +void list_append(struct list *list, struct le *le, void *data); +void list_prepend(struct list *list, struct le *le, void *data); +void list_insert_before(struct list *list, struct le *le, struct le *ile, + void *data); +void list_insert_after(struct list *list, struct le *le, struct le *ile, + void *data); +void list_insert_sorted(struct list *list, list_sort_h *sh, void *arg, + struct le *ile, void *data); +void list_unlink(struct le *le); +void list_sort(struct list *list, list_sort_h *sh, void *arg); +struct le *list_apply(const struct list *list, bool fwd, list_apply_h *ah, + void *arg); +struct le *list_head(const struct list *list); +struct le *list_tail(const struct list *list); +uint32_t list_count(const struct list *list); + + +/** + * Get the user-data from a list element + * + * @param le List element + * + * @return Pointer to user-data + */ +static inline void *list_ledata(const struct le *le) +{ + return le ? le->data : NULL; +} + + +static inline bool list_contains(const struct list *list, const struct le *le) +{ + return le ? le->list == list : false; +} + + +static inline bool list_isempty(const struct list *list) +{ + return list ? list->head == NULL : true; +} + + +#define LIST_FOREACH(list, le) \ + for ((le) = list_head((list)); (le); (le) = (le)->next) + + +/** + * Move element to another linked list + * + * @param le List element to move + * @param list Destination list + */ +static inline void list_move(struct le *le, struct list *list) +{ + list_unlink(le); + list_append(list, le, le->data); +} diff --git a/distribution.video/re/include/re_main.h b/distribution.video/re/include/re_main.h new file mode 100644 index 0000000..4d6d94b --- /dev/null +++ b/distribution.video/re/include/re_main.h @@ -0,0 +1,92 @@ +/** + * @file re_main.h Interface to main polling routine + * + * Copyright (C) 2010 Creytiv.com + */ + +#include "re_async.h" + +struct re; +struct re_fhs; + +enum { +#ifndef FD_READ + FD_READ = 1<<0, +#endif +#ifndef FD_WRITE + FD_WRITE = 1<<1, +#endif + FD_EXCEPT = 1<<2 +}; + + +/** + * File descriptor event handler + * + * @param flags Event flags + * @param arg Handler argument + */ +typedef void (fd_h)(int flags, void *arg); + +/** + * Thread-safe signal handler + * + * @param sig Signal number + */ +typedef void (re_signal_h)(int sig); + + +int fd_listen(struct re_fhs **fhsp, re_sock_t fd, int flags, fd_h *fh, + void *arg); +struct re_fhs *fd_close(struct re_fhs *fhs); +int fd_setsize(int maxfds); + +int libre_init(void); +void libre_close(void); +void libre_exception_btrace(bool enable); + +int re_main(re_signal_h *signalh); +void re_cancel(void); +int re_debug(struct re_printf *pf, void *unused); +int re_nfds(void); + +int re_alloc(struct re **rep); +int re_thread_attach(struct re *re); +void re_thread_detach(void); + +int re_thread_init(void); +void re_thread_close(void); +void re_thread_enter(void); +void re_thread_leave(void); +int re_thread_check(bool debug); +int re_thread_async_init(uint16_t workers); +void re_thread_async_close(void); +int re_thread_async(re_async_work_h *work, re_async_h *cb, void *arg); +int re_thread_async_main(re_async_work_h *work, re_async_h *cb, void *arg); +int re_thread_async_id(intptr_t id, re_async_work_h *work, re_async_h *cb, + void *arg); +int re_thread_async_main_id(intptr_t id, re_async_work_h *work, re_async_h *cb, + void *arg); +void re_thread_async_cancel(intptr_t id); +void re_thread_async_main_cancel(intptr_t id); + +void re_set_mutex(void *mutexp); +void re_fhs_flush(void); + +struct tmrl *re_tmrl_get(void); + +/** Polling methods */ +enum poll_method { + METHOD_NULL = 0, + METHOD_SELECT, + METHOD_EPOLL, + METHOD_KQUEUE, + /* sep */ + METHOD_MAX +}; + +int poll_method_set(enum poll_method method); +enum poll_method poll_method_get(void); +enum poll_method poll_method_best(void); +const char *poll_method_name(enum poll_method method); +int poll_method_type(enum poll_method *method, const struct pl *name); diff --git a/distribution.video/re/include/re_mbuf.h b/distribution.video/re/include/re_mbuf.h new file mode 100644 index 0000000..58cd249 --- /dev/null +++ b/distribution.video/re/include/re_mbuf.h @@ -0,0 +1,220 @@ +/** + * @file re_mbuf.h Interface to memory buffers + * + * Copyright (C) 2010 Creytiv.com + */ + + +#include + + +#ifndef RELEASE +#define MBUF_DEBUG 1 /**< Mbuf debugging (0 or 1) */ +#endif + +#if MBUF_DEBUG +/** Check that mbuf position does not exceed end */ +#define MBUF_CHECK_POS(mb) \ + if ((mb) && (mb)->pos > (mb)->end) { \ + RE_BREAKPOINT; \ + } +/** Check that mbuf end does not exceed size */ +#define MBUF_CHECK_END(mb) \ + if ((mb) && (mb)->end > (mb)->size) { \ + RE_BREAKPOINT; \ + } +#else +#define MBUF_CHECK_POS(mb) +#define MBUF_CHECK_END(mb) +#endif + +/** + * Defines a memory buffer. + * + * This is a dynamic and linear buffer for storing raw bytes. + * It is designed for network protocols, and supports automatic + * resizing of the buffer. + * + * - Writing to the buffer + * - Reading from the buffer + * - Automatic growing of buffer size + * - Print function for formatting printing + */ +struct mbuf { + uint8_t *buf; /**< Buffer memory */ + size_t size; /**< Size of buffer */ + size_t pos; /**< Position in buffer */ + size_t end; /**< End of buffer */ +}; + + +struct pl; +struct re_printf; + +struct mbuf *mbuf_alloc(size_t size); +struct mbuf *mbuf_dup(struct mbuf *mbd); +struct mbuf *mbuf_alloc_ref(struct mbuf *mbr); +void mbuf_init(struct mbuf *mb); +void mbuf_reset(struct mbuf *mb); +int mbuf_resize(struct mbuf *mb, size_t size); +void mbuf_trim(struct mbuf *mb); +int mbuf_shift(struct mbuf *mb, ssize_t shift); +int mbuf_write_mem(struct mbuf *mb, const uint8_t *buf, size_t size); +int mbuf_write_ptr(struct mbuf *mb, intptr_t v); +int mbuf_write_u8(struct mbuf *mb, uint8_t v); +int mbuf_write_u16(struct mbuf *mb, uint16_t v); +int mbuf_write_u32(struct mbuf *mb, uint32_t v); +int mbuf_write_u64(struct mbuf *mb, uint64_t v); +int mbuf_write_str(struct mbuf *mb, const char *str); +int mbuf_write_pl(struct mbuf *mb, const struct pl *pl); +int mbuf_read_mem(struct mbuf *mb, uint8_t *buf, size_t size); +intptr_t mbuf_read_ptr(struct mbuf *mb); +uint8_t mbuf_read_u8(struct mbuf *mb); +uint16_t mbuf_read_u16(struct mbuf *mb); +uint32_t mbuf_read_u32(struct mbuf *mb); +uint64_t mbuf_read_u64(struct mbuf *mb); +int mbuf_read_str(struct mbuf *mb, char *str, size_t size); +int mbuf_strdup(struct mbuf *mb, char **strp, size_t len); +int mbuf_vprintf(struct mbuf *mb, const char *fmt, va_list ap); + +#ifdef HAVE_RE_ARG +#define mbuf_printf(mb, fmt, ...) \ + _mbuf_printf_s((mb), (fmt), RE_VA_ARGS(__VA_ARGS__)) +#else +#define mbuf_printf _mbuf_printf +#endif + +int _mbuf_printf(struct mbuf *mb, const char *fmt, ...); +int _mbuf_printf_s(struct mbuf *mb, const char *fmt, ...); + +int mbuf_write_pl_skip(struct mbuf *mb, const struct pl *pl, + const struct pl *skip); +int mbuf_fill(struct mbuf *mb, uint8_t c, size_t n); +void mbuf_set_posend(struct mbuf *mb, size_t pos, size_t end); +int mbuf_debug(struct re_printf *pf, const struct mbuf *mb); + + +/** + * Get the buffer from the current position + * + * @param mb Memory buffer + * + * @return Current buffer + */ +static inline uint8_t *mbuf_buf(const struct mbuf *mb) +{ + return mb ? mb->buf + mb->pos : (uint8_t *)NULL; +} + + +/** + * Get number of bytes left in a memory buffer, from current position to end + * + * @param mb Memory buffer + * + * @return Number of bytes left + */ +static inline size_t mbuf_get_left(const struct mbuf *mb) +{ + return (mb && (mb->end > mb->pos)) ? (mb->end - mb->pos) : 0; +} + + +/** + * Get available space in buffer (size - pos) + * + * @param mb Memory buffer + * + * @return Number of bytes available in buffer + */ +static inline size_t mbuf_get_space(const struct mbuf *mb) +{ + return (mb && (mb->size > mb->pos)) ? (mb->size - mb->pos) : 0; +} + + +/** + * Set absolute position + * + * @param mb Memory buffer + * @param pos Position + */ +static inline void mbuf_set_pos(struct mbuf *mb, size_t pos) +{ + mb->pos = pos; + MBUF_CHECK_POS(mb); +} + + +/** + * Set absolute end + * + * @param mb Memory buffer + * @param end End position + */ +static inline void mbuf_set_end(struct mbuf *mb, size_t end) +{ + mb->end = end; + MBUF_CHECK_END(mb); +} + + +/** + * Advance position +/- N bytes + * + * @param mb Memory buffer + * @param n Number of bytes to advance + */ +static inline void mbuf_advance(struct mbuf *mb, ssize_t n) +{ + mb->pos += n; + MBUF_CHECK_POS(mb); +} + + +/** + * Rewind position and end to the beginning of buffer + * + * @param mb Memory buffer + */ +static inline void mbuf_rewind(struct mbuf *mb) +{ + mb->pos = mb->end = 0; +} + + +/** + * Set position to the end of the buffer + * + * @param mb Memory buffer + */ +static inline void mbuf_skip_to_end(struct mbuf *mb) +{ + mb->pos = mb->end; +} + + +/** + * Get the current MBUF position + * + * @param mb Memory buffer + * + * @return Current position + */ +static inline size_t mbuf_pos(const struct mbuf *mb) +{ + return mb ? mb->pos : 0; +} + + +/** + * Get the current MBUF end position + * + * @param mb Memory buffer + * + * @return Current end position + */ +static inline size_t mbuf_end(const struct mbuf *mb) +{ + return mb ? mb->end : 0; +} diff --git a/distribution.video/re/include/re_md5.h b/distribution.video/re/include/re_md5.h new file mode 100644 index 0000000..df26d59 --- /dev/null +++ b/distribution.video/re/include/re_md5.h @@ -0,0 +1,15 @@ +/** + * @file re_md5.h Interface to MD5 functions + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** MD5 values */ +enum { + MD5_SIZE = 16, /**< Number of bytes in MD5 hash */ + MD5_STR_SIZE = 2*MD5_SIZE + 1 /**< Number of bytes in MD5 string */ +}; + +void md5(const uint8_t *d, size_t n, uint8_t *md); +int md5_printf(uint8_t *md, const char *fmt, ...); diff --git a/distribution.video/re/include/re_mem.h b/distribution.video/re/include/re_mem.h new file mode 100644 index 0000000..cb24702 --- /dev/null +++ b/distribution.video/re/include/re_mem.h @@ -0,0 +1,54 @@ +/** + * @file re_mem.h Interface to Memory management with reference counting + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** + * Defines the memory destructor handler, which is called when the reference + * of a memory object goes down to zero + * + * @param data Pointer to memory object + */ +typedef void (mem_destroy_h)(void *data); + +/** Memory Statistics */ +struct memstat { + size_t bytes_cur; /**< Current bytes allocated */ + size_t blocks_cur; /**< Current blocks allocated */ +}; + +void *mem_alloc(size_t size, mem_destroy_h *dh); +void *mem_zalloc(size_t size, mem_destroy_h *dh); +void *mem_realloc(void *data, size_t size); +void *mem_reallocarray(void *ptr, size_t nmemb, + size_t membsize, mem_destroy_h *dh); +void mem_destructor(void *data, mem_destroy_h *dh); +void *mem_ref(void *data); +void *mem_deref(void *data); +uint32_t mem_nrefs(const void *data); + +void mem_debug(void); +void mem_threshold_set(ssize_t n); +struct re_printf; +int mem_status(struct re_printf *pf, void *unused); +int mem_get_stat(struct memstat *mstat); + + +/* Secure memory functions */ +int mem_seccmp(const uint8_t *s1, const uint8_t *s2, size_t n); +void mem_secclean(void *data, size_t size); + + +/* Mem Pool */ +struct mem_pool; +struct mem_pool_entry; +int mem_pool_alloc(struct mem_pool **poolp, size_t nmemb, size_t membsize, + mem_destroy_h *dh); +int mem_pool_extend(struct mem_pool *pool, size_t num); +struct mem_pool_entry *mem_pool_borrow(struct mem_pool *pool); +struct mem_pool_entry *mem_pool_borrow_extend(struct mem_pool *pool); +void *mem_pool_release(struct mem_pool *pool, struct mem_pool_entry *e); +void *mem_pool_member(const struct mem_pool_entry *entry); +void mem_pool_flush(struct mem_pool *pool); diff --git a/distribution.video/re/include/re_mod.h b/distribution.video/re/include/re_mod.h new file mode 100644 index 0000000..4b132c4 --- /dev/null +++ b/distribution.video/re/include/re_mod.h @@ -0,0 +1,75 @@ +/** + * @file re_mod.h Interface to loadable modules + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** + * @def MOD_PRE + * + * Module Prefix + * + * @def MOD_EXT + * + * Module Extension + */ +#if defined (WIN32) +#define MOD_PRE "" +#define MOD_EXT ".dll" +#else +#define MOD_PRE "" +#define MOD_EXT ".so" +#endif + + +/** Symbol to enable exporting of functions from a module */ +#ifdef WIN32 +#define EXPORT_SYM __declspec(dllexport) +#else +#define EXPORT_SYM +#endif + + +/* ----- Module API ----- */ + + +/** + * Defines the module initialisation handler + * + * @return 0 for success, otherwise errorcode + */ +typedef int (mod_init_h)(void); + +/** + * Defines the module close handler + * + * @return 0 for success, otherwise errorcode + */ +typedef int (mod_close_h)(void); + + +struct mod; +struct re_printf; + + +/** Defines the module export */ +struct mod_export { + const char *name; /**< Module name */ + const char *type; /**< Module type */ + mod_init_h *init; /**< Module init handler */ + mod_close_h *close; /**< Module close handler */ +}; + + +/* ----- Application API ----- */ + +void mod_init(void); +void mod_close(void); + +int mod_load(struct mod **mp, const char *name); +int mod_add(struct mod **mp, const struct mod_export *me); +struct mod *mod_find(const char *name); +const struct mod_export *mod_export(const struct mod *m); +struct list *mod_list(void); +int mod_debug(struct re_printf *pf, void *unused); diff --git a/distribution.video/re/include/re_mqueue.h b/distribution.video/re/include/re_mqueue.h new file mode 100644 index 0000000..ddd9aa7 --- /dev/null +++ b/distribution.video/re/include/re_mqueue.h @@ -0,0 +1,12 @@ +/** + * @file re_mqueue.h Thread Safe Message Queue + * + * Copyright (C) 2010 Creytiv.com + */ + +struct mqueue; + +typedef void (mqueue_h)(int id, void *data, void *arg); + +int mqueue_alloc(struct mqueue **mqp, mqueue_h *h, void *arg); +int mqueue_push(struct mqueue *mq, int id, void *data); diff --git a/distribution.video/re/include/re_msg.h b/distribution.video/re/include/re_msg.h new file mode 100644 index 0000000..9c52ee9 --- /dev/null +++ b/distribution.video/re/include/re_msg.h @@ -0,0 +1,21 @@ +/** + * @file re_msg.h Interface to generic message components + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Content-Type */ +struct msg_ctype { + struct pl type; + struct pl subtype; + struct pl params; +}; + + +int msg_ctype_decode(struct msg_ctype *ctype, const struct pl *pl); +bool msg_ctype_cmp(const struct msg_ctype *ctype, + const char *type, const char *subtype); + +int msg_param_decode(const struct pl *pl, const char *name, struct pl *val); +int msg_param_exists(const struct pl *pl, const char *name, struct pl *end); diff --git a/distribution.video/re/include/re_net.h b/distribution.video/re/include/re_net.h new file mode 100644 index 0000000..7f16f7a --- /dev/null +++ b/distribution.video/re/include/re_net.h @@ -0,0 +1,103 @@ +/** + * @file re_net.h Interface to Networking module. + * + * Copyright (C) 2010 Creytiv.com + */ +#if defined(WIN32) +#include +#include +#else +#include +#ifndef _BSD_SOCKLEN_T_ +#define _BSD_SOCKLEN_T_ int /**< Defines the BSD socket length type */ +#endif +#include +#include +#include +#endif + +/** Length of IPv4 address string */ +#ifndef INET_ADDRSTRLEN +#define INET_ADDRSTRLEN 16 +#endif + +/** Length of IPv6 address string */ +#ifndef INET6_ADDRSTRLEN +#define INET6_ADDRSTRLEN 46 +#endif + + +/* forward declarations */ +struct sa; + + +/* Net generic */ +int net_dst_source_addr_get(const struct sa *dst, struct sa *ip); +int net_default_source_addr_get(int af, struct sa *ip); +int net_default_gateway_get(int af, struct sa *gw); + + +/* Net sockets */ +int net_sock_init(void); +void net_sock_close(void); + + +/* Net socket options */ +int net_sockopt_blocking_set(re_sock_t fd, bool blocking); +int net_sockopt_reuse_set(re_sock_t fd, bool reuse); +int net_sockopt_v6only(re_sock_t fd, bool only); + + +/* Net interface (if.c) */ + +/** + * Defines the interface address handler - called once per interface + * + * @param ifname Name of the interface + * @param sa IP address of the interface + * @param arg Handler argument + * + * @return true to stop traversing, false to continue + */ +typedef bool (net_ifaddr_h)(const char *ifname, const struct sa *sa, + void *arg); + +int net_if_getname(char *ifname, size_t sz, int af, const struct sa *ip); +int net_if_getaddr(const char *ifname, int af, struct sa *ip); +int net_if_getaddr4(const char *ifname, int af, struct sa *ip); +int net_if_list(net_ifaddr_h *ifh, void *arg); +int net_if_apply(net_ifaddr_h *ifh, void *arg); +int net_if_debug(struct re_printf *pf, void *unused); +int net_if_getlinklocal(const char *ifname, int af, struct sa *ip); + + +/* Net interface (ifaddrs.c) */ +int net_getifaddrs(net_ifaddr_h *ifh, void *arg); +int net_netlink_addrs(net_ifaddr_h *ifh, void *arg); + + +/* Net route */ + +/** + * Defines the routing table handler - called once per route entry + * + * @param ifname Interface name + * @param dst Destination IP address/network + * @param dstlen Prefix length of destination + * @param gw Gateway IP address + * @param arg Handler argument + * + * @return true to stop traversing, false to continue + */ +typedef bool (net_rt_h)(const char *ifname, const struct sa *dst, + int dstlen, const struct sa *gw, void *arg); + +int net_rt_list(net_rt_h *rth, void *arg); +int net_rt_default_get(int af, char *ifname, size_t size); +int net_rt_debug(struct re_printf *pf, void *unused); + + +/* Net strings */ +const char *net_proto2name(int proto); +const char *net_af2name(int af); + diff --git a/distribution.video/re/include/re_odict.h b/distribution.video/re/include/re_odict.h new file mode 100644 index 0000000..bdac0c5 --- /dev/null +++ b/distribution.video/re/include/re_odict.h @@ -0,0 +1,66 @@ +/** + * @file re_odict.h Interface to Ordered Dictionary + * + * Copyright (C) 2010 - 2015 Creytiv.com + */ + +enum odict_type { + ODICT_ERR = -1, + ODICT_OBJECT, + ODICT_ARRAY, + ODICT_STRING, + ODICT_INT, + ODICT_DOUBLE, + ODICT_BOOL, + ODICT_NULL +}; + +struct odict { + struct list lst; + struct hash *ht; +}; + +struct odict_entry; + +int odict_alloc(struct odict **op, uint32_t hash_size); +const struct odict_entry *odict_lookup(const struct odict *o, const char *key); +size_t odict_count(const struct odict *o, bool nested); +int odict_debug(struct re_printf *pf, const struct odict *o); + +int odict_entry_add(struct odict *o, const char *key, + int type, ...); +int odict_pl_add(struct odict *od, const char *key, + const struct pl *val); +void odict_entry_del(struct odict *o, const char *key); +int odict_entry_debug(struct re_printf *pf, const struct odict_entry *e); +bool odict_compare(const struct odict *dict1, const struct odict *dict2, + bool ignore_order); + +bool odict_type_iscontainer(enum odict_type type); +bool odict_type_isreal(enum odict_type type); +const char *odict_type_name(enum odict_type type); + + +/* Odict Helpers */ + +const struct odict_entry *odict_get_type(const struct odict *o, + enum odict_type type, const char *key); +const char *odict_string(const struct odict *o, const char *key); +bool odict_get_number(const struct odict *o, uint64_t *num, const char *key); +bool odict_get_boolean(const struct odict *o, bool *value, const char *key); +struct odict *odict_get_object(const struct odict *o, const char *key); +struct odict *odict_get_array(const struct odict *o, const char *key); + + +/* Entry Helpers */ + +enum odict_type odict_entry_type(const struct odict_entry *e); +const char *odict_entry_key(const struct odict_entry *e); +struct odict *odict_entry_object(const struct odict_entry *e); +struct odict *odict_entry_array(const struct odict_entry *e); +char *odict_entry_str(const struct odict_entry *e); +int64_t odict_entry_int(const struct odict_entry *e); +double odict_entry_dbl(const struct odict_entry *e); +bool odict_entry_boolean(const struct odict_entry *e); +bool odict_value_compare(const struct odict_entry *e1, + const struct odict_entry *e2, bool ignore_order); diff --git a/distribution.video/re/include/re_pcp.h b/distribution.video/re/include/re_pcp.h new file mode 100644 index 0000000..ba5726b --- /dev/null +++ b/distribution.video/re/include/re_pcp.h @@ -0,0 +1,199 @@ +/** + * @file re_pcp.h PCP - Port Control Protocol (RFC 6887) + * + * Copyright (C) 2010 - 2014 Alfred E. Heggestad + */ + + +/* + * The following specifications are implemented: + * + * RFC 6887 + * draft-ietf-pcp-description-option-02 + * draft-cheshire-pcp-unsupp-family + * + */ + + +/** PCP Version numbers */ +enum { + PCP_VERSION = 2, +}; + +/* PCP port numbers */ +enum { + PCP_PORT_CLI = 5350, /* for ANNOUNCE notifications */ + PCP_PORT_SRV = 5351, +}; + +/** PCP Protocol sizes */ +enum { + PCP_HDR_SZ = 24, + PCP_NONCE_SZ = 12, + PCP_MAP_SZ = 36, + PCP_PEER_SZ = 56, + + PCP_MIN_PACKET = 24, + PCP_MAX_PACKET = 1100 +}; + +enum pcp_opcode { + PCP_ANNOUNCE = 0, + PCP_MAP = 1, + PCP_PEER = 2, +}; + +enum pcp_result { + PCP_SUCCESS = 0, + PCP_UNSUPP_VERSION = 1, + PCP_NOT_AUTHORIZED = 2, + PCP_MALFORMED_REQUEST = 3, + PCP_UNSUPP_OPCODE = 4, + PCP_UNSUPP_OPTION = 5, + PCP_MALFORMED_OPTION = 6, + PCP_NETWORK_FAILURE = 7, + PCP_NO_RESOURCES = 8, + PCP_UNSUPP_PROTOCOL = 9, + PCP_USER_EX_QUOTA = 10, + PCP_CANNOT_PROVIDE_EXTERNAL = 11, + PCP_ADDRESS_MISMATCH = 12, + PCP_EXCESSIVE_REMOTE_PEERS = 13, +}; + +enum pcp_option_code { + PCP_OPTION_THIRD_PARTY = 1, + PCP_OPTION_PREFER_FAILURE = 2, + PCP_OPTION_FILTER = 3, + PCP_OPTION_DESCRIPTION = 128, /* RFC 7220 */ +}; + +/* forward declarations */ +struct udp_sock; + +/** Defines a PCP option */ +struct pcp_option { + struct le le; + enum pcp_option_code code; + union { + struct sa third_party; /* Internal IP-address */ + struct pcp_option_filter { + uint8_t prefix_length; + struct sa remote_peer; + } filter; + char *description; + } u; +}; + +/** + * Defines a complete and decoded PCP request/response. + * + * A PCP message consist of a header, and optional payload and options: + * + * [ Header ] + * ( Opcode Payload ) + * ( PCP Options ) + * + */ +struct pcp_msg { + + /** PCP Common Header */ + struct pcp_hdr { + uint8_t version; /**< PCP Protocol version 2 */ + unsigned resp:1; /**< R-bit; 0=Request, 1=Response */ + uint8_t opcode; /**< A 7-bit opcode */ + uint32_t lifetime; /**< Lifetime in [seconds] */ + + /* request: */ + struct sa cli_addr; /**< Client's IP Address (SA_ADDR) */ + + /* response: */ + enum pcp_result result; /**< Result code for this response */ + uint32_t epoch; /**< Server's Epoch Time [seconds] */ + } hdr; + + /** PCP Opcode-specific payload */ + union pcp_payload { + struct pcp_map { + uint8_t nonce[PCP_NONCE_SZ]; /**< Mapping Nonce */ + uint8_t proto; /**< IANA protocol */ + uint16_t int_port; /**< Internal Port */ + struct sa ext_addr; /**< External Address */ + } map; + struct pcp_peer { + struct pcp_map map; /**< Common with MAP */ + struct sa remote_addr; /**< Remote address */ + } peer; + } pld; + + /** List of PCP Options (struct pcp_option) */ + struct list optionl; +}; + +/** PCP request configuration */ +struct pcp_conf { + uint32_t irt; /**< Initial retransmission time [seconds] */ + uint32_t mrc; /**< Maximum retransmission count */ + uint32_t mrt; /**< Maximum retransmission time [seconds] */ + uint32_t mrd; /**< Maximum retransmission duration [seconds] */ +}; + + +/* request */ + +struct pcp_request; + +typedef void (pcp_resp_h)(int err, struct pcp_msg *msg, void *arg); + +int pcp_request(struct pcp_request **reqp, const struct pcp_conf *conf, + const struct sa *pcp_server, enum pcp_opcode opcode, + uint32_t lifetime, const void *payload, + pcp_resp_h *resph, void *arg, uint32_t optionc, ...); +void pcp_force_refresh(struct pcp_request *req); + + +/* reply */ + +int pcp_reply(struct udp_sock *us, const struct sa *dst, struct mbuf *req, + enum pcp_opcode opcode, enum pcp_result result, + uint32_t lifetime, uint32_t epoch_time, const void *payload); + + +/* msg */ + +typedef bool (pcp_option_h)(const struct pcp_option *opt, void *arg); + +int pcp_msg_decode(struct pcp_msg **msgp, struct mbuf *mb); +int pcp_msg_printhdr(struct re_printf *pf, const struct pcp_msg *msg); +int pcp_msg_print(struct re_printf *pf, const struct pcp_msg *msg); +struct pcp_option *pcp_msg_option(const struct pcp_msg *msg, + enum pcp_option_code code); +struct pcp_option *pcp_msg_option_apply(const struct pcp_msg *msg, + pcp_option_h *h, void *arg); +const void *pcp_msg_payload(const struct pcp_msg *msg); + + +/* option */ + +int pcp_option_encode(struct mbuf *mb, enum pcp_option_code code, + const void *v); +int pcp_option_decode(struct pcp_option **optp, struct mbuf *mb); +int pcp_option_print(struct re_printf *pf, const struct pcp_option *opt); + + +/* encode */ + +int pcp_msg_req_vencode(struct mbuf *mb, enum pcp_opcode opcode, + uint32_t lifetime, const struct sa *cli_addr, + const void *payload, uint32_t optionc, va_list ap); +int pcp_msg_req_encode(struct mbuf *mb, enum pcp_opcode opcode, + uint32_t lifetime, const struct sa *cli_addr, + const void *payload, uint32_t optionc, ...); + + +/* pcp */ + +int pcp_ipaddr_encode(struct mbuf *mb, const struct sa *sa); +int pcp_ipaddr_decode(struct mbuf *mb, struct sa *sa); +const char *pcp_result_name(enum pcp_result result); +const char *pcp_opcode_name(enum pcp_opcode opcode); +const char *pcp_proto_name(int proto); diff --git a/distribution.video/re/include/re_rtmp.h b/distribution.video/re/include/re_rtmp.h new file mode 100644 index 0000000..a7bb4fb --- /dev/null +++ b/distribution.video/re/include/re_rtmp.h @@ -0,0 +1,142 @@ +/** + * @file re_rtmp.h Interface to Real Time Messaging Protocol (RTMP) + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** RTMP Protocol values */ +enum { + RTMP_PORT = 1935, +}; + +/** RTMP Stream IDs */ +enum { + + /* User Control messages SHOULD use message stream ID 0 + (known as the control stream) */ + RTMP_CONTROL_STREAM_ID = 0 +}; + +/** RTMP Packet types */ +enum rtmp_packet_type { + RTMP_TYPE_SET_CHUNK_SIZE = 1, /**< Set Chunk Size */ + RTMP_TYPE_ACKNOWLEDGEMENT = 3, /**< Acknowledgement */ + RTMP_TYPE_USER_CONTROL_MSG = 4, /**< User Control Messages */ + RTMP_TYPE_WINDOW_ACK_SIZE = 5, /**< Window Acknowledgement Size */ + RTMP_TYPE_SET_PEER_BANDWIDTH = 6, /**< Set Peer Bandwidth */ + RTMP_TYPE_AUDIO = 8, /**< Audio Message */ + RTMP_TYPE_VIDEO = 9, /**< Video Message */ + RTMP_TYPE_DATA = 18, /**< Data Message */ + RTMP_TYPE_AMF0 = 20, /**< Action Message Format (AMF) */ +}; + +/** RTMP AMF types */ +enum rtmp_amf_type { + RTMP_AMF_TYPE_ROOT = -1, /**< Special internal type */ + RTMP_AMF_TYPE_NUMBER = 0x00, /**< Number Type */ + RTMP_AMF_TYPE_BOOLEAN = 0x01, /**< Boolean Type */ + RTMP_AMF_TYPE_STRING = 0x02, /**< String Type */ + RTMP_AMF_TYPE_OBJECT = 0x03, /**< Object Type */ + RTMP_AMF_TYPE_NULL = 0x05, /**< Null type */ + RTMP_AMF_TYPE_ECMA_ARRAY = 0x08, /**< ECMA 'associative' Array */ + RTMP_AMF_TYPE_OBJECT_END = 0x09, /**< Object End Type */ + RTMP_AMF_TYPE_STRICT_ARRAY = 0x0a, /**< Array with ordinal indices */ +}; + +/** RTMP Event types */ +enum rtmp_event_type { + RTMP_EVENT_STREAM_BEGIN = 0, /**< Stream begin */ + RTMP_EVENT_STREAM_EOF = 1, /**< Stream End-Of-File */ + RTMP_EVENT_STREAM_DRY = 2, /**< No more data on the stream */ + RTMP_EVENT_SET_BUFFER_LENGTH = 3, /**< Set buffer size in [ms] */ + RTMP_EVENT_STREAM_IS_RECORDED = 4, /**< Stream is recorded */ + RTMP_EVENT_PING_REQUEST = 6, /**< Ping Request from server */ + RTMP_EVENT_PING_RESPONSE = 7, /**< Ping Response to server */ +}; + + +/* forward declarations */ +struct tls; +struct dnsc; +struct odict; +struct tcp_sock; + + +/* + * RTMP High-level API (connection, stream) + */ + + +/* conn */ +struct rtmp_conn; + +typedef void (rtmp_estab_h)(void *arg); +typedef void (rtmp_command_h)(const struct odict *msg, void *arg); +typedef void (rtmp_close_h)(int err, void *arg); + +int rtmp_connect(struct rtmp_conn **connp, struct dnsc *dnsc, const char *uri, + struct tls *tls, + rtmp_estab_h *estabh, rtmp_command_h *cmdh, + rtmp_close_h *closeh, void *arg); +int rtmp_accept(struct rtmp_conn **connp, struct tcp_sock *ts, + struct tls *tls, + rtmp_command_h *cmdh, rtmp_close_h *closeh, void *arg); +int rtmp_control(const struct rtmp_conn *conn, + enum rtmp_packet_type type, ...); +void rtmp_set_handlers(struct rtmp_conn *conn, rtmp_command_h *cmdh, + rtmp_close_h *closeh, void *arg); +struct tcp_conn *rtmp_conn_tcpconn(const struct rtmp_conn *conn); +const char *rtmp_conn_stream(const struct rtmp_conn *conn); +int rtmp_conn_debug(struct re_printf *pf, const struct rtmp_conn *conn); + + +typedef void (rtmp_resp_h)(bool success, const struct odict *msg, + void *arg); + +/* amf */ +int rtmp_amf_command(const struct rtmp_conn *conn, uint32_t stream_id, + const char *command, + unsigned body_propc, ...); +int rtmp_amf_request(struct rtmp_conn *conn, uint32_t stream_id, + const char *command, + rtmp_resp_h *resph, void *arg, unsigned body_propc, ...); +int rtmp_amf_reply(struct rtmp_conn *conn, uint32_t stream_id, bool success, + const struct odict *req, + unsigned body_propc, ...); +int rtmp_amf_data(const struct rtmp_conn *conn, uint32_t stream_id, + const char *command, unsigned body_propc, ...); + + +/* stream */ +struct rtmp_stream; + +typedef void (rtmp_control_h)(enum rtmp_event_type event, struct mbuf *mb, + void *arg); +typedef void (rtmp_audio_h)(uint32_t timestamp, + const uint8_t *pld, size_t len, void *arg); +typedef void (rtmp_video_h)(uint32_t timestamp, + const uint8_t *pld, size_t len, void *arg); + +int rtmp_stream_alloc(struct rtmp_stream **strmp, struct rtmp_conn *conn, + uint32_t stream_id, rtmp_command_h *cmdh, + rtmp_control_h *ctrlh, rtmp_audio_h *auh, + rtmp_video_h *vidh, rtmp_command_h *datah, + void *arg); +int rtmp_stream_create(struct rtmp_stream **strmp, struct rtmp_conn *conn, + rtmp_resp_h *resph, rtmp_command_h *cmdh, + rtmp_control_h *ctrlh, rtmp_audio_h *auh, + rtmp_video_h *vidh, rtmp_command_h *datah, + void *arg); +int rtmp_play(struct rtmp_stream *strm, const char *name); +int rtmp_publish(struct rtmp_stream *strm, const char *name); +int rtmp_meta(struct rtmp_stream *strm); +int rtmp_send_audio(struct rtmp_stream *strm, uint32_t timestamp, + const uint8_t *pld, size_t len); +int rtmp_send_video(struct rtmp_stream *strm, uint32_t timestamp, + const uint8_t *pld, size_t len); +struct rtmp_stream *rtmp_stream_find(const struct rtmp_conn *conn, + uint32_t stream_id); + + +const char *rtmp_event_name(enum rtmp_event_type event); diff --git a/distribution.video/re/include/re_rtp.h b/distribution.video/re/include/re_rtp.h new file mode 100644 index 0000000..db65339 --- /dev/null +++ b/distribution.video/re/include/re_rtp.h @@ -0,0 +1,353 @@ +/** + * @file re_rtp.h Interface to Real-time Transport Protocol and RTCP + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** RTP protocol values */ +enum { + RTP_VERSION = 2, /**< Defines the RTP version we support */ + RTCP_VERSION = 2, /**< Supported RTCP Version */ + RTP_HEADER_SIZE = 12 /**< Number of bytes in RTP Header */ +}; + + +/** Defines the RTP header */ +struct rtp_header { + uint8_t ver; /**< RTP version number */ + bool pad; /**< Padding bit */ + bool ext; /**< Extension bit */ + uint8_t cc; /**< CSRC count */ + bool m; /**< Marker bit */ + uint8_t pt; /**< Payload type */ + uint16_t seq; /**< Sequence number */ + uint32_t ts; /**< Timestamp */ + uint64_t ts_arrive; /**< Arrival Timestamp */ + uint32_t ssrc; /**< Synchronization source */ + uint32_t csrc[16]; /**< Contributing sources */ + struct { + uint16_t type; /**< Defined by profile */ + uint16_t len; /**< Number of 32-bit words */ + } x; +}; + +/** RTCP Packet Types */ +enum rtcp_type { + RTCP_FIR = 192, /**< Full INTRA-frame Request (RFC 2032) */ + RTCP_NACK = 193, /**< Negative Acknowledgement (RFC 2032) */ + RTCP_SR = 200, /**< Sender Report */ + RTCP_RR = 201, /**< Receiver Report */ + RTCP_SDES = 202, /**< Source Description */ + RTCP_BYE = 203, /**< Goodbye */ + RTCP_APP = 204, /**< Application-defined */ + RTCP_RTPFB = 205, /**< Transport layer FB message (RFC 4585) */ + RTCP_PSFB = 206, /**< Payload-specific FB message (RFC 4585) */ + RTCP_XR = 207, /**< Extended Report (RFC 3611) */ + RTCP_AVB = 208, /**< AVB RTCP Packet (IEEE1733) */ +}; + +/** SDES Types */ +enum rtcp_sdes_type { + RTCP_SDES_END = 0, /**< End of SDES list */ + RTCP_SDES_CNAME = 1, /**< Canonical name */ + RTCP_SDES_NAME = 2, /**< User name */ + RTCP_SDES_EMAIL = 3, /**< User's electronic mail address */ + RTCP_SDES_PHONE = 4, /**< User's phone number */ + RTCP_SDES_LOC = 5, /**< Geographic user location */ + RTCP_SDES_TOOL = 6, /**< Name of application or tool */ + RTCP_SDES_NOTE = 7, /**< Notice about the source */ + RTCP_SDES_PRIV = 8 /**< Private extension */ +}; + +/** Transport Layer Feedback Messages */ +enum rtcp_rtpfb { + RTCP_RTPFB_GNACK = 1, /**< Generic NACK */ + RTCP_RTPFB_TWCC = 15 /**< transport-wide-cc-extensions-01 */ +}; + +/** Payload-Specific Feedback Messages */ +enum rtcp_psfb { + RTCP_PSFB_PLI = 1, /**< Picture Loss Indication (PLI) */ + RTCP_PSFB_SLI = 2, /**< Slice Loss Indication (SLI) */ + RTCP_PSFB_FIR = 4, /**< Full INTRA-frame Request (FIR) (RFC 5104) */ + RTCP_PSFB_AFB = 15, /**< Application layer Feedback Messages */ +}; + +/** Reception report block */ +struct rtcp_rr { + uint32_t ssrc; /**< Data source being reported */ + unsigned int fraction:8; /**< Fraction lost since last SR/RR */ + signed int lost:24; /**< Cumul. no. pkts lost (signed!) */ + uint32_t last_seq; /**< Extended last seq. no. received */ + uint32_t jitter; /**< Interarrival jitter */ + uint32_t lsr; /**< Last SR packet from this source */ + uint32_t dlsr; /**< Delay since last SR packet */ +}; + +/** SDES item */ +struct rtcp_sdes_item { + enum rtcp_sdes_type type; /**< Type of item (enum rtcp_sdes_type) */ + uint8_t length; /**< Length of item (in octets) */ + char *data; /**< Text, not null-terminated */ +}; + +/** One RTCP Message */ +struct rtcp_msg { + /** RTCP Header */ + struct rtcp_hdr { + unsigned int version:2; /**< Protocol version */ + unsigned int p:1; /**< Padding flag */ + unsigned int count:5; /**< Varies by packet type */ + unsigned int pt:8; /**< RTCP packet type */ + uint16_t length; /**< Packet length in words */ + } hdr; + union { + /** Sender report (SR) */ + struct { + uint32_t ssrc; /**< Sender generating report */ + uint32_t ntp_sec; /**< NTP timestamp - seconds */ + uint32_t ntp_frac; /**< NTP timestamp - fractions */ + uint32_t rtp_ts; /**< RTP timestamp */ + uint32_t psent; /**< RTP packets sent */ + uint32_t osent; /**< RTP octets sent */ + struct rtcp_rr *rrv; /**< Reception report blocks */ + } sr; + + /** Reception report (RR) */ + struct { + uint32_t ssrc; /**< Receiver generating report*/ + struct rtcp_rr *rrv; /**< Reception report blocks */ + } rr; + + /** Source Description (SDES) */ + struct rtcp_sdes { + uint32_t src; /**< First SSRC/CSRC */ + struct rtcp_sdes_item *itemv; /**< SDES items */ + uint32_t n; /**< Number of SDES items */ + } *sdesv; + + /** BYE */ + struct { + uint32_t *srcv; /**< List of sources */ + char *reason; /**< Reason for leaving (opt.) */ + } bye; + + /** Application-defined (APP) */ + struct { + uint32_t src; /**< SSRC/CSRC */ + char name[4]; /**< Name (ASCII) */ + uint8_t *data; /**< Application data (32 bits) */ + size_t data_len; /**< Number of data bytes */ + } app; + + /** Full INTRA-frame Request (FIR) packet */ + struct { + uint32_t ssrc; /**< SSRC for sender of this packet */ + } fir; + + /** Negative ACKnowledgements (NACK) packet */ + struct { + uint32_t ssrc; /**< SSRC for sender of this packet */ + uint16_t fsn; /**< First Sequence Number lost */ + uint16_t blp; /**< Bitmask of lost packets */ + } nack; + + /** Feedback (RTPFB or PSFB) packet */ + struct { + uint32_t ssrc_packet; + uint32_t ssrc_media; + uint32_t n; + /** Feedback Control Information (FCI) */ + union { + struct gnack { + uint16_t pid; + uint16_t blp; + } *gnackv; + struct sli { + uint16_t first; + uint16_t number; + uint8_t picid; + } *sliv; + struct fir_rfc5104 { + uint32_t ssrc; + uint8_t seq_n; + } *firv; + struct twcc { + uint16_t seq; + uint16_t count; + uint32_t reftime; + uint8_t fbcount; + struct mbuf *chunks; + struct mbuf *deltas; + } *twccv; + struct mbuf *afb; + void *p; + } fci; + } fb; + } r; +}; + +/** RTCP Statistics */ +struct rtcp_stats { + struct { + uint32_t sent; /**< Tx RTP Packets */ + int lost; /**< Tx RTP Packets Lost */ + uint32_t jit; /**< Tx Inter-arrival Jitter in [us] */ + } tx; + struct { + uint32_t sent; /**< Rx RTP Packets */ + int lost; /**< Rx RTP Packets Lost */ + uint32_t jit; /**< Rx Inter-Arrival Jitter in [us] */ + } rx; + uint32_t rtt; /**< Current Round-Trip Time in [us] */ +}; + +struct sa; +struct re_printf; +struct rtp_sock; + +/** + * Defines the callback handler for received RTP packets + * + * @param src Source network address + * @param hdr RTP header + * @param mb RTP payload + * @param arg Handler argument + */ +typedef void (rtp_recv_h)(const struct sa *src, const struct rtp_header *hdr, + struct mbuf *mb, void *arg); + + +/** + * Defines the callback handler for received RTCP packets + * + * @param src Source network address + * @param msg RTCP packet + * @param arg Handler argument + */ +typedef void (rtcp_recv_h)(const struct sa *src, struct rtcp_msg *msg, + void *arg); + +/* RTP api */ +int rtp_alloc(struct rtp_sock **rsp); +int rtp_listen(struct rtp_sock **rsp, int proto, const struct sa *ip, + uint16_t min_port, uint16_t max_port, bool enable_rtcp, + rtp_recv_h *recvh, rtcp_recv_h *rtcph, void *arg); +int rtp_open(struct rtp_sock **rsp, int af); +int rtp_hdr_encode(struct mbuf *mb, const struct rtp_header *hdr); +int rtp_hdr_decode(struct rtp_header *hdr, struct mbuf *mb); +int rtp_encode(struct rtp_sock *rs, bool ext, bool marker, uint8_t pt, + uint32_t ts, struct mbuf *mb); +int rtp_encode_seq(struct rtp_sock *rs, uint16_t seq, bool ext, bool marker, + uint8_t pt, uint32_t ts, struct mbuf *mb); +int rtp_decode(struct rtp_sock *rs, struct mbuf *mb, struct rtp_header *hdr); +int rtp_send(struct rtp_sock *rs, const struct sa *dst, bool ext, + bool marker, uint8_t pt, uint32_t ts, uint64_t jfs_rt, + struct mbuf *mb); +int rtp_resend(struct rtp_sock *rs, uint16_t seq, const struct sa *dst, + bool ext, bool marker, uint8_t pt, uint32_t ts, + struct mbuf *mb); +int rtp_debug(struct re_printf *pf, const struct rtp_sock *rs); +void *rtp_sock(const struct rtp_sock *rs); +uint32_t rtp_sess_ssrc(const struct rtp_sock *rs); +uint16_t rtp_sess_seq(const struct rtp_sock *rs); +const struct sa *rtp_local(const struct rtp_sock *rs); +int rtp_clear(struct rtp_sock *rs); + +/* RTCP session api */ +void rtcp_start(struct rtp_sock *rs, const char *cname, + const struct sa *peer); +void rtcp_enable_mux(struct rtp_sock *rs, bool enabled); +void rtcp_set_interval(struct rtp_sock *rs, uint32_t n); +void rtcp_set_srate(struct rtp_sock *rs, uint32_t sr_tx, uint32_t sr_rx); +void rtcp_set_srate_tx(struct rtp_sock *rs, uint32_t srate_tx); +void rtcp_set_srate_rx(struct rtp_sock *rs, uint32_t srate_rx); +int rtcp_send(struct rtp_sock *rs, struct mbuf *mb); +int rtcp_send_app(struct rtp_sock *rs, const char name[4], + const uint8_t *data, size_t len); +int rtcp_send_fir(struct rtp_sock *rs, uint32_t ssrc); +int rtcp_send_nack(struct rtp_sock *rs, uint16_t fsn, uint16_t blp); +int rtcp_send_gnack(struct rtp_sock *rs, uint32_t ssrc, uint16_t fsn, + uint16_t blp); +int rtcp_send_pli(struct rtp_sock *rs, uint32_t fb_ssrc); +int rtcp_send_fir_rfc5104(struct rtp_sock *rs, uint32_t ssrc, + uint8_t fir_seqn); +int rtcp_debug(struct re_printf *pf, const struct rtp_sock *rs); +void *rtcp_sock(const struct rtp_sock *rs); +int rtcp_stats(struct rtp_sock *rs, uint32_t ssrc, struct rtcp_stats *stats); +int rtcp_send_bye_packet(struct rtp_sock *rs); + +/* RTCP utils */ +int rtcp_encode(struct mbuf *mb, enum rtcp_type type, uint32_t count, ...); +int rtcp_decode(struct rtcp_msg **msgp, struct mbuf *mb); +int rtcp_msg_print(struct re_printf *pf, const struct rtcp_msg *msg); +int rtcp_sdes_encode(struct mbuf *mb, uint32_t src, uint32_t itemc, ...); +const char *rtcp_type_name(enum rtcp_type type); +const char *rtcp_sdes_name(enum rtcp_sdes_type sdes); +bool rtp_is_rtcp_packet(const struct mbuf *mb); +void rtcp_calc_rtt(uint32_t *rtt, uint32_t lsr, uint32_t dlsr); + + +/** + * Check if a payload type is RTCP + * + * @param pt Payload type + * + * @return True if RTCP, otherwise false + */ +static inline bool rtp_pt_is_rtcp(uint8_t pt) +{ + return 64 <= pt && pt <= 95; +} + + +/** + * Calculate difference between two sequence numbers + * + * @param x First sequence number + * @param y Second sequence number + * + * @return Difference between the two sequence numbers + */ +static inline int16_t rtp_seq_diff(uint16_t x, uint16_t y) +{ + return (int16_t)(y - x); +} + + +/** NTP Time */ +struct rtp_ntp_time { + uint32_t hi; /**< Seconds since 0h UTC on 1 January 1900 */ + uint32_t lo; /**< Fraction of seconds */ +}; + +/** Per-source state information */ +struct rtp_source { + struct sa rtp_peer; /**< IP-address of the RTP source */ + uint16_t max_seq; /**< Highest seq. number seen */ + uint32_t cycles; /**< Shifted count of seq. number cycles */ + uint32_t base_seq; /**< Base seq number */ + uint32_t bad_seq; /**< Last 'bad' seq number + 1 */ + uint32_t probation; /**< Sequ. packets till source is valid */ + uint32_t received; /**< Packets received */ + uint32_t expected_prior; /**< Packet expected at last interval */ + uint32_t received_prior; /**< Packet received at last interval */ + int transit; /**< Relative trans time for prev pkt */ + uint32_t jitter; /**< Estimated jitter */ + size_t rtp_rx_bytes; /**< Number of RTP bytes received */ + uint64_t sr_recv; /**< When the last SR was received */ + struct rtp_ntp_time last_sr;/**< NTP Timestamp from last SR recvd */ + uint32_t rtp_ts; /**< RTP timestamp */ + uint32_t last_rtp_ts; /**< Last RTP timestamp */ + uint32_t psent; /**< RTP packets sent */ + uint32_t osent; /**< RTP octets sent */ +}; + +/* Source */ +void rtp_source_init_seq(struct rtp_source *s, uint16_t seq); +int rtp_source_update_seq(struct rtp_source *s, uint16_t seq); +void rtp_source_calc_jitter(struct rtp_source *s, uint32_t rtp_ts, + uint32_t arrival); +int rtp_source_calc_lost(const struct rtp_source *s); +uint8_t rtp_source_calc_fraction_lost(struct rtp_source *s); diff --git a/distribution.video/re/include/re_rtpext.h b/distribution.video/re/include/re_rtpext.h new file mode 100644 index 0000000..f78a9a2 --- /dev/null +++ b/distribution.video/re/include/re_rtpext.h @@ -0,0 +1,43 @@ +/** + * @file re_rtpext.h Interface to RTP Header Extensions + * + * Copyright (C) 2010 - 2022 Alfred E. Heggestad + */ + + +/* + * RTP Header Extensions + */ + +#define RTPEXT_HDR_SIZE 4 +#define RTPEXT_TYPE_MAGIC 0xbede /* One-Byte header */ +#define RTPEXT_TYPE_MAGIC_LONG 0x1000 /* Two-Byte header */ + +enum { + RTPEXT_ID_MIN = 1, + RTPEXT_ID_MAX = 14, +}; + +enum { + RTPEXT_LEN_MIN = 1, + RTPEXT_LEN_MAX = 16, + RTPEXT_LEN_MAX_LONG = 256, +}; + + +/** Defines an RTP header extension */ +struct rtpext { + uint8_t id; /**< Identifier */ + uint8_t len; /**< Length of data [bytes] */ + uint8_t data[RTPEXT_LEN_MAX_LONG]; /**< Data field */ +}; + + +int rtpext_hdr_encode(struct mbuf *mb, size_t num_bytes); +int rtpext_hdr_encode_long(struct mbuf *mb, size_t num_bytes); +int rtpext_encode(struct mbuf *mb, uint8_t id, size_t len, + const uint8_t *data); +int rtpext_encode_long(struct mbuf *mb, uint8_t id, uint8_t len, + const uint8_t *data); +int rtpext_decode(struct rtpext *ext, struct mbuf *mb); +int rtpext_decode_long(struct rtpext *ext, struct mbuf *mb); diff --git a/distribution.video/re/include/re_sa.h b/distribution.video/re/include/re_sa.h new file mode 100644 index 0000000..1d26a0e --- /dev/null +++ b/distribution.video/re/include/re_sa.h @@ -0,0 +1,79 @@ +/** + * @file re_sa.h Interface to Socket Address + * + * Copyright (C) 2010 Creytiv.com + */ +#if defined(WIN32) +#include +#include +#if !defined(UNIX_PATH_MAX) +#define UNIX_PATH_MAX 108 +typedef struct sockaddr_un { + ADDRESS_FAMILY sun_family; + char sun_path[UNIX_PATH_MAX]; +} SOCKADDR_UN, *PSOCKADDR_UN; +#endif +#else +#include +#include +#include +#include +#endif + + +struct pl; + +/** Socket Address flags */ +enum sa_flag { + SA_ADDR = 1<<0, + SA_PORT = 1<<1, + SA_ALL = SA_ADDR | SA_PORT +}; + +/** Defines a Socket Address */ +struct sa { + union { + struct sockaddr sa; + struct sockaddr_in in; + struct sockaddr_in6 in6; +#if !defined(HAVE_UNIXSOCK) || HAVE_UNIXSOCK == 1 + struct sockaddr_un un; +#endif + } u; + socklen_t len; +}; + +void sa_init(struct sa *sa, int af); +int sa_set(struct sa *sa, const struct pl *addr, uint16_t port); +int sa_set_str(struct sa *sa, const char *addr, uint16_t port); +void sa_set_in(struct sa *sa, uint32_t addr, uint16_t port); +void sa_set_in6(struct sa *sa, const uint8_t *addr, uint16_t port); +int sa_set_sa(struct sa *sa, const struct sockaddr *s); +void sa_set_port(struct sa *sa, uint16_t port); +int sa_decode(struct sa *sa, const char *str, size_t len); + +int sa_af(const struct sa *sa); +uint32_t sa_in(const struct sa *sa); +void sa_in6(const struct sa *sa, uint8_t *addr); +int sa_addrinfo(const char *addr, struct sa *sa); + +int sa_ntop(const struct sa *sa, char *buf, int size); +int sa_pton(const char *addr, struct sa *sa); +uint16_t sa_port(const struct sa *sa); +bool sa_isset(const struct sa *sa, int flag); +uint32_t sa_hash(const struct sa *sa, int flag); + +void sa_cpy(struct sa *dst, const struct sa *src); +bool sa_cmp(const struct sa *l, const struct sa *r, int flag); + +bool sa_is_linklocal(const struct sa *sa); +bool sa_is_loopback(const struct sa *sa); +bool sa_is_multicast(const struct sa *sa); +bool sa_is_any(const struct sa *sa); + +void sa_set_scopeid(struct sa *sa, uint32_t scopeid); +uint32_t sa_scopeid(const struct sa *sa); +size_t sa_struct_get_size(void); + +struct re_printf; +int sa_print_addr(struct re_printf *pf, const struct sa *sa); diff --git a/distribution.video/re/include/re_sdp.h b/distribution.video/re/include/re_sdp.h new file mode 100644 index 0000000..c5a8404 --- /dev/null +++ b/distribution.video/re/include/re_sdp.h @@ -0,0 +1,191 @@ +/** + * @file re_sdp.h Interface to Session Description Protocol (SDP) + * + * Copyright (C) 2010 Creytiv.com + */ + + +enum { + SDP_VERSION = 0 +}; + +/** SDP Direction */ +enum sdp_dir { + SDP_INACTIVE = 0, + SDP_RECVONLY = 1, + SDP_SENDONLY = 2, + SDP_SENDRECV = 3, +}; + +/** SDP Bandwidth type */ +enum sdp_bandwidth { + SDP_BANDWIDTH_MIN = 0, + SDP_BANDWIDTH_CT = 0, /**< [kbit/s] Conference Total */ + SDP_BANDWIDTH_AS, /**< [kbit/s] Application Specific */ + SDP_BANDWIDTH_RS, /**< [bit/s] RTCP Senders (RFC 3556) */ + SDP_BANDWIDTH_RR, /**< [bit/s] RTCP Receivers (RFC 3556) */ + SDP_BANDWIDTH_TIAS, /**< [bit/s] Transport Independent Application + Specific Maximum (RFC 3890) */ + SDP_BANDWIDTH_MAX, +}; + + +struct sdp_format; + +typedef int(sdp_media_enc_h)(struct mbuf *mb, bool offer, void *arg); +typedef int(sdp_fmtp_enc_h)(struct mbuf *mb, const struct sdp_format *fmt, + bool offer, void *data); +typedef bool(sdp_fmtp_cmp_h)(const char *params1, const char *params2, + void *data); +typedef bool(sdp_format_h)(struct sdp_format *fmt, void *arg); +typedef bool(sdp_attr_h)(const char *name, const char *value, void *arg); + +/** SDP Format */ +struct sdp_format { + struct le le; + char *id; + char *params; + char *rparams; + char *name; + sdp_fmtp_enc_h *ench; + sdp_fmtp_cmp_h *cmph; + void *data; + bool ref; + bool sup; + int pt; + uint32_t srate; + uint8_t ch; +}; + + +/* session */ +struct sdp_session; + +int sdp_session_alloc(struct sdp_session **sessp, const struct sa *laddr); +void sdp_session_set_laddr(struct sdp_session *sess, const struct sa *laddr); +const struct sa *sdp_session_laddr(struct sdp_session *sess); +void sdp_session_set_lbandwidth(struct sdp_session *sess, + enum sdp_bandwidth type, int32_t bw); +int sdp_session_set_lattr(struct sdp_session *sess, bool replace, + const char *name, const char *value, ...); +void sdp_session_del_lattr(struct sdp_session *sess, const char *name); +int32_t sdp_session_lbandwidth(const struct sdp_session *sess, + enum sdp_bandwidth type); +int32_t sdp_session_rbandwidth(const struct sdp_session *sess, + enum sdp_bandwidth type); +const char *sdp_session_rattr(const struct sdp_session *sess, + const char *name); +const char *sdp_session_rattr_apply(const struct sdp_session *sess, + const char *name, + sdp_attr_h *attrh, void *arg); +const struct list *sdp_session_medial(const struct sdp_session *sess, + bool local); +int sdp_session_debug(struct re_printf *pf, const struct sdp_session *sess); + + +/* media */ +struct sdp_media; + +int sdp_media_add(struct sdp_media **mp, struct sdp_session *sess, + const char *name, uint16_t port, const char *proto); +int sdp_media_set_alt_protos(struct sdp_media *m, unsigned protoc, ...); +void sdp_media_set_encode_handler(struct sdp_media *m, sdp_media_enc_h *ench, + void *arg); +void sdp_media_set_fmt_ignore(struct sdp_media *m, bool fmt_ignore); +bool sdp_media_disabled(struct sdp_media *m); +void sdp_media_set_disabled(struct sdp_media *m, bool disabled); +void sdp_media_set_lport(struct sdp_media *m, uint16_t port); +void sdp_media_set_laddr(struct sdp_media *m, const struct sa *laddr); +void sdp_media_set_lbandwidth(struct sdp_media *m, enum sdp_bandwidth type, + int32_t bw); +void sdp_media_set_lport_rtcp(struct sdp_media *m, uint16_t port); +void sdp_media_set_laddr_rtcp(struct sdp_media *m, const struct sa *laddr); +void sdp_media_set_ldir(struct sdp_media *m, enum sdp_dir dir); +int sdp_media_set_lattr(struct sdp_media *m, bool replace, + const char *name, const char *value, ...); +void sdp_media_del_lattr(struct sdp_media *m, const char *name); +const char *sdp_media_proto(const struct sdp_media *m); +uint16_t sdp_media_rport(const struct sdp_media *m); +const struct sa *sdp_media_raddr(const struct sdp_media *m); +const struct sa *sdp_media_laddr(const struct sdp_media *m); +void sdp_media_raddr_rtcp(const struct sdp_media *m, struct sa *raddr); +int32_t sdp_media_rbandwidth(const struct sdp_media *m, + enum sdp_bandwidth type); +enum sdp_dir sdp_media_ldir(const struct sdp_media *m); +enum sdp_dir sdp_media_rdir(const struct sdp_media *m); +enum sdp_dir sdp_media_dir(const struct sdp_media *m); +const struct sdp_format *sdp_media_lformat(const struct sdp_media *m, int pt); +const struct sdp_format *sdp_media_rformat(const struct sdp_media *m, + const char *name); +struct sdp_format *sdp_media_format(const struct sdp_media *m, + bool local, const char *id, + int pt, const char *name, + int32_t srate, int8_t ch); +struct sdp_format *sdp_media_format_apply(const struct sdp_media *m, + bool local, const char *id, + int pt, const char *name, + int32_t srate, int8_t ch, + sdp_format_h *fmth, void *arg); +const struct list *sdp_media_format_lst(const struct sdp_media *m, bool local); +const char *sdp_media_rattr(const struct sdp_media *m, const char *name); +const char *sdp_media_session_rattr(const struct sdp_media *m, + const struct sdp_session *sess, + const char *name); +const char *sdp_media_lattr_apply(const struct sdp_media *m, const char *name, + sdp_attr_h *attrh, void *arg); +const char *sdp_media_rattr_apply(const struct sdp_media *m, const char *name, + sdp_attr_h *attrh, void *arg); +const char *sdp_media_name(const struct sdp_media *m); +int sdp_media_debug(struct re_printf *pf, const struct sdp_media *m); + + +/* format */ +int sdp_format_add(struct sdp_format **fmtp, struct sdp_media *m, + bool prepend, const char *id, const char *name, + uint32_t srate, uint8_t ch, sdp_fmtp_enc_h *ench, + sdp_fmtp_cmp_h *cmph, void *data, bool ref, + const char *params, ...); +int sdp_format_set_params(struct sdp_format *fmt, const char *params, ...); +bool sdp_format_cmp(const struct sdp_format *fmt1, + const struct sdp_format *fmt2); +int sdp_format_debug(struct re_printf *pf, const struct sdp_format *fmt); + + +/* encode/decode */ +int sdp_encode(struct mbuf **mbp, struct sdp_session *sess, bool offer); +int sdp_decode(struct sdp_session *sess, struct mbuf *mb, bool offer); + + +/* strings */ +const char *sdp_dir_name(enum sdp_dir dir); +const char *sdp_bandwidth_name(enum sdp_bandwidth type); + + +extern const char sdp_attr_fmtp[]; +extern const char sdp_attr_maxptime[]; +extern const char sdp_attr_ptime[]; +extern const char sdp_attr_rtcp[]; +extern const char sdp_attr_rtpmap[]; + +extern const char sdp_media_audio[]; +extern const char sdp_media_video[]; +extern const char sdp_media_text[]; + +extern const char sdp_proto_rtpavp[]; +extern const char sdp_proto_rtpsavp[]; + + +/* utility functions */ + +enum sdp_dir sdp_dir_decode(const struct pl *pl); + +/** RTP Header Extensions, as defined in RFC 5285 */ +struct sdp_extmap { + struct pl name; + struct pl attrs; + enum sdp_dir dir; + bool dir_set; + uint32_t id; +}; + +int sdp_extmap_decode(struct sdp_extmap *ext, const char *val); diff --git a/distribution.video/re/include/re_sha.h b/distribution.video/re/include/re_sha.h new file mode 100644 index 0000000..834b572 --- /dev/null +++ b/distribution.video/re/include/re_sha.h @@ -0,0 +1,29 @@ +/** + * @file re_sha.h Interface to SHA (Secure Hash Standard) functions + * + * Copyright (C) 2010 Creytiv.com + */ + +/** SHA-1 Digest size in bytes */ +#define SHA1_DIGEST_SIZE 20 +#define SHA256_DIGEST_SIZE 32 +#define SHA512_DIGEST_SIZE 64 + +#ifndef SHA_DIGEST_LENGTH +/** SHA-1 Digest size in bytes (OpenSSL compat) */ +#define SHA_DIGEST_LENGTH SHA1_DIGEST_SIZE +#endif + +#ifndef SHA256_DIGEST_LENGTH +/** SHA-256 Digest size in bytes (OpenSSL compat) */ +#define SHA256_DIGEST_LENGTH SHA256_DIGEST_SIZE +#endif + +#ifndef SHA512_DIGEST_LENGTH +/** SHA-512 Digest size in bytes (OpenSSL compat) */ +#define SHA512_DIGEST_LENGTH SHA512_DIGEST_SIZE +#endif + +void sha1(const uint8_t *d, size_t n, uint8_t *md); +void sha256(const uint8_t *d, size_t n, uint8_t *md); +int sha256_printf(uint8_t md[32], const char *fmt, ...); diff --git a/distribution.video/re/include/re_shim.h b/distribution.video/re/include/re_shim.h new file mode 100644 index 0000000..1ae2134 --- /dev/null +++ b/distribution.video/re/include/re_shim.h @@ -0,0 +1,20 @@ +/** + * @file re_shim.h Interface to SHIM layer + * + * Copyright (C) 2015 - 2022 Alfred E. Heggestad + */ + + +/* RFC 4571 */ + + +enum { SHIM_HDR_SIZE = 2 }; + +struct shim; + +typedef bool (shim_frame_h)(struct mbuf *mb, void *arg); + + +int shim_insert(struct shim **shimp, struct tcp_conn *tc, int layer, + shim_frame_h *frameh, void *arg); +int shim_debug(struct re_printf *pf, const struct shim *shim); diff --git a/distribution.video/re/include/re_sip.h b/distribution.video/re/include/re_sip.h new file mode 100644 index 0000000..acd2c7c --- /dev/null +++ b/distribution.video/re/include/re_sip.h @@ -0,0 +1,458 @@ +/** + * @file re_sip.h Session Initiation Protocol + * + * Copyright (C) 2010 Creytiv.com + */ + +/* forward declarations */ +struct tls; + +enum { + SIP_PORT = 5060, + SIP_PORT_TLS = 5061, +}; + +/** SIP Transport */ +enum sip_transp { + SIP_TRANSP_NONE = -1, + SIP_TRANSP_UDP = 0, + SIP_TRANSP_TCP, + SIP_TRANSP_TLS, + SIP_TRANSP_WS, + SIP_TRANSP_WSS, + + SIP_TRANSPC, +}; + + +/** SIP Header ID (perfect hash value) */ +enum sip_hdrid { + SIP_HDR_ACCEPT = 3186, + SIP_HDR_ACCEPT_CONTACT = 232, + SIP_HDR_ACCEPT_ENCODING = 708, + SIP_HDR_ACCEPT_LANGUAGE = 2867, + SIP_HDR_ACCEPT_RESOURCE_PRIORITY = 1848, + SIP_HDR_ALERT_INFO = 274, + SIP_HDR_ALLOW = 2429, + SIP_HDR_ALLOW_EVENTS = 66, + SIP_HDR_ANSWER_MODE = 2905, + SIP_HDR_AUTHENTICATION_INFO = 3144, + SIP_HDR_AUTHORIZATION = 2503, + SIP_HDR_CALL_ID = 3095, + SIP_HDR_CALL_INFO = 586, + SIP_HDR_CONTACT = 229, + SIP_HDR_CONTENT_DISPOSITION = 1425, + SIP_HDR_CONTENT_ENCODING = 580, + SIP_HDR_CONTENT_LANGUAGE = 3371, + SIP_HDR_CONTENT_LENGTH = 3861, + SIP_HDR_CONTENT_TYPE = 809, + SIP_HDR_CSEQ = 746, + SIP_HDR_DATE = 1027, + SIP_HDR_ENCRYPTION = 3125, + SIP_HDR_ERROR_INFO = 21, + SIP_HDR_EVENT = 3286, + SIP_HDR_EXPIRES = 1983, + SIP_HDR_FLOW_TIMER = 584, + SIP_HDR_FROM = 1963, + SIP_HDR_HIDE = 283, + SIP_HDR_HISTORY_INFO = 2582, + SIP_HDR_IDENTITY = 2362, + SIP_HDR_IDENTITY_INFO = 980, + SIP_HDR_IN_REPLY_TO = 1577, + SIP_HDR_JOIN = 3479, + SIP_HDR_MAX_BREADTH = 3701, + SIP_HDR_MAX_FORWARDS = 3549, + SIP_HDR_MIME_VERSION = 3659, + SIP_HDR_MIN_EXPIRES = 1121, + SIP_HDR_MIN_SE = 2847, + SIP_HDR_ORGANIZATION = 3247, + SIP_HDR_P_ACCESS_NETWORK_INFO = 1662, + SIP_HDR_P_ANSWER_STATE = 42, + SIP_HDR_P_ASSERTED_IDENTITY = 1233, + SIP_HDR_P_ASSOCIATED_URI = 900, + SIP_HDR_P_CALLED_PARTY_ID = 3347, + SIP_HDR_P_CHARGING_FUNCTION_ADDRESSES = 2171, + SIP_HDR_P_CHARGING_VECTOR = 25, + SIP_HDR_P_DCS_TRACE_PARTY_ID = 3027, + SIP_HDR_P_DCS_OSPS = 1788, + SIP_HDR_P_DCS_BILLING_INFO = 2017, + SIP_HDR_P_DCS_LAES = 693, + SIP_HDR_P_DCS_REDIRECT = 1872, + SIP_HDR_P_EARLY_MEDIA = 2622, + SIP_HDR_P_MEDIA_AUTHORIZATION = 1035, + SIP_HDR_P_PREFERRED_IDENTITY = 1263, + SIP_HDR_P_PROFILE_KEY = 1904, + SIP_HDR_P_REFUSED_URI_LIST = 1047, + SIP_HDR_P_SERVED_USER = 1588, + SIP_HDR_P_USER_DATABASE = 2827, + SIP_HDR_P_VISITED_NETWORK_ID = 3867, + SIP_HDR_PATH = 2741, + SIP_HDR_PERMISSION_MISSING = 1409, + SIP_HDR_PRIORITY = 3520, + SIP_HDR_PRIV_ANSWER_MODE = 2476, + SIP_HDR_PRIVACY = 3150, + SIP_HDR_PROXY_AUTHENTICATE = 116, + SIP_HDR_PROXY_AUTHORIZATION = 2363, + SIP_HDR_PROXY_REQUIRE = 3562, + SIP_HDR_RACK = 2523, + SIP_HDR_REASON = 3732, + SIP_HDR_RECORD_ROUTE = 278, + SIP_HDR_REFER_SUB = 2458, + SIP_HDR_REFER_TO = 1521, + SIP_HDR_REFERRED_BY = 3456, + SIP_HDR_REJECT_CONTACT = 285, + SIP_HDR_REPLACES = 2534, + SIP_HDR_REPLY_TO = 2404, + SIP_HDR_REQUEST_DISPOSITION = 3715, + SIP_HDR_REQUIRE = 3905, + SIP_HDR_RESOURCE_PRIORITY = 1643, + SIP_HDR_RESPONSE_KEY = 1548, + SIP_HDR_RETRY_AFTER = 409, + SIP_HDR_ROUTE = 661, + SIP_HDR_RSEQ = 445, + SIP_HDR_SECURITY_CLIENT = 1358, + SIP_HDR_SECURITY_SERVER = 811, + SIP_HDR_SECURITY_VERIFY = 519, + SIP_HDR_SERVER = 973, + SIP_HDR_SERVICE_ROUTE = 1655, + SIP_HDR_SESSION_EXPIRES = 1979, + SIP_HDR_SIP_ETAG = 1997, + SIP_HDR_SIP_IF_MATCH = 3056, + SIP_HDR_SUBJECT = 1043, + SIP_HDR_SUBSCRIPTION_STATE = 2884, + SIP_HDR_SUPPORTED = 119, + SIP_HDR_TARGET_DIALOG = 3450, + SIP_HDR_TIMESTAMP = 938, + SIP_HDR_TO = 1449, + SIP_HDR_TRIGGER_CONSENT = 3180, + SIP_HDR_UNSUPPORTED = 982, + SIP_HDR_USER_AGENT = 4064, + SIP_HDR_VIA = 3961, + SIP_HDR_WARNING = 2108, + SIP_HDR_WWW_AUTHENTICATE = 2763, + + SIP_HDR_NONE = -1 +}; + + +enum rel100_mode { + REL100_DISABLED = 0, + REL100_ENABLED = 1, + REL100_REQUIRED = 2, +}; + + +enum { + SIP_T1 = 500, + SIP_T2 = 4000, + SIP_T4 = 5000, +}; + + +/** SIP Via header */ +#define RE_RFC3261_BRANCH_ID "z9hG4bK" +struct sip_via { + struct pl sentby; + struct sa addr; + struct pl params; + struct pl branch; + struct pl val; + enum sip_transp tp; +}; + +/** SIP Address */ +struct sip_addr { + struct pl dname; + struct pl auri; + struct uri uri; + struct pl params; +}; + +/** SIP Tag address */ +struct sip_taddr { + struct pl dname; + struct pl auri; + struct uri uri; + struct pl params; + struct pl tag; + struct pl val; +}; + +/** SIP CSeq header */ +struct sip_cseq { + struct pl met; + uint32_t num; +}; + +/** SIP RAck header (RFC 3262) */ +struct sip_rack { + struct pl met; + uint32_t rel_seq; + uint32_t cseq; +}; + +/** SIP Header */ +struct sip_hdr { + struct le le; /**< Linked-list element */ + struct le he; /**< Hash-table element */ + struct pl name; /**< SIP Header name */ + struct pl val; /**< SIP Header value */ + enum sip_hdrid id; /**< SIP Header id (unique) */ +}; + +/** SIP Message */ +struct sip_msg { + struct sa src; /**< Source network address */ + struct sa dst; /**< Destination network address */ + struct pl ver; /**< SIP Version number */ + struct pl met; /**< Request method */ + struct pl ruri; /**< Raw request URI */ + struct uri uri; /**< Parsed request URI */ + uint16_t scode; /**< Response status code */ + struct pl reason; /**< Response reason phrase */ + struct list hdrl; /**< List of SIP Headers (struct sip_hdr) */ + struct sip_via via; /**< Parsed first Via header */ + struct sip_taddr to; /**< Parsed To header */ + struct sip_taddr from; /**< Parsed From header */ + struct sip_cseq cseq; /**< Parsed CSeq header */ + struct sip_rack rack; /**< Parsed RAck header (RFC 3262) */ + uint32_t rel_seq; /**< RSeq number (RFC 3262) */ + struct msg_ctype ctyp; /**< Content Type */ + struct pl callid; /**< Cached Call-ID header */ + struct pl maxfwd; /**< Cached Max-Forwards header */ + struct pl expires; /**< Cached Expires header */ + struct pl clen; /**< Cached Content-Length header */ + struct hash *hdrht; /**< Hash-table with all SIP headers */ + struct mbuf *mb; /**< Buffer containing the SIP message */ + void *sock; /**< Transport socket */ + uint64_t tag; /**< Opaque tag */ + enum sip_transp tp; /**< SIP Transport */ + bool req; /**< True if Request, False if Response */ +}; + +/** SIP Loop-state */ +struct sip_loopstate { + uint32_t failc; + uint16_t last_scode; +}; + +/** SIP Contact */ +struct sip_contact { + const char *uri; + const struct sa *addr; + enum sip_transp tp; +}; + +/** SIP connection config */ +struct sip_conncfg { + struct le he; + struct sa paddr; + + uint16_t srcport; +}; + +/** SIP UAS Authentication */ +struct sip_uas_auth { + const char *realm; + char *nonce; + bool stale; +}; + +struct sip; +struct sip_lsnr; +struct sip_request; +struct sip_strans; +struct sip_auth; +struct sip_dialog; +struct sip_keepalive; +struct sip_uas_auth; +struct dnsc; + +typedef bool(sip_msg_h)(const struct sip_msg *msg, void *arg); +typedef int(sip_send_h)(enum sip_transp tp, struct sa *src, + const struct sa *dst, struct mbuf *mb, + struct mbuf **contp, void *arg); +typedef int(sip_conn_h)(struct sa *src, const struct sa *dst, struct mbuf *mb, + void *arg); +typedef void(sip_resp_h)(int err, const struct sip_msg *msg, void *arg); +typedef void(sip_cancel_h)(void *arg); +typedef void(sip_exit_h)(void *arg); +typedef int(sip_auth_h)(char **username, char **password, const char *realm, + void *arg); +typedef bool(sip_hdr_h)(const struct sip_hdr *hdr, const struct sip_msg *msg, + void *arg); +typedef void(sip_keepalive_h)(int err, void *arg); +typedef int(digest_printf_h)(uint8_t *md, const char *fmt, ...); + +#define LIBRE_HAVE_SIPTRACE 1 +typedef void(sip_trace_h)(bool tx, enum sip_transp tp, + const struct sa *src, const struct sa *dst, + const uint8_t *pkt, size_t len, void *arg); +typedef int (sip_uas_auth_h)(uint8_t *ha1, const struct pl *user, + const char *realm, void *arg); + + +/* sip */ +int sip_alloc(struct sip **sipp, struct dnsc *dnsc, uint32_t ctsz, + uint32_t stsz, uint32_t tcsz, const char *software, + sip_exit_h *exith, void *arg); +void sip_close(struct sip *sip, bool force); +int sip_listen(struct sip_lsnr **lsnrp, struct sip *sip, bool req, + sip_msg_h *msgh, void *arg); +int sip_debug(struct re_printf *pf, const struct sip *sip); +int sip_send(struct sip *sip, void *sock, enum sip_transp tp, + const struct sa *dst, struct mbuf *mb); +int sip_send_conn(struct sip *sip, void *sock, enum sip_transp tp, + const struct sa *dst, char *host, struct mbuf *mb, + sip_conn_h *connh, void *arg); +void sip_set_trace_handler(struct sip *sip, sip_trace_h *traceh); + + +/* transport */ +int sip_transp_add(struct sip *sip, enum sip_transp tp, + const struct sa *laddr, ...); +int sip_transp_add_sock(struct sip *sip, enum sip_transp tp, + bool listen, const struct sa *laddr, ...); +int sip_transp_add_websock(struct sip *sip, enum sip_transp tp, + const struct sa *laddr, + bool server, const char *cert, struct tls *tls); +int sip_transp_add_ccert(struct sip *sip, const struct uri *uri, + const char *ccertfile); +void sip_transp_flush(struct sip *sip); +bool sip_transp_isladdr(const struct sip *sip, enum sip_transp tp, + const struct sa *laddr); +const char *sip_transp_name(enum sip_transp tp); +const char *sip_transp_param(enum sip_transp tp); +enum sip_transp sip_transp_decode(const struct pl *pl); +uint16_t sip_transp_port(enum sip_transp tp, uint16_t port); +int sip_transp_laddr(struct sip *sip, struct sa *laddr, enum sip_transp tp, + const struct sa *dst); +int sip_transp_set_default(struct sip *sip, enum sip_transp tp); +void sip_transp_rmladdr(struct sip *sip, const struct sa *laddr); +int sip_settos(struct sip *sip, uint8_t tos); + + +/* request */ +int sip_request(struct sip_request **reqp, struct sip *sip, bool stateful, + const char *met, int metl, const char *uri, int uril, + const struct uri *route, struct mbuf *mb, size_t sortkey, + sip_send_h *sendh, sip_resp_h *resph, void *arg); +int sip_requestf(struct sip_request **reqp, struct sip *sip, bool stateful, + const char *met, const char *uri, const struct uri *route, + struct sip_auth *auth, sip_send_h *sendh, sip_resp_h *resph, + void *arg, const char *fmt, ...); +int sip_drequestf(struct sip_request **reqp, struct sip *sip, bool stateful, + const char *met, struct sip_dialog *dlg, uint32_t cseq, + struct sip_auth *auth, sip_send_h *sendh, sip_resp_h *resph, + void *arg, const char *fmt, ...); +void sip_request_cancel(struct sip_request *req); +bool sip_request_loops(struct sip_loopstate *ls, uint16_t scode); +void sip_loopstate_reset(struct sip_loopstate *ls); +bool sip_request_provrecv(const struct sip_request *req); + + +/* reply */ +int sip_strans_alloc(struct sip_strans **stp, struct sip *sip, + const struct sip_msg *msg, sip_cancel_h *cancelh, + void *arg); +int sip_strans_reply(struct sip_strans **stp, struct sip *sip, + const struct sip_msg *msg, const struct sa *dst, + uint16_t scode, struct mbuf *mb); +int sip_treplyf(struct sip_strans **stp, struct mbuf **mbp, struct sip *sip, + const struct sip_msg *msg, bool rec_route, uint16_t scode, + const char *reason, const char *fmt, ...); +int sip_treply(struct sip_strans **stp, struct sip *sip, + const struct sip_msg *msg, uint16_t scode, const char *reason); +int sip_replyf(struct sip *sip, const struct sip_msg *msg, uint16_t scode, + const char *reason, const char *fmt, ...); +int sip_reply(struct sip *sip, const struct sip_msg *msg, uint16_t scode, + const char *reason); +void sip_reply_addr(struct sa *addr, const struct sip_msg *msg, bool rport); + + +/* auth */ +int sip_auth_authenticate(struct sip_auth *auth, const struct sip_msg *msg); +int sip_auth_alloc(struct sip_auth **authp, sip_auth_h *authh, + void *arg, bool ref); + +void sip_auth_reset(struct sip_auth *auth); +int sip_auth_encode(struct mbuf *mb, struct sip_auth *auth, const char *met, + const char *uri); + + +/* contact */ +void sip_contact_set(struct sip_contact *contact, const char *uri, + const struct sa *addr, enum sip_transp tp); +int sip_contact_print(struct re_printf *pf, + const struct sip_contact *contact); + + +/* dialog */ +int sip_dialog_alloc(struct sip_dialog **dlgp, + const char *uri, const char *to_uri, + const char *from_name, const char *from_uri, + const char *routev[], uint32_t routec); +int sip_dialog_accept(struct sip_dialog **dlgp, const struct sip_msg *msg); +int sip_dialog_create(struct sip_dialog *dlg, const struct sip_msg *msg); +int sip_dialog_fork(struct sip_dialog **dlgp, struct sip_dialog *odlg, + const struct sip_msg *msg); +int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg); +bool sip_dialog_rseq_valid(struct sip_dialog *dlg, const struct sip_msg *msg); +const char *sip_dialog_callid(const struct sip_dialog *dlg); +int sip_dialog_set_callid(struct sip_dialog *dlg, const char *callid); +void sip_dialog_set_srcport(struct sip_dialog *dlg, uint16_t srcport); +uint16_t sip_dialog_srcport(struct sip_dialog *dlg); +const char *sip_dialog_uri(const struct sip_dialog *dlg); +uint32_t sip_dialog_lseq(const struct sip_dialog *dlg); +uint32_t sip_dialog_lseqinv(const struct sip_dialog *dlg); +enum sip_transp sip_dialog_tp(const struct sip_dialog *dlg); +bool sip_dialog_established(const struct sip_dialog *dlg); +bool sip_dialog_cmp(const struct sip_dialog *dlg, const struct sip_msg *msg); +bool sip_dialog_cmp_half(const struct sip_dialog *dlg, + const struct sip_msg *msg); + + +/* msg */ +int sip_msg_decode(struct sip_msg **msgp, struct mbuf *mb); +const struct sip_hdr *sip_msg_hdr(const struct sip_msg *msg, + enum sip_hdrid id); +const struct sip_hdr *sip_msg_hdr_apply(const struct sip_msg *msg, + bool fwd, enum sip_hdrid id, + sip_hdr_h *h, void *arg); +const struct sip_hdr *sip_msg_xhdr(const struct sip_msg *msg, + const char *name); +const struct sip_hdr *sip_msg_xhdr_apply(const struct sip_msg *msg, + bool fwd, const char *name, + sip_hdr_h *h, void *arg); +uint32_t sip_msg_hdr_count(const struct sip_msg *msg, enum sip_hdrid id); +uint32_t sip_msg_xhdr_count(const struct sip_msg *msg, const char *name); +bool sip_msg_hdr_has_value(const struct sip_msg *msg, enum sip_hdrid id, + const char *value); +bool sip_msg_xhdr_has_value(const struct sip_msg *msg, const char *name, + const char *value); +struct tcp_conn *sip_msg_tcpconn(const struct sip_msg *msg); +void sip_msg_dump(const struct sip_msg *msg); + +int sip_addr_decode(struct sip_addr *addr, const struct pl *pl); +int sip_via_decode(struct sip_via *via, const struct pl *pl); +int sip_cseq_decode(struct sip_cseq *cseq, const struct pl *pl); +int sip_rack_decode(struct sip_rack *rack, const struct pl *pl); + + +/* keepalive */ +int sip_keepalive_start(struct sip_keepalive **kap, struct sip *sip, + const struct sip_msg *msg, uint32_t interval, + sip_keepalive_h *kah, void *arg); + +/* sip_conncfg */ +int sip_conncfg_set(struct sip *sip, const struct sa *paddr, + const struct sip_conncfg *conncfg); + + +/* sip_uas_auth */ +int sip_uas_auth_gen(struct sip_uas_auth **authp, const struct sip_msg *msg, + const char *realm); +int sip_uas_auth_print(struct re_printf *pf, + const struct sip_uas_auth *auth); +int sip_uas_auth_check(struct sip_uas_auth *auth, const struct sip_msg *msg, + sip_uas_auth_h *authh, void *arg); diff --git a/distribution.video/re/include/re_sipevent.h b/distribution.video/re/include/re_sipevent.h new file mode 100644 index 0000000..e8677ac --- /dev/null +++ b/distribution.video/re/include/re_sipevent.h @@ -0,0 +1,123 @@ +/** + * @file re_sipevent.h SIP Event Framework + * + * Copyright (C) 2010 Creytiv.com + */ + + +/* Message Components */ + +struct sipevent_event { + struct pl event; + struct pl params; + struct pl id; +}; + +enum sipevent_subst { + SIPEVENT_ACTIVE = 0, + SIPEVENT_PENDING, + SIPEVENT_TERMINATED, +}; + +enum sipevent_reason { + SIPEVENT_DEACTIVATED = 0, + SIPEVENT_PROBATION, + SIPEVENT_REJECTED, + SIPEVENT_TIMEOUT, + SIPEVENT_GIVEUP, + SIPEVENT_NORESOURCE, +}; + +struct sipevent_substate { + enum sipevent_subst state; + enum sipevent_reason reason; + struct pl expires; + struct pl retry_after; + struct pl params; +}; + +int sipevent_event_decode(struct sipevent_event *se, const struct pl *pl); +int sipevent_substate_decode(struct sipevent_substate *ss, + const struct pl *pl); +const char *sipevent_substate_name(enum sipevent_subst state); +const char *sipevent_reason_name(enum sipevent_reason reason); + + +/* Listener Socket */ + +struct sipevent_sock; + +int sipevent_listen(struct sipevent_sock **sockp, struct sip *sip, + uint32_t htsize_not, uint32_t htsize_sub, + sip_msg_h *subh, void *arg); + + +/* Notifier */ + +struct sipnot; + +typedef void (sipnot_close_h)(int err, const struct sip_msg *msg, void *arg); + +int sipevent_accept(struct sipnot **notp, struct sipevent_sock *sock, + const struct sip_msg *msg, struct sip_dialog *dlg, + const struct sipevent_event *event, + uint16_t scode, const char *reason, uint32_t expires_min, + uint32_t expires_dfl, uint32_t expires_max, + const char *cuser, const char *ctype, + sip_auth_h *authh, void *aarg, bool aref, + sipnot_close_h *closeh, void *arg, const char *fmt, ...); +int sipevent_notify(struct sipnot *sipnot, struct mbuf *mb, + enum sipevent_subst state, enum sipevent_reason reason, + uint32_t retry_after); +int sipevent_notifyf(struct sipnot *sipnot, struct mbuf **mbp, + enum sipevent_subst state, enum sipevent_reason reason, + uint32_t retry_after, const char *fmt, ...); + + +/* Subscriber */ + +struct sipsub; + +typedef int (sipsub_fork_h)(struct sipsub **subp, struct sipsub *osub, + const struct sip_msg *msg, void *arg); +typedef void (sipsub_notify_h)(struct sip *sip, const struct sip_msg *msg, + void *arg); +typedef void (sipsub_close_h)(int err, const struct sip_msg *msg, + const struct sipevent_substate *substate, + void *arg); + +int sipevent_subscribe(struct sipsub **subp, struct sipevent_sock *sock, + const char *uri, const char *from_name, + const char *from_uri, const char *event, const char *id, + uint32_t expires, const char *cuser, + const char *routev[], uint32_t routec, + sip_auth_h *authh, void *aarg, bool aref, + sipsub_fork_h *forkh, sipsub_notify_h *notifyh, + sipsub_close_h *closeh, void *arg, + const char *fmt, ...); +int sipevent_dsubscribe(struct sipsub **subp, struct sipevent_sock *sock, + struct sip_dialog *dlg, const char *event, + const char *id, uint32_t expires, const char *cuser, + sip_auth_h *authh, void *aarg, bool aref, + sipsub_notify_h *notifyh, sipsub_close_h *closeh, + void *arg, const char *fmt, ...); + +int sipevent_refer(struct sipsub **subp, struct sipevent_sock *sock, + const char *uri, const char *from_name, + const char *from_uri, const char *cuser, + const char *routev[], uint32_t routec, + sip_auth_h *authh, void *aarg, bool aref, + sipsub_fork_h *forkh, sipsub_notify_h *notifyh, + sipsub_close_h *closeh, void *arg, + const char *fmt, ...); +int sipevent_drefer(struct sipsub **subp, struct sipevent_sock *sock, + struct sip_dialog *dlg, const char *cuser, + sip_auth_h *authh, void *aarg, bool aref, + sipsub_notify_h *notifyh, sipsub_close_h *closeh, + void *arg, const char *fmt, ...); + +int sipevent_fork(struct sipsub **subp, struct sipsub *osub, + const struct sip_msg *msg, + sip_auth_h *authh, void *aarg, bool aref, + sipsub_notify_h *notifyh, sipsub_close_h *closeh, + void *arg); diff --git a/distribution.video/re/include/re_sipreg.h b/distribution.video/re/include/re_sipreg.h new file mode 100644 index 0000000..f566133 --- /dev/null +++ b/distribution.video/re/include/re_sipreg.h @@ -0,0 +1,38 @@ +/** + * @file re_sipreg.h SIP Registration + * + * Copyright (C) 2010 Creytiv.com + */ + +struct sipreg; + + +int sipreg_register(struct sipreg **regp, struct sip *sip, const char *reg_uri, + const char *to_uri, const char *from_name, + const char *from_uri, uint32_t expires, + const char *cuser, const char *routev[], uint32_t routec, + int regid, sip_auth_h *authh, void *aarg, bool aref, + sip_resp_h *resph, void *arg, + const char *params, const char *fmt, ...); +void sipreg_unregister(struct sipreg *reg); +int sipreg_alloc(struct sipreg **regp, struct sip *sip, const char *reg_uri, + const char *to_uri, const char *from_name, + const char *from_uri, uint32_t expires, + const char *cuser, const char *routev[], uint32_t routec, + int regid, sip_auth_h *authh, void *aarg, bool aref, + sip_resp_h *resph, void *arg, + const char *params, const char *fmt, ...); +int sipreg_send(struct sipreg *reg); + +int sipreg_set_rwait(struct sipreg *reg, uint32_t rwait); + +const struct sa *sipreg_laddr(const struct sipreg *reg); + +uint32_t sipreg_proxy_expires(const struct sipreg *reg); +bool sipreg_registered(const struct sipreg *reg); +bool sipreg_failed(const struct sipreg *reg); +void sipreg_incfailc(struct sipreg *reg); + +int sipreg_set_fbregint(struct sipreg *reg, uint32_t fbregint); +void sipreg_set_srcport(struct sipreg *reg, uint16_t srcport); +int sipreg_set_contact_params(struct sipreg *reg, const char *cparams); diff --git a/distribution.video/re/include/re_sipsess.h b/distribution.video/re/include/re_sipsess.h new file mode 100644 index 0000000..b228be5 --- /dev/null +++ b/distribution.video/re/include/re_sipsess.h @@ -0,0 +1,87 @@ +/** + * @file re_sipsess.h SIP Session + * + * Copyright (C) 2010 Creytiv.com + */ + +struct sipsess_sock; +struct sipsess; + +/** SDP Negotiation state */ +enum sdp_neg_state { + SDP_NEG_NONE = 0, + SDP_NEG_LOCAL_OFFER, /**< SDP offer sent */ + SDP_NEG_REMOTE_OFFER, /**< SDP offer received */ + SDP_NEG_PREVIEW_ANSWER, /**< SDP preview answer sent */ + SDP_NEG_DONE /**< SDP negotiation done */ +}; + + +typedef void (sipsess_conn_h)(const struct sip_msg *msg, void *arg); +typedef int (sipsess_desc_h)(struct mbuf **descp, const struct sa *src, + const struct sa *dst, void *arg); +typedef int (sipsess_offer_h)(struct mbuf **descp, const struct sip_msg *msg, + void *arg); +typedef int (sipsess_answer_h)(const struct sip_msg *msg, void *arg); +typedef void (sipsess_progr_h)(const struct sip_msg *msg, void *arg); +typedef void (sipsess_estab_h)(const struct sip_msg *msg, void *arg); +typedef void (sipsess_info_h)(struct sip *sip, const struct sip_msg *msg, + void *arg); +typedef void (sipsess_refer_h)(struct sip *sip, const struct sip_msg *msg, + void *arg); +typedef void (sipsess_close_h)(int err, const struct sip_msg *msg, void *arg); + +typedef void (sipsess_redirect_h)(const struct sip_msg *msg, + const char *uri, void *arg); +typedef void (sipsess_prack_h)(const struct sip_msg *msg, void *arg); + +int sipsess_listen(struct sipsess_sock **sockp, struct sip *sip, + int htsize, sipsess_conn_h *connh, void *arg); + +int sipsess_connect(struct sipsess **sessp, struct sipsess_sock *sock, + const char *to_uri, const char *from_name, + const char *from_uri, const char *cuser, + const char *routev[], uint32_t routec, + const char *ctype, + sip_auth_h *authh, void *aarg, bool aref, + const char *callid, + sipsess_desc_h *desch, + sipsess_offer_h *offerh, sipsess_answer_h *answerh, + sipsess_progr_h *progrh, sipsess_estab_h *estabh, + sipsess_info_h *infoh, sipsess_refer_h *referh, + sipsess_close_h *closeh, void *arg, const char *fmt, ...); + +int sipsess_accept(struct sipsess **sessp, struct sipsess_sock *sock, + const struct sip_msg *msg, uint16_t scode, + const char *reason, enum rel100_mode rel100, + const char *cuser, const char *ctype, + struct mbuf *desc, sip_auth_h *authh, void *aarg, + bool aref, sipsess_offer_h *offerh, + sipsess_answer_h *answerh, sipsess_estab_h *estabh, + sipsess_info_h *infoh, sipsess_refer_h *referh, + sipsess_close_h *closeh, void *arg, + const char *fmt, ...); + +int sipsess_set_redirect_handler(struct sipsess *sess, + sipsess_redirect_h *redirecth); +int sipsess_set_prack_handler(struct sipsess *sess, sipsess_prack_h *prackh); + +int sipsess_progress(struct sipsess *sess, uint16_t scode, + const char *reason, enum rel100_mode rel100, + struct mbuf *desc, const char *fmt, ...); +int sipsess_answer(struct sipsess *sess, uint16_t scode, const char *reason, + struct mbuf *desc, const char *fmt, ...); +int sipsess_reject(struct sipsess *sess, uint16_t scode, const char *reason, + const char *fmt, ...); +int sipsess_modify(struct sipsess *sess, struct mbuf *desc); +int sipsess_info(struct sipsess *sess, const char *ctype, struct mbuf *body, + sip_resp_h *resph, void *arg); +int sipsess_set_close_headers(struct sipsess *sess, const char *hdrs, ...); +bool sipsess_awaiting_prack(const struct sipsess *sess); +bool sipsess_refresh_allowed(const struct sipsess *sess); +void sipsess_close_all(struct sipsess_sock *sock); +struct sip_dialog *sipsess_dialog(const struct sipsess *sess); +void sipsess_abort(struct sipsess *sess); +bool sipsess_ack_pending(const struct sipsess *sess); +const struct sip_msg *sipsess_msg(const struct sipsess *sess); +enum sdp_neg_state sipsess_sdp_neg_state(const struct sipsess *sess); diff --git a/distribution.video/re/include/re_srtp.h b/distribution.video/re/include/re_srtp.h new file mode 100644 index 0000000..cdb495b --- /dev/null +++ b/distribution.video/re/include/re_srtp.h @@ -0,0 +1,30 @@ +/** + * @file re_srtp.h Secure Real-time Transport Protocol (SRTP) + * + * Copyright (C) 2010 Creytiv.com + */ + + +enum srtp_suite { + SRTP_AES_CM_128_HMAC_SHA1_32, + SRTP_AES_CM_128_HMAC_SHA1_80, + SRTP_AES_256_CM_HMAC_SHA1_32, + SRTP_AES_256_CM_HMAC_SHA1_80, + SRTP_AES_128_GCM, + SRTP_AES_256_GCM, +}; + +enum srtp_flags { + SRTP_UNENCRYPTED_SRTCP = 1<<1, +}; + +struct srtp; + +int srtp_alloc(struct srtp **srtpp, enum srtp_suite suite, + const uint8_t *key, size_t key_bytes, int flags); +int srtp_encrypt(struct srtp *srtp, struct mbuf *mb); +int srtp_decrypt(struct srtp *srtp, struct mbuf *mb); +int srtcp_encrypt(struct srtp *srtp, struct mbuf *mb); +int srtcp_decrypt(struct srtp *srtp, struct mbuf *mb); + +const char *srtp_suite_name(enum srtp_suite suite); diff --git a/distribution.video/re/include/re_stun.h b/distribution.video/re/include/re_stun.h new file mode 100644 index 0000000..2ff4a0a --- /dev/null +++ b/distribution.video/re/include/re_stun.h @@ -0,0 +1,295 @@ +/** + * @file re_stun.h Session Traversal Utilities for (NAT) (STUN) + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** STUN Protocol values */ +enum { + STUN_PORT = 3478, /**< STUN Port number */ + STUNS_PORT = 5349, /**< STUNS Port number */ + STUN_HEADER_SIZE = 20, /**< Number of bytes in header */ + STUN_ATTR_HEADER_SIZE = 4, /**< Size of attribute header */ + STUN_TID_SIZE = 12, /**< Number of bytes in transaction ID */ + STUN_DEFAULT_RTO = 500, /**< Default Retrans Timeout in [ms] */ + STUN_DEFAULT_RC = 7, /**< Default number of retransmits */ + STUN_DEFAULT_RM = 16, /**< Wait time after last request is sent */ + STUN_DEFAULT_TI = 39500 /**< Reliable timeout */ +}; + +/** STUN Address Family */ +enum stun_af { + STUN_AF_IPv4 = 0x01, /**< IPv4 Address Family */ + STUN_AF_IPv6 = 0x02 /**< IPv6 Address Family */ +}; + +/** STUN Transport */ +enum stun_transp { + STUN_TRANSP_UDP = IPPROTO_UDP, /**< UDP-transport (struct udp_sock) */ + STUN_TRANSP_TCP = IPPROTO_TCP, /**< TCP-transport (struct tcp_conn) */ + STUN_TRANSP_DTLS, /**< DTLS-transport (struct tls_conn) */ +}; + +/** STUN Methods */ +enum stun_method { + STUN_METHOD_BINDING = 0x001, + STUN_METHOD_ALLOCATE = 0x003, + STUN_METHOD_REFRESH = 0x004, + STUN_METHOD_SEND = 0x006, + STUN_METHOD_DATA = 0x007, + STUN_METHOD_CREATEPERM = 0x008, + STUN_METHOD_CHANBIND = 0x009, +}; + +/** STUN Message class */ +enum stun_msg_class { + STUN_CLASS_REQUEST = 0x0, /**< STUN Request */ + STUN_CLASS_INDICATION = 0x1, /**< STUN Indication */ + STUN_CLASS_SUCCESS_RESP = 0x2, /**< STUN Success Response */ + STUN_CLASS_ERROR_RESP = 0x3 /**< STUN Error Response */ +}; + +/** STUN Attributes */ +enum stun_attrib { + /* Comprehension-required range (0x0000-0x7FFF) */ + STUN_ATTR_MAPPED_ADDR = 0x0001, + STUN_ATTR_CHANGE_REQ = 0x0003, + STUN_ATTR_USERNAME = 0x0006, + STUN_ATTR_MSG_INTEGRITY = 0x0008, + STUN_ATTR_ERR_CODE = 0x0009, + STUN_ATTR_UNKNOWN_ATTR = 0x000a, + STUN_ATTR_CHANNEL_NUMBER = 0x000c, + STUN_ATTR_LIFETIME = 0x000d, + STUN_ATTR_XOR_PEER_ADDR = 0x0012, + STUN_ATTR_DATA = 0x0013, + STUN_ATTR_REALM = 0x0014, + STUN_ATTR_NONCE = 0x0015, + STUN_ATTR_XOR_RELAY_ADDR = 0x0016, + STUN_ATTR_REQ_ADDR_FAMILY = 0x0017, + STUN_ATTR_EVEN_PORT = 0x0018, + STUN_ATTR_REQ_TRANSPORT = 0x0019, + STUN_ATTR_DONT_FRAGMENT = 0x001a, + STUN_ATTR_XOR_MAPPED_ADDR = 0x0020, + STUN_ATTR_RSV_TOKEN = 0x0022, + STUN_ATTR_PRIORITY = 0x0024, + STUN_ATTR_USE_CAND = 0x0025, + STUN_ATTR_PADDING = 0x0026, + STUN_ATTR_RESP_PORT = 0x0027, + + /* Comprehension-optional range (0x8000-0xFFFF) */ + STUN_ATTR_SOFTWARE = 0x8022, + STUN_ATTR_ALT_SERVER = 0x8023, + STUN_ATTR_FINGERPRINT = 0x8028, + STUN_ATTR_CONTROLLED = 0x8029, + STUN_ATTR_CONTROLLING = 0x802a, + STUN_ATTR_RESP_ORIGIN = 0x802b, + STUN_ATTR_OTHER_ADDR = 0x802c, +}; + + +struct stun_change_req { + bool ip; + bool port; +}; + +struct stun_errcode { + uint16_t code; + char *reason; +}; + +struct stun_unknown_attr { + uint16_t typev[8]; + uint32_t typec; +}; + +struct stun_even_port { + bool r; +}; + +/** Defines a STUN attribute */ +struct stun_attr { + struct le le; + uint16_t type; + union { + /* generic types */ + struct sa sa; + char *str; + uint64_t uint64; + uint32_t uint32; + uint16_t uint16; + uint8_t uint8; + struct mbuf mb; + + /* actual attributes */ + struct sa mapped_addr; + struct stun_change_req change_req; + char *username; + uint8_t msg_integrity[20]; + struct stun_errcode err_code; + struct stun_unknown_attr unknown_attr; + uint16_t channel_number; + uint32_t lifetime; + struct sa xor_peer_addr; + struct mbuf data; + char *realm; + char *nonce; + struct sa xor_relay_addr; + uint8_t req_addr_family; + struct stun_even_port even_port; + uint8_t req_transport; + struct sa xor_mapped_addr; + uint64_t rsv_token; + uint32_t priority; + struct mbuf padding; + uint16_t resp_port; + char *software; + struct sa alt_server; + uint32_t fingerprint; + uint64_t controlled; + uint64_t controlling; + struct sa resp_origin; + struct sa other_addr; + } v; +}; + + +/** STUN Configuration */ +struct stun_conf { + uint32_t rto; /**< RTO Retransmission TimeOut [ms] */ + uint32_t rc; /**< Rc Retransmission count (default 7) */ + uint32_t rm; /**< Rm Max retransmissions (default 16) */ + uint32_t ti; /**< Ti Timeout for reliable transport [ms] */ + uint8_t tos; /**< Type-of-service field */ +}; + + +extern const char *stun_software; +struct stun; +struct stun_msg; +struct stun_ctrans; + +typedef void(stun_resp_h)(int err, uint16_t scode, const char *reason, + const struct stun_msg *msg, void *arg); +typedef void(stun_ind_h)(struct stun_msg *msg, void *arg); +typedef bool(stun_attr_h)(const struct stun_attr *attr, void *arg); + +int stun_alloc(struct stun **stunp, const struct stun_conf *conf, + stun_ind_h *indh, void *arg); +struct stun_conf *stun_conf(struct stun *stun); +int stun_send(int proto, void *sock, const struct sa *dst, struct mbuf *mb); +int stun_recv(struct stun *stun, struct mbuf *mb); +int stun_ctrans_recv(struct stun *stun, const struct stun_msg *msg, + const struct stun_unknown_attr *ua); +struct re_printf; +int stun_debug(struct re_printf *pf, const struct stun *stun); + +int stun_request(struct stun_ctrans **ctp, struct stun *stun, int proto, + void *sock, const struct sa *dst, size_t presz, + uint16_t method, const uint8_t *key, size_t keylen, bool fp, + stun_resp_h *resph, void *arg, uint32_t attrc, ...); +int stun_reply(int proto, void *sock, const struct sa *dst, size_t presz, + const struct stun_msg *req, const uint8_t *key, + size_t keylen, bool fp, uint32_t attrc, ...); +int stun_ereply(int proto, void *sock, const struct sa *dst, size_t presz, + const struct stun_msg *req, uint16_t scode, + const char *reason, const uint8_t *key, size_t keylen, + bool fp, uint32_t attrc, ...); +int stun_indication(int proto, void *sock, const struct sa *dst, size_t presz, + uint16_t method, const uint8_t *key, size_t keylen, + bool fp, uint32_t attrc, ...); + +int stun_msg_vencode(struct mbuf *mb, uint16_t method, uint8_t cls, + const uint8_t *tid, const struct stun_errcode *ec, + const uint8_t *key, size_t keylen, bool fp, + uint8_t padding, uint32_t attrc, va_list ap); +int stun_msg_encode(struct mbuf *mb, uint16_t method, uint8_t cls, + const uint8_t *tid, const struct stun_errcode *ec, + const uint8_t *key, size_t keylen, bool fp, + uint8_t padding, uint32_t attrc, ...); +int stun_msg_decode(struct stun_msg **msgpp, struct mbuf *mb, + struct stun_unknown_attr *ua); +uint16_t stun_msg_type(const struct stun_msg *msg); +uint16_t stun_msg_class(const struct stun_msg *msg); +uint16_t stun_msg_method(const struct stun_msg *msg); +bool stun_msg_mcookie(const struct stun_msg *msg); +const uint8_t *stun_msg_tid(const struct stun_msg *msg); +struct stun_attr *stun_msg_attr(const struct stun_msg *msg, uint16_t type); +struct stun_attr *stun_msg_attr_apply(const struct stun_msg *msg, + stun_attr_h *h, void *arg); +int stun_msg_chk_mi(const struct stun_msg *msg, const uint8_t *key, + size_t keylen); +int stun_msg_chk_fingerprint(const struct stun_msg *msg); +void stun_msg_dump(const struct stun_msg *msg); + +const char *stun_class_name(uint16_t cls); +const char *stun_method_name(uint16_t method); +const char *stun_attr_name(uint16_t type); +const char *stun_transp_name(enum stun_transp tp); +void stun_generate_tid(uint8_t tid[STUN_TID_SIZE]); + + +/* DNS Discovery of a STUN Server */ +extern const char *stun_proto_udp; +extern const char *stun_proto_tcp; + +extern const char *stun_usage_binding; +extern const char *stuns_usage_binding; +extern const char *stun_usage_relay; +extern const char *stuns_usage_relay; +extern const char *stun_usage_behavior; +extern const char *stuns_usage_behavior; + + +/** + * Defines the STUN Server Discovery handler + * + * @param err Errorcode + * @param srv IP Address and port of STUN Server + * @param arg Handler argument + */ +typedef void (stun_dns_h)(int err, const struct sa *srv, void *arg); + +struct stun_dns; +struct dnsc; +int stun_server_discover(struct stun_dns **dnsp, struct dnsc *dnsc, + const char *service, const char *proto, + int af, const char *domain, uint16_t port, + stun_dns_h *dnsh, void *arg); + + +/* NAT Keepalives */ +struct stun_keepalive; + +/** + * Defines the STUN Keepalive Mapped-Address handler + * + * @param err Errorcode + * @param map Mapped Address + * @param arg Handler argument + */ +typedef void (stun_mapped_addr_h)(int err, const struct sa *map, void *arg); + + +int stun_keepalive_alloc(struct stun_keepalive **skap, + int proto, void *sock, int layer, + const struct sa *dst, const struct stun_conf *conf, + stun_mapped_addr_h *mah, void *arg); +void stun_keepalive_enable(struct stun_keepalive *ska, uint32_t interval); + + +/* STUN Reason Phrase */ +extern const char *stun_reason_300; +extern const char *stun_reason_400; +extern const char *stun_reason_401; +extern const char *stun_reason_403; +extern const char *stun_reason_420; +extern const char *stun_reason_437; +extern const char *stun_reason_438; +extern const char *stun_reason_440; +extern const char *stun_reason_441; +extern const char *stun_reason_442; +extern const char *stun_reason_443; +extern const char *stun_reason_486; +extern const char *stun_reason_500; +extern const char *stun_reason_508; diff --git a/distribution.video/re/include/re_sys.h b/distribution.video/re/include/re_sys.h new file mode 100644 index 0000000..36ca139 --- /dev/null +++ b/distribution.video/re/include/re_sys.h @@ -0,0 +1,80 @@ +/** + * @file re_sys.h Interface to system module + * + * Copyright (C) 2010 Creytiv.com + */ +#include + +#ifndef RE_VERSION +#define RE_VERSION "?" +#endif + +/** + * @def ARCH + * + * Architecture + */ +#ifndef ARCH +#define ARCH "?" +#endif + +/** + * @def OS + * + * Operating System + */ +#ifndef OS +#ifdef WIN32 +#define OS "win32" +#else +#define OS "?" +#endif +#endif + +struct re_printf; +struct mbuf; + +int sys_kernel_get(struct re_printf *pf, void *unused); +int sys_build_get(struct re_printf *pf, void *unused); +const char *sys_arch_get(void); +const char *sys_os_get(void); +const char *sys_libre_version_get(void); +const char *sys_username(void); +int sys_getenv(char **env, const char *name); +int sys_coredump_set(bool enable); +int sys_daemon(void); +void sys_usleep(unsigned int us); + +static inline void sys_msleep(unsigned int ms) +{ + sys_usleep(ms * 1000); +} + + +uint16_t sys_htols(uint16_t v); +uint32_t sys_htoll(uint32_t v); +uint16_t sys_ltohs(uint16_t v); +uint32_t sys_ltohl(uint32_t v); +uint64_t sys_htonll(uint64_t v); +uint64_t sys_ntohll(uint64_t v); + + +/* Random */ +uint16_t rand_u16(void); +uint32_t rand_u32(void); +uint64_t rand_u64(void); +char rand_char(void); +void rand_str(char *str, size_t size); +void rand_bytes(uint8_t *p, size_t size); + + +/* File-System */ +int fs_mkdir(const char *path, uint16_t mode); +int fs_gethome(char *path, size_t sz); +bool fs_isdir(const char *path); +bool fs_isfile(const char *file); +int fs_fopen(FILE **fp, const char *file, const char *mode); +int fs_fread(struct mbuf **mbp, const char *path); + +void fs_stdio_hide(void); +void fs_stdio_restore(void); diff --git a/distribution.video/re/include/re_tcp.h b/distribution.video/re/include/re_tcp.h new file mode 100644 index 0000000..343d3bd --- /dev/null +++ b/distribution.video/re/include/re_tcp.h @@ -0,0 +1,109 @@ +/** + * @file re_tcp.h Interface to Transport Control Protocol + * + * Copyright (C) 2010 Creytiv.com + */ +struct sa; +struct tcp_sock; +struct tcp_conn; + + +/** + * Defines the incoming TCP connection handler + * + * @param peer Network address of peer + * @param arg Handler argument + */ +typedef void (tcp_conn_h)(const struct sa *peer, void *arg); + +/** + * Defines the TCP connection established handler + * + * @param arg Handler argument + */ +typedef void (tcp_estab_h)(void *arg); + +/** + * Defines the TCP connection data send handler + * + * @param arg Handler argument + */ +typedef void (tcp_send_h)(void *arg); + +/** + * Defines the TCP connection data receive handler + * + * @param mb Buffer with data + * @param arg Handler argument + */ +typedef void (tcp_recv_h)(struct mbuf *mb, void *arg); + +/** + * Defines the TCP connection close handler + * + * @param err Error code + * @param arg Handler argument + */ +typedef void (tcp_close_h)(int err, void *arg); + + +/* TCP Socket */ +int tcp_sock_alloc(struct tcp_sock **tsp, const struct sa *local, + tcp_conn_h *ch, void *arg); +struct tcp_sock *tcp_sock_dup(struct tcp_sock *tso); +int tcp_sock_bind(struct tcp_sock *ts, const struct sa *local); +int tcp_sock_listen(struct tcp_sock *ts, int backlog); +int tcp_accept(struct tcp_conn **tcp, struct tcp_sock *ts, tcp_estab_h *eh, + tcp_recv_h *rh, tcp_close_h *ch, void *arg); +void tcp_reject(struct tcp_sock *ts); +int tcp_sock_local_get(const struct tcp_sock *ts, struct sa *local); +int tcp_settos(struct tcp_sock *ts, uint32_t tos); +int tcp_conn_settos(struct tcp_conn *tc, uint32_t tos); + + +/* TCP Connection */ +int tcp_sock_alloc_fd(struct tcp_sock **tsp, re_sock_t fd, tcp_conn_h *ch, + void *arg); +int tcp_conn_alloc(struct tcp_conn **tcp, const struct sa *peer, + tcp_estab_h *eh, tcp_recv_h *rh, tcp_close_h *ch, + void *arg); +int tcp_conn_bind(struct tcp_conn *tc, const struct sa *local); +int tcp_conn_connect(struct tcp_conn *tc, const struct sa *peer); +int tcp_send(struct tcp_conn *tc, struct mbuf *mb); +int tcp_set_send(struct tcp_conn *tc, tcp_send_h *sendh); +void tcp_set_handlers(struct tcp_conn *tc, tcp_estab_h *eh, tcp_recv_h *rh, + tcp_close_h *ch, void *arg); +void tcp_conn_rxsz_set(struct tcp_conn *tc, size_t rxsz); +void tcp_conn_txqsz_set(struct tcp_conn *tc, size_t txqsz); +int tcp_conn_local_get(const struct tcp_conn *tc, struct sa *local); +int tcp_conn_peer_get(const struct tcp_conn *tc, struct sa *peer); +size_t tcp_conn_txqsz(const struct tcp_conn *tc); + + +/* High-level API */ +int tcp_listen(struct tcp_sock **tsp, const struct sa *local, + tcp_conn_h *ch, void *arg); +int tcp_connect(struct tcp_conn **tcp, const struct sa *peer, + tcp_estab_h *eh, tcp_recv_h *rh, tcp_close_h *ch, void *arg); +int tcp_connect_bind(struct tcp_conn **tcp, const struct sa *peer, + tcp_estab_h *eh, tcp_recv_h *rh, tcp_close_h *ch, + const struct sa *local, void *arg); +int tcp_local_get(const struct tcp_sock *ts, struct sa *local); + + +/* Helper API */ +typedef bool (tcp_helper_estab_h)(int *err, bool active, void *arg); +typedef bool (tcp_helper_send_h)(int *err, struct mbuf *mb, void *arg); +typedef bool (tcp_helper_recv_h)(int *err, struct mbuf *mb, bool *estab, + void *arg); + +struct tcp_helper; + + +int tcp_register_helper(struct tcp_helper **thp, struct tcp_conn *tc, + int layer, + tcp_helper_estab_h *eh, tcp_helper_send_h *sh, + tcp_helper_recv_h *rh, void *arg); +int tcp_send_helper(struct tcp_conn *tc, struct mbuf *mb, + struct tcp_helper *th); +bool tcp_sendq_used(struct tcp_conn *tc); diff --git a/distribution.video/re/include/re_telev.h b/distribution.video/re/include/re_telev.h new file mode 100644 index 0000000..f9b9700 --- /dev/null +++ b/distribution.video/re/include/re_telev.h @@ -0,0 +1,24 @@ +/** + * @file re_telev.h Interface to Telephony Events (RFC 4733) + * + * Copyright (C) 2010 Creytiv.com + */ + +enum { + TELEV_PTIME = 50, + TELEV_SRATE = 8000 +}; + +struct telev; + +extern const char telev_rtpfmt[]; + +int telev_alloc(struct telev **tp, uint32_t ptime); +int telev_set_srate(struct telev *tel, uint32_t srate); +int telev_send(struct telev *tel, int event, bool end); +int telev_recv(struct telev *tel, struct mbuf *mb, int *event, bool *end); +int telev_poll(struct telev *tel, bool *marker, struct mbuf *mb); +bool telev_is_empty(const struct telev *tel); + +int telev_digit2code(int digit); +int telev_code2digit(int code); diff --git a/distribution.video/re/include/re_thread.h b/distribution.video/re/include/re_thread.h new file mode 100644 index 0000000..2fc8c45 --- /dev/null +++ b/distribution.video/re/include/re_thread.h @@ -0,0 +1,314 @@ +/** + * @file re_thread.h Thread support + * + * Inspired by C11 thread support this provides a cross platform interfaces to + * thread, mutex and condition handling (C11, POSIX and Windows Threads). + * + * Preferred order: + * + * - C11 threads (glibc>=2.28, musl, FreeBSD>=10) + * - Windows Thread API + * - POSIX PTHREAD (Linux/UNIX) + * + * Copyright (C) 2022 Sebastian Reimers + */ + +#ifndef RE_H_THREAD__ +#define RE_H_THREAD__ + +#if defined(HAVE_THREADS) +#include + +#else + +#if defined(WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include + +struct thrd_win32 { + HANDLE hdl; + DWORD id; +}; +#define ONCE_FLAG_INIT INIT_ONCE_STATIC_INIT +typedef INIT_ONCE once_flag; +typedef struct thrd_win32 thrd_t; +typedef CONDITION_VARIABLE cnd_t; +typedef CRITICAL_SECTION mtx_t; +typedef DWORD tss_t; + +#else + +#include +#include +#define ONCE_FLAG_INIT PTHREAD_ONCE_INIT +typedef pthread_once_t once_flag; +typedef pthread_t thrd_t; +typedef pthread_cond_t cnd_t; +typedef pthread_mutex_t mtx_t; +typedef pthread_key_t tss_t; + +#endif + +enum { mtx_plain = 0, mtx_try = 1, mtx_timed = 2, mtx_recursive = 4 }; + +/* Exit and error codes. */ +enum { + thrd_success = 0, + thrd_busy = 1, + thrd_error = 2, + thrd_nomem = 3, + thrd_timedout = 4 +}; + +typedef void (*tss_dtor_t)(void *); +typedef int (*thrd_start_t)(void *); + + +/****************************************************************************** + * Thread functions + *****************************************************************************/ + +/** + * Creates a new thread + * + * @param thr Pointer to new thread + * @param func Function to execute + * @param arg Argument to pass to the function + * + * @return thrd_success on success, otherwise thrd_error + */ +int thrd_create(thrd_t *thr, thrd_start_t func, void *arg); + + +/** + * Checks whether `lhs` and `rhs` refer to the same thread. + * + * @param lhs Left hand side thread + * @param rhs Right hand side thread + * + * @return Non-zero value if lhs and rhs refer to the same value, 0 otherwise. + */ +int thrd_equal(thrd_t lhs, thrd_t rhs); + + +/** + * Return the identifier of the calling thread. + * + * @return Current thread + */ +thrd_t thrd_current(void); + + +/** + * Detaches the thread identified by `thr` from the current environment. + * + * @param thr Thread + * + * @return thrd_success on success, otherwise thrd_error + */ +int thrd_detach(thrd_t thr); + + +/** + * Blocks the current thread until the thread identified by `thr` finishes + * execution + * + * @param thr Thread + * @param res Result code location + * + * @return thrd_success on success, otherwise thrd_error + */ +int thrd_join(thrd_t thr, int *res); + + +/** + * Calls a function exactly once + * + * @param flag Pointer to object initialized by ONCE_FLAG_INIT + * @param func The function to execute only once + */ +void call_once(once_flag *flag, void (*func)(void)); + + +/** + * Terminates the calling thread + * + * @param res The result value to return + */ +void thrd_exit(int res); + + +/****************************************************************************** + * Condition functions + *****************************************************************************/ + +/** + * Initializes new condition variable + * + * @param cnd Pointer to a variable to store condition variable + * + * @return thrd_success on success, otherwise thrd_error + */ +int cnd_init(cnd_t *cnd); + + +/** + * Unblocks one thread blocked on a condition variable + * + * @param cnd Pointer to condition variable + * + * @return thrd_success on success, otherwise thrd_error + */ +int cnd_signal(cnd_t *cnd); + + +/** + * Unblocks all thrds blocked on a condition variable + * + * @param cnd Pointer to condition variable + * + * @return thrd_success on success, otherwise thrd_error + */ +int cnd_broadcast(cnd_t *cnd); + + +/** + * Blocks on a condition variable + * + * @param cnd Pointer to condition variable + * @param mtx Lock mutex pointer + * + * @return thrd_success on success, otherwise thrd_error + */ +int cnd_wait(cnd_t *cnd, mtx_t *mtx); + + +/** + * Blocks on a condition variable with timeout (TIME_UTC based) + * + * @param cnd Pointer to condition variable + * @param mtx Lock mutex pointer + * @param abstime Pointer to timeout time + * + * @return thrd_success on success, thrd_timedout if the timeout time + * has been reached before the mutex is locked, otherwise thrd_error + */ +int cnd_timedwait(cnd_t *cnd, mtx_t *mtx, const struct timespec *abstime); + + +/** + * Destroys the condition variable pointed to by cnd. + * If there are thrds waiting on cnd, the behavior is undefined. + * + * @param cnd pointer to the condition variable to destroy + */ +void cnd_destroy(cnd_t *cnd); + + +/****************************************************************************** + * Mutex functions + *****************************************************************************/ + +/** + * Creates a new mutex object with type. The object pointed to by mutex is set + * to an identifier of the newly created mutex. + * + * @param mtx Pointer to the mutex to initialize + * @param type The type of the mutex + * + * @return thrd_success on success, otherwise thrd_error + */ +int mtx_init(mtx_t *mtx, int type); + + +/** + * Blocks the current thread until the mutex pointed to by mutex is locked. + * The behavior is undefined if the current thread has already locked the + * mutex and the mutex is not recursive. + * + * @param mtx Pointer to the mutex + * + * @return thrd_success on success, otherwise thrd_error + */ +int mtx_lock(mtx_t *mtx); + + +/** + * Tries to lock the mutex pointed to by mutex without blocking. + * Returns immediately if the mutex is already locked. + * + * @param mtx Pointer to the mutex + * + * @return thrd_success on success, thrd_busy if already locked, + * otherwise thrd_error + */ +int mtx_trylock(mtx_t *mtx); + + +/** + * Unlocks the mutex pointed to by mutex. + * + * @param mtx Pointer to the mutex + * + * @return thrd_success on success, otherwise thrd_error + */ +int mtx_unlock(mtx_t *mtx); + + +/** + * Destroys the mutex pointed to by mutex. + * If there are threads waiting on mutex, the behavior is undefined. + * + * @param mtx Pointer to the mutex + */ +void mtx_destroy(mtx_t *mtx); + + +/****************************************************************************** + * Thread-local storage functions + *****************************************************************************/ +int tss_create(tss_t *key, tss_dtor_t destructor); +void *tss_get(tss_t key); +int tss_set(tss_t key, void *val); +void tss_delete(tss_t key); + +#endif /* C11 threads fallback */ + + +/****************************************************************************** + * Extra - non C11 helpers + * (We avoid tss_ mtx_ cnd_ prefixes since these reserved for functions with + * different return values) + *****************************************************************************/ + +/* Ideas: */ +/* int thread_prio(enum thrd_prio prio) */ +/* void thread_print(struct re_printf *pf, void *unused); */ + +/** + * Allocates and initializes a new mutex + * + * @param mtx Pointer to new mutex + * + * @return 0 if success, otherwise errorcode + */ +int mutex_alloc(mtx_t **mtx); +int mutex_alloc_tp(mtx_t **mtx, int type); + + +/** + * Creates a new thread with name + * + * @param thr Pointer to new thread + * @param name Unique name for a thread + * @param func Function to execute + * @param arg Argument to pass to the function + * + * @return 0 if success, otherwise errorcode + */ +int thread_create_name(thrd_t *thr, const char *name, thrd_start_t func, + void *arg); + +#endif /* RE_H_THREAD__ */ diff --git a/distribution.video/re/include/re_tls.h b/distribution.video/re/include/re_tls.h new file mode 100644 index 0000000..dc5539a --- /dev/null +++ b/distribution.video/re/include/re_tls.h @@ -0,0 +1,148 @@ +/** + * @file re_tls.h Interface to Transport Layer Security + * + * Copyright (C) 2010 Creytiv.com + */ + +struct tls; +struct tls_conn; +struct tcp_conn; +struct udp_sock; + + +/** Defines the TLS method */ +enum tls_method { + TLS_METHOD_TLS, + TLS_METHOD_SSLV23, /* deprecated - fallback to TLS_METHOD_TLS */ + TLS_METHOD_DTLS, /* DTLS 1.0 and 1.2 */ + TLS_METHOD_DTLSV1, /* deprecated - fallback to TLS_METHOD_DTLS */ + TLS_METHOD_DTLSV1_2, /* deprecated - fallback to TLS_METHOD_DTLS */ +}; + +enum tls_fingerprint { + TLS_FINGERPRINT_SHA256, +}; + +enum tls_keytype { + TLS_KEYTYPE_RSA, + TLS_KEYTYPE_EC, +}; + +enum tls_resume_mode { + TLS_RESUMPTION_NONE = 0, + TLS_RESUMPTION_IDS = (1 << 0), + TLS_RESUMPTION_TICKETS = (1 << 1), + TLS_RESUMPTION_ALL = TLS_RESUMPTION_IDS | TLS_RESUMPTION_TICKETS, +}; + +struct tls_conn_d { + int (*verifyh) (int ok, void *arg); + void *arg; +}; + +int tls_alloc(struct tls **tlsp, enum tls_method method, const char *keyfile, + const char *pwd); +int tls_add_ca(struct tls *tls, const char *cafile); +int tls_add_cafile_path(struct tls *tls, const char *cafile, + const char *capath); +int tls_add_capem(const struct tls *tls, const char *capem); +int tls_add_crlpem(const struct tls *tls, const char *pem); +int tls_set_selfsigned_rsa(struct tls *tls, const char *cn, size_t bits); +int tls_set_selfsigned_ec(struct tls *tls, const char *cn, + const char *curve_n); +int tls_set_certificate_pem(struct tls *tls, const char *cert, size_t len_cert, + const char *key, size_t len_key); +int tls_set_certificate_der(struct tls *tls, enum tls_keytype keytype, + const uint8_t *cert, size_t len_cert, + const uint8_t *key, size_t len_key); +int tls_set_certificate(struct tls *tls, const char *cert, size_t len); +int tls_set_certificate_chain_pem(struct tls *tls, const char *chain, + size_t len_chain); +int tls_set_certificate_chain(struct tls *tls, const char *path); +void tls_set_verify_client(struct tls *tls); +void tls_set_verify_client_trust_all(struct tls *tls); +int tls_set_verify_client_handler(struct tls_conn *tc, int depth, + int (*verifyh) (int ok, void *arg), void *arg); + +int tls_set_srtp(struct tls *tls, const char *suites); +int tls_fingerprint(const struct tls *tls, enum tls_fingerprint type, + uint8_t *md, size_t size); + +int tls_peer_fingerprint(const struct tls_conn *tc, enum tls_fingerprint type, + uint8_t *md, size_t size); +int tls_peer_common_name(const struct tls_conn *tc, char *cn, size_t size); +int tls_set_verify_purpose(struct tls *tls, const char *purpose); +int tls_peer_verify(const struct tls_conn *tc); +int tls_srtp_keyinfo(const struct tls_conn *tc, enum srtp_suite *suite, + uint8_t *cli_key, size_t cli_key_size, + uint8_t *srv_key, size_t srv_key_size); +const char *tls_cipher_name(const struct tls_conn *tc); +int tls_set_ciphers(struct tls *tls, const char *cipherv[], size_t count); +int tls_set_verify_server(struct tls_conn *tc, const char *host); +int tls_verify_client(struct tls_conn *tc); + +int tls_get_issuer(struct tls *tls, struct mbuf *mb); +int tls_get_subject(struct tls *tls, struct mbuf *mb); +void tls_disable_verify_server(struct tls *tls); +void tls_enable_verify_client(struct tls *tls, bool enable); +int tls_set_resumption(struct tls *tls, const enum tls_resume_mode mode); + +int tls_set_min_proto_version(struct tls *tls, int version); +int tls_set_max_proto_version(struct tls *tls, int version); + +int tls_set_session_reuse(struct tls *tls, int enabled); +bool tls_get_session_reuse(const struct tls_conn *tc); +int tls_reuse_session(const struct tls_conn *tc); +bool tls_session_reused(const struct tls_conn *tc); +int tls_update_sessions(const struct tls_conn *tc); +void tls_set_posthandshake_auth(struct tls *tls, int value); + +/* TCP */ + +int tls_conn_change_cert(struct tls_conn *tc, const char *file); +int tls_start_tcp(struct tls_conn **ptc, struct tls *tls, + struct tcp_conn *tcp, int layer); + +int tls_verify_client_post_handshake(struct tls_conn *tc); + +const struct tcp_conn *tls_get_tcp_conn(const struct tls_conn *tc); + + +/* UDP (DTLS) */ + +typedef void (dtls_conn_h)(const struct sa *peer, void *arg); +typedef void (dtls_estab_h)(void *arg); +typedef void (dtls_recv_h)(struct mbuf *mb, void *arg); +typedef void (dtls_close_h)(int err, void *arg); + +struct dtls_sock; + +int dtls_listen(struct dtls_sock **sockp, const struct sa *laddr, + struct udp_sock *us, uint32_t htsize, int layer, + dtls_conn_h *connh, void *arg); +struct udp_sock *dtls_udp_sock(struct dtls_sock *sock); +void dtls_set_mtu(struct dtls_sock *sock, size_t mtu); +int dtls_connect(struct tls_conn **ptc, struct tls *tls, + struct dtls_sock *sock, const struct sa *peer, + dtls_estab_h *estabh, dtls_recv_h *recvh, + dtls_close_h *closeh, void *arg); +int dtls_accept(struct tls_conn **ptc, struct tls *tls, + struct dtls_sock *sock, + dtls_estab_h *estabh, dtls_recv_h *recvh, + dtls_close_h *closeh, void *arg); +int dtls_send(struct tls_conn *tc, struct mbuf *mb); +void dtls_set_handlers(struct tls_conn *tc, dtls_estab_h *estabh, + dtls_recv_h *recvh, dtls_close_h *closeh, void *arg); +const struct sa *dtls_peer(const struct tls_conn *tc); +void dtls_set_peer(struct tls_conn *tc, const struct sa *peer); +void dtls_recv_packet(struct dtls_sock *sock, const struct sa *src, + struct mbuf *mb); +void dtls_set_single(struct dtls_sock *sock, bool single); + + +struct x509_st; +struct evp_pkey_st; + +int tls_set_certificate_openssl(struct tls *tls, struct x509_st *cert, + struct evp_pkey_st *pkey, bool up_ref); +int tls_add_certf(struct tls *tls, const char *certf, const char *host); diff --git a/distribution.video/re/include/re_tmr.h b/distribution.video/re/include/re_tmr.h new file mode 100644 index 0000000..0c6650c --- /dev/null +++ b/distribution.video/re/include/re_tmr.h @@ -0,0 +1,93 @@ +/** + * @file re_tmr.h Interface to timer implementation + * + * Copyright (C) 2010 Creytiv.com + */ + + +#include "re_thread.h" +#include "re_atomic.h" + +/** + * Defines the timeout handler + * + * @param arg Handler argument + */ +typedef void (tmr_h)(void *arg); + +struct tmrl; + +/** Defines a timer */ +struct tmr { + struct le le; /**< Linked list element */ + RE_ATOMIC bool active; /**< Timer is active */ + mtx_t *llock; /**< List Mutex lock */ + tmr_h *th; /**< Timeout handler */ + void *arg; /**< Handler argument */ + uint64_t jfs; /**< Jiffies for timeout */ + const char *file; + int line; +}; + +#define TMR_INIT {.le = LE_INIT} + +int tmrl_alloc(struct tmrl **tmrl); +void tmr_poll(struct tmrl *tmrl); +uint64_t tmr_jiffies_usec(void); +uint64_t tmr_jiffies(void); +uint64_t tmr_jiffies_rt_usec(void); +int tmr_timespec_get(struct timespec *tp, uint64_t offset); +uint64_t tmr_next_timeout(struct tmrl *tmrl); +void tmr_debug(void); +int tmr_status(struct re_printf *pf, void *unused); + +void tmr_init(struct tmr *tmr); +void tmr_start_dbg(struct tmr *tmr, uint64_t delay, tmr_h *th, void *arg, + const char *file, int line); +void tmr_continue_dbg(struct tmr *tmr, uint64_t delay, + tmr_h *th, void *arg, + const char *file, int line); +uint32_t tmrl_count(struct tmrl *tmrl); + + +/** + * @def tmr_start(tmr, delay, th, arg) + * + * Start a timer + * + * @param tmr Timer to start + * @param delay Timer delay in [ms] + * @param th Timeout handler + * @param arg Handler argument + */ +#define tmr_start(tmr, delay, th, arg) \ + tmr_start_dbg(tmr, delay, th, arg, __FILE__, __LINE__) + +/** + * @def tmr_continue(tmr, delay, th, arg) + * + * Continue a previously started timer with exactly added delay + * + * @param tmr Timer to start + * @param delay Timer delay in [ms] + * @param th Timeout handler + * @param arg Handler argument + */ +#define tmr_continue(tmr, delay, th, arg) \ + tmr_continue_dbg(tmr, delay, th, arg, __FILE__, __LINE__) + +void tmr_cancel(struct tmr *tmr); +uint64_t tmr_get_expire(const struct tmr *tmr); + + +/** + * Check if the timer is running + * + * @param tmr Timer to check + * + * @return true if running, false if not running + */ +static inline bool tmr_isrunning(const struct tmr *tmr) +{ + return tmr ? NULL != tmr->th : false; +} diff --git a/distribution.video/re/include/re_trace.h b/distribution.video/re/include/re_trace.h new file mode 100644 index 0000000..96fe487 --- /dev/null +++ b/distribution.video/re/include/re_trace.h @@ -0,0 +1,80 @@ +/** + * @file re_trace.h RE_TRACE helpers + * JSON traces (chrome://tracing) + */ + +struct pl; + +typedef enum { + RE_TRACE_ARG_NONE, + RE_TRACE_ARG_INT, + RE_TRACE_ARG_STRING_CONST, + RE_TRACE_ARG_STRING_COPY, +} re_trace_arg_type; + + +int re_trace_init(const char *json_file); +int re_trace_close(void); +int re_trace_flush(void); +void re_trace_event(const char *cat, const char *name, char ph, struct pl *id, + re_trace_arg_type arg_type, const char *arg_name, + void *arg_value); + +#ifdef RE_TRACE_ENABLED + +#define RE_TRACE_BEGIN(c, n) \ + re_trace_event(c, n, 'B', NULL, RE_TRACE_ARG_NONE, NULL, NULL) +#define RE_TRACE_END(c, n) \ + re_trace_event(c, n, 'E', NULL, RE_TRACE_ARG_NONE, NULL, NULL) + +#define RE_TRACE_ID_BEGIN(c, n, id) \ + re_trace_event(c, n, 'B', id, RE_TRACE_ARG_NONE, NULL, NULL) +#define RE_TRACE_ID_END(c, n, id) \ + re_trace_event(c, n, 'E', id, RE_TRACE_ARG_NONE, NULL, NULL) + +#define RE_TRACE_INSTANT(c, n) \ + re_trace_event(c, n, 'I', NULL, RE_TRACE_ARG_NONE, NULL, NULL) +#define RE_TRACE_INSTANT_C(c, n, vname, str) \ + re_trace_event(c, n, 'I', NULL, RE_TRACE_ARG_STRING_CONST, \ + vname, (void *)(str)) +#define RE_TRACE_INSTANT_I(c, n, i) \ + re_trace_event(c, n, 'I', NULL, RE_TRACE_ARG_INT, \ + n, (void *)(intptr_t)i) + +#define RE_TRACE_ID_INSTANT(c, n, id) \ + re_trace_event(c, n, 'I', id, RE_TRACE_ARG_NONE, NULL, NULL) +#define RE_TRACE_ID_INSTANT_C(c, n, vname, str, id) \ + re_trace_event(c, n, 'I', id, RE_TRACE_ARG_STRING_CONST, \ + vname, (void *)(str)) +#define RE_TRACE_ID_INSTANT_I(c, n, i, id) \ + re_trace_event(c, n, 'I', id, RE_TRACE_ARG_INT, \ + n, (void *)(intptr_t)i) + +#define RE_TRACE_PROCESS_NAME(n) \ + re_trace_event("", "process_name", 'M', NULL, \ + RE_TRACE_ARG_STRING_COPY, \ + "name", (void *)(n)) +#define RE_TRACE_THREAD_NAME(n) \ + re_trace_event("", "thread_name", 'M', NULL, \ + RE_TRACE_ARG_STRING_COPY, \ + "name", (void *)(n)) + +#else + +#define RE_TRACE_BEGIN(c, n) +#define RE_TRACE_END(c, n) +#define RE_TRACE_ID_BEGIN(c, n, id) +#define RE_TRACE_ID_END(c, n, id) +#define RE_TRACE_INSTANT(c, n) +#define RE_TRACE_INSTANT_C(c, n, str) +#define RE_TRACE_INSTANT_I(c, n, i) +#define RE_TRACE_ID_INSTANT(c, n, id) +#define RE_TRACE_ID_INSTANT_C(c, n, str, id) +#define RE_TRACE_ID_INSTANT_I(c, n, i, id) +#define RE_TRACE_PROCESS_NAME(n) +#define RE_TRACE_THREAD_NAME(n) + +#endif + +#define RE_TRACE_BEGIN_FUNC() RE_TRACE_BEGIN(__FILE__, __func__) +#define RE_TRACE_END_FUNC() RE_TRACE_END(__FILE__, __func__) diff --git a/distribution.video/re/include/re_trice.h b/distribution.video/re/include/re_trice.h new file mode 100644 index 0000000..20b72c5 --- /dev/null +++ b/distribution.video/re/include/re_trice.h @@ -0,0 +1,166 @@ +/** + * @file re_ice.h Interface to Interactive Connectivity Establishment (ICE) + * + * Copyright (C) 2010 Alfred E. Heggestad + */ + + +/** ICE Configuration */ +struct trice_conf { + bool debug; /**< Enable ICE debugging */ + bool trace; /**< Enable tracing of Connectivity + checks */ + bool ansi; /**< Enable ANSI colors for debug + output */ + bool enable_prflx; /**< Enable Peer-Reflexive candidates */ + bool optimize_loopback_pairing;/**< Reduce candidate pairs when + using loopback addresses */ +}; + +struct trice; +struct ice_lcand; +struct ice_candpair; +struct stun_conf; + + +typedef bool (ice_cand_recv_h)(struct ice_lcand *lcand, + int proto, void *sock, const struct sa *src, + struct mbuf *mb, void *arg); + + +/** Local candidate */ +struct ice_lcand { + struct ice_cand_attr attr; /**< Base class (inheritance) */ + struct le le; /**< List element */ + + /* Base-address only set for SRFLX, PRFLX, RELAY */ + struct sa base_addr; /* IP-address of "base" candidate (optional) */ + + struct udp_sock *us; + struct udp_helper *uh; + struct tcp_sock *ts; /* TCP for simultaneous-open or passive. */ + char ifname[32]; /**< Network interface, for diagnostics */ + int layer; + ice_cand_recv_h *recvh; + void *arg; + + // todo: remove + struct trice *icem; /* parent */ + + struct { + size_t n_tx; + size_t n_rx; + } stats; +}; + +/** Remote candidate */ +struct ice_rcand { + struct ice_cand_attr attr; /**< Base class (inheritance) */ + struct le le; /**< List element */ +}; + + +/** Defines a candidate pair */ +struct ice_candpair { + struct le le; /**< List element */ + struct ice_lcand *lcand; /**< Local candidate */ + struct ice_rcand *rcand; /**< Remote candidate */ + enum ice_candpair_state state;/**< Candidate pair state */ + uint64_t pprio; /**< Pair priority */ + //bool def; /**< Default flag */ + bool valid; /**< Valid flag */ + bool nominated; /**< Nominated flag */ + bool estab; + bool trigged; + int err; /**< Saved error code, if failed */ + uint16_t scode; /**< Saved STUN code, if failed */ + + struct tcp_conn *tc; + + struct ice_tcpconn *conn; /* the TCP-connection used */ +}; + + +typedef void (trice_estab_h)(struct ice_candpair *pair, + const struct stun_msg *msg, void *arg); + + +typedef void (trice_failed_h)(int err, uint16_t scode, + struct ice_candpair *pair, void *arg); + + +int trice_alloc(struct trice **icemp, const struct trice_conf *conf, + enum ice_role role, const char *lufrag, const char *lpwd); +int trice_set_remote_ufrag(struct trice *icem, const char *rufrag); +int trice_set_remote_pwd(struct trice *icem, const char *rpwd); +int trice_set_software(struct trice *icem, const char *sw); +int trice_set_role(struct trice *trice, enum ice_role role); +enum ice_role trice_local_role(const struct trice *icem); +int trice_debug(struct re_printf *pf, const struct trice *icem); +struct trice_conf *trice_conf(struct trice *icem); + + +/* Candidates (common) */ +int trice_cand_print(struct re_printf *pf, const struct ice_cand_attr *cand); +enum ice_tcptype ice_tcptype_reverse(enum ice_tcptype type); +const char *ice_tcptype_name(enum ice_tcptype tcptype); +enum ice_cand_type ice_cand_type_base(enum ice_cand_type type); + + +/* Local candidates */ +int trice_lcand_add(struct ice_lcand **lcandp, struct trice *icem, + unsigned compid, int proto, uint32_t prio, + const struct sa *addr, const struct sa *base_addr, + enum ice_cand_type type, const struct sa *rel_addr, + enum ice_tcptype tcptype, + void *sock, int layer); +struct list *trice_lcandl(const struct trice *icem); +struct ice_lcand *trice_lcand_find(struct trice *icem, + enum ice_cand_type type, + unsigned compid, int proto, + const struct sa *addr); +struct ice_lcand *trice_lcand_find2(const struct trice *icem, + enum ice_cand_type type, int af); +void *trice_lcand_sock(struct trice *icem, const struct ice_lcand *lcand); +void trice_lcand_recv_packet(struct ice_lcand *lcand, + const struct sa *src, struct mbuf *mb); + + +/* Remote candidate */ +struct list *trice_rcandl(const struct trice *icem); +int trice_rcand_add(struct ice_rcand **rcandp, struct trice *icem, + unsigned compid, const char *foundation, int proto, + uint32_t prio, const struct sa *addr, + enum ice_cand_type type, enum ice_tcptype tcptype); +struct ice_rcand *trice_rcand_find(struct trice *icem, unsigned compid, + int proto, const struct sa *addr); + + +/* ICE Candidate pairs */ +struct list *trice_checkl(const struct trice *icem); +struct list *trice_validl(const struct trice *icem); +struct ice_candpair *trice_candpair_find_state(const struct list *lst, + enum ice_candpair_state state); +int trice_candpair_debug(struct re_printf *pf, const struct ice_candpair *cp); +int trice_candpairs_debug(struct re_printf *pf, bool ansi_output, + const struct list *list); + + +/* ICE checklist */ +void trice_checklist_set_waiting(struct trice *icem); +int trice_checklist_start(struct trice *icem, struct stun *stun, + uint32_t interval, + trice_estab_h *estabh, trice_failed_h *failh, + void *arg); +void trice_checklist_stop(struct trice *icem); +bool trice_checklist_isrunning(const struct trice *icem); +bool trice_checklist_iscompleted(const struct trice *icem); + + +/* ICE Conncheck */ +int trice_conncheck_send(struct trice *icem, struct ice_candpair *pair, + bool use_cand); + +/* Port range */ +int trice_set_port_range(struct trice *trice, + uint16_t min_port, uint16_t max_port); diff --git a/distribution.video/re/include/re_turn.h b/distribution.video/re/include/re_turn.h new file mode 100644 index 0000000..6b425d2 --- /dev/null +++ b/distribution.video/re/include/re_turn.h @@ -0,0 +1,33 @@ +/** + * @file re_turn.h Interface to TURN implementation + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** TURN Protocol values */ +enum { + TURN_DEFAULT_LIFETIME = 600, /**< Default lifetime is 10 minutes */ + TURN_MAX_LIFETIME = 3600 /**< Maximum lifetime is 1 hour */ +}; + +typedef void(turnc_h)(int err, uint16_t scode, const char *reason, + const struct sa *relay_addr, + const struct sa *mapped_addr, + const struct stun_msg *msg, + void *arg); +typedef void(turnc_perm_h)(void *arg); +typedef void(turnc_chan_h)(void *arg); + +struct turnc; + +int turnc_alloc(struct turnc **turncp, const struct stun_conf *conf, int proto, + void *sock, int layer, const struct sa *srv, + const char *username, const char *password, + uint32_t lifetime, turnc_h *th, void *arg); +int turnc_send(struct turnc *turnc, const struct sa *dst, struct mbuf *mb); +int turnc_recv(struct turnc *turnc, struct sa *src, struct mbuf *mb); +int turnc_add_perm(struct turnc *turnc, const struct sa *peer, + turnc_perm_h *ph, void *arg); +int turnc_add_chan(struct turnc *turnc, const struct sa *peer, + turnc_chan_h *ch, void *arg); diff --git a/distribution.video/re/include/re_types.h b/distribution.video/re/include/re_types.h new file mode 100644 index 0000000..a2c8091 --- /dev/null +++ b/distribution.video/re/include/re_types.h @@ -0,0 +1,411 @@ +/** + * @file re_types.h Defines basic types + * + * Copyright (C) 2010 Creytiv.com + */ + +#include +#include +#include + +#ifdef __cplusplus +#define restrict +#endif + +#ifdef _MSC_VER +#include + +#include +typedef SSIZE_T ssize_t; + +#endif + +/* + * Basic integral types and boolean from C99 + */ +#include +#include + + +/* Needed for MS compiler */ +#ifdef _MSC_VER +#ifndef __cplusplus +#define inline _inline +#endif +#endif + + +/* + * Misc macros + */ + +/** Defines the NULL pointer */ +#ifndef NULL +#define NULL ((void *)0) +#endif + +/** Get number of elements in an array */ +#define RE_ARRAY_SIZE(a) ((sizeof(a))/(sizeof((a)[0]))) + + +/** Align a value to the boundary of mask */ +#define RE_ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) + +/** Check alignment of pointer (p) and byte count (c) **/ +#define re_is_aligned(p, c) (((uintptr_t)(const void *)(p)) % (c) == 0) + +/** Get the minimal value */ +#undef MIN +#define MIN(a,b) (((a)<(b)) ? (a) : (b)) + +/** Get the maximal value */ +#undef MAX +#define MAX(a,b) (((a)>(b)) ? (a) : (b)) + +#ifndef __cplusplus + +/** Get the minimal value */ +#undef min +#define min(x,y) MIN(x, y) + +/** Get the maximal value */ +#undef max +#define max(x,y) MAX(x, y) + +#endif + +/** Defines a soft breakpoint */ +#if (defined(__i386__) || defined(__x86_64__)) +#define RE_BREAKPOINT __asm__("int $0x03") +#elif defined(__has_builtin) +#if __has_builtin(__builtin_debugtrap) +#define RE_BREAKPOINT __builtin_debugtrap() +#endif +#endif + +#ifndef RE_BREAKPOINT +#define RE_BREAKPOINT +#endif + + +/* Error return/goto debug helpers */ +#ifdef TRACE_ERR +#define PRINT_TRACE_ERR(err) \ + (void)re_fprintf(stderr, "TRACE_ERR: %s:%u: %s():" \ + " %m (%d)\n", \ + __FILE__, __LINE__, __func__, \ + (err), (err)); +#else +#define PRINT_TRACE_ERR(err) +#endif + +#define IF_ERR_GOTO_OUT(err) \ + if ((err)) { \ + PRINT_TRACE_ERR((err)) \ + goto out; \ + } + +#define IF_ERR_GOTO_OUT1(err) \ + if ((err)) { \ + PRINT_TRACE_ERR((err)) \ + goto out1; \ + } + +#define IF_ERR_GOTO_OUT2(err) \ + if ((err)) { \ + PRINT_TRACE_ERR((err)) \ + goto out2; \ + } + +#define IF_ERR_RETURN(err) \ + if ((err)) { \ + PRINT_TRACE_ERR((err)) \ + return (err); \ + } + +#define IF_RETURN_EINVAL(exp) \ + if ((exp)) { \ + PRINT_TRACE_ERR(EINVAL) \ + return (EINVAL); \ + } + +#define RETURN_ERR(err) \ + if ((err)) { \ + PRINT_TRACE_ERR((err)) \ + } \ + return (err); + + +/* Error codes */ +#include + +/* Duplication of error codes. Values are from linux asm-generic/errno.h */ + +/** No data available */ +#ifndef ENODATA +#define ENODATA 200 +#endif + +/** Accessing a corrupted shared library */ +#ifndef ELIBBAD +#define ELIBBAD 204 +#endif + +/** Destination address required */ +#ifndef EDESTADDRREQ +#define EDESTADDRREQ 205 +#endif + +/** Protocol not supported */ +#ifndef EPROTONOSUPPORT +#define EPROTONOSUPPORT 206 +#endif + +/** Operation not supported */ +#ifndef ENOTSUP +#define ENOTSUP 207 +#endif + +/** Address family not supported by protocol */ +#ifndef EAFNOSUPPORT +#define EAFNOSUPPORT 208 +#endif + +/** Cannot assign requested address */ +#ifndef EADDRNOTAVAIL +#define EADDRNOTAVAIL 209 +#endif + +/** Software caused connection abort */ +#ifndef ECONNABORTED +#define ECONNABORTED 210 +#endif + +/** Connection reset by peer */ +#ifndef ECONNRESET +#define ECONNRESET 211 +#endif + +/** Transport endpoint is not connected */ +#ifndef ENOTCONN +#define ENOTCONN 212 +#endif + +/** Connection timed out */ +#ifndef ETIMEDOUT +#define ETIMEDOUT 213 +#endif + +/** Connection refused */ +#ifndef ECONNREFUSED +#define ECONNREFUSED 214 +#endif + +/** Operation already in progress */ +#ifndef EALREADY +#define EALREADY 215 +#endif + +/** Operation now in progress */ +#ifndef EINPROGRESS +#define EINPROGRESS 216 +#endif + +/** Authentication error */ +#ifndef EAUTH +#define EAUTH 217 +#endif + +/** No STREAM resources */ +#ifndef ENOSR +#define ENOSR 218 +#endif + +/** Key was rejected by service */ +#ifndef EKEYREJECTED +#define EKEYREJECTED 129 +#endif + +/* Cannot send after transport endpoint shutdown */ +#ifndef ESHUTDOWN +#define ESHUTDOWN 108 +#endif + +/* + * Give the compiler a hint which branch is "likely" or "unlikely" (inspired + * by linux kernel and C++20/C2X) + */ +#ifdef __GNUC__ +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) +#else +#define likely(x) x +#define unlikely(x) x +#endif + +#ifdef WIN32 +#define re_restrict __restrict +#else +#define re_restrict restrict +#endif + +/* Socket helpers */ +#ifdef WIN32 +#define RE_ERRNO_SOCK WSAGetLastError() +#define RE_BAD_SOCK INVALID_SOCKET +typedef size_t re_sock_t; +#else +#define RE_ERRNO_SOCK errno +#define RE_BAD_SOCK -1 +typedef int re_sock_t; +#endif + + +/* re_assert helpers */ + +/** + * @def re_assert(expr) + * + * If expression is false, prints error and calls abort() (not in + * RELEASE/NDEBUG builds) + * + * @param expr expression + */ + + +/** + * @def re_assert_se(expr) + * + * If expression is false, prints error and calls abort(), + * in RELEASE/NDEBUG builds expression is always executed and keeps side effect + * + * @param expr expression + */ + +#if defined(RELEASE) || defined(NDEBUG) +#define re_assert(expr) (void)0 +#define re_assert_se(expr) do{(void)(expr);} while(false) +#else +#define re_assert(expr) assert(expr) +#define re_assert_se(expr) assert(expr) +#endif + + +/* RE_VA_ARG SIZE helpers */ +#if !defined(DISABLE_RE_ARG) && \ + !defined(__STRICT_ANSI__) && /* Needs ## trailing comma fix, with C23 \ + we can use __VA_OPT__ */ \ + __STDC_VERSION__ >= 201112L /* _Generic C11 support required */ + +#define HAVE_RE_ARG 1 + +#if defined(__clang__) +#define RE_ARG_SIZE(type) \ + _Generic((type), \ + bool: sizeof(int), \ + char: sizeof(int), \ + unsigned char: sizeof(unsigned int), \ + short: sizeof(int), \ + unsigned short: sizeof(unsigned int), \ + int: sizeof(int), \ + unsigned int: sizeof(unsigned int), \ + long: sizeof(long), \ + unsigned long: sizeof(unsigned long), \ + long long: sizeof(long long), \ + unsigned long long: sizeof(unsigned long long), \ + float: sizeof(double), \ + double: sizeof(double), \ + char const*: sizeof(char const *), \ + char*: sizeof(char *), \ + void const*: sizeof(void const *), \ + void*: sizeof(void *), \ + struct pl: sizeof(struct pl), \ + default: sizeof(void*) \ +) +#else /* GCC bit fields workaround */ +#define RE_ARG_SIZE(type) \ + _Generic((0)?(type):(type), \ + bool: sizeof(int), \ + char: sizeof(int), \ + unsigned char: sizeof(unsigned int), \ + short: sizeof(int), \ + unsigned short: sizeof(unsigned int), \ + int: sizeof(int), \ + unsigned int: sizeof(unsigned int), \ + long: sizeof(long), \ + unsigned long: sizeof(unsigned long), \ + long long: sizeof(long long), \ + unsigned long long: sizeof(unsigned long long), \ + float: sizeof(double), \ + double: sizeof(double), \ + char const*: sizeof(char const *), \ + char*: sizeof(char *), \ + void const*: sizeof(void const *), \ + void*: sizeof(void *), \ + struct pl: sizeof(struct pl), \ + default: sizeof(void*) \ +) +#endif + +#define RE_ARG_0() 0 +#define RE_ARG_1(expr) RE_ARG_SIZE(expr), (expr), 0 +#define RE_ARG_2(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_1(__VA_ARGS__) +#define RE_ARG_3(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_2(__VA_ARGS__) +#define RE_ARG_4(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_3(__VA_ARGS__) +#define RE_ARG_5(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_4(__VA_ARGS__) +#define RE_ARG_6(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_5(__VA_ARGS__) +#define RE_ARG_7(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_6(__VA_ARGS__) +#define RE_ARG_8(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_7(__VA_ARGS__) +#define RE_ARG_9(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_8(__VA_ARGS__) +#define RE_ARG_10(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_9(__VA_ARGS__) +#define RE_ARG_11(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_10(__VA_ARGS__) +#define RE_ARG_12(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_11(__VA_ARGS__) +#define RE_ARG_13(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_12(__VA_ARGS__) +#define RE_ARG_14(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_13(__VA_ARGS__) +#define RE_ARG_15(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_14(__VA_ARGS__) +#define RE_ARG_16(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_15(__VA_ARGS__) +#define RE_ARG_17(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_16(__VA_ARGS__) +#define RE_ARG_18(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_17(__VA_ARGS__) +#define RE_ARG_19(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_18(__VA_ARGS__) +#define RE_ARG_20(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_19(__VA_ARGS__) +#define RE_ARG_21(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_20(__VA_ARGS__) +#define RE_ARG_22(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_21(__VA_ARGS__) +#define RE_ARG_23(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_22(__VA_ARGS__) +#define RE_ARG_24(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_23(__VA_ARGS__) +#define RE_ARG_25(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_24(__VA_ARGS__) +#define RE_ARG_26(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_25(__VA_ARGS__) +#define RE_ARG_27(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_26(__VA_ARGS__) +#define RE_ARG_28(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_27(__VA_ARGS__) +#define RE_ARG_29(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_28(__VA_ARGS__) +#define RE_ARG_30(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_29(__VA_ARGS__) +#define RE_ARG_31(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_30(__VA_ARGS__) +#define RE_ARG_32(expr, ...) RE_ARG_SIZE(expr), (expr), RE_ARG_31(__VA_ARGS__) + +#define RE_ARG_VA_NUM_2(X, X32, X31, X30, X29, X28, X27, X26, X25, X24, X23, \ + X22, X21, X20, X19, X18, X17, X16, X15, X14, X13, \ + X12, X11, X10, X9, X8, X7, X6, X5, X4, X3, X2, X1, N, \ + ...) \ + N +#define RE_ARG_VA_NUM(...) \ + RE_ARG_VA_NUM_2(0, ##__VA_ARGS__, 32, 31, 30, 29, 28, 27, 26, 25, 24, \ + 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, \ + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + +#define RE_ARG_N3(N, ...) RE_ARG_##N(__VA_ARGS__) +#define RE_ARG_N2(N, ...) RE_ARG_N3(N, __VA_ARGS__) +#define RE_VA_ARGS(...) RE_ARG_N2(RE_ARG_VA_NUM(__VA_ARGS__), __VA_ARGS__) +#endif /* End RE_VA_ARG SIZE helpers */ + +#define RE_VA_ARG(ap, val, type, safe) \ + if (likely((safe))) { \ + size_t sz = va_arg((ap), size_t); \ + if (unlikely(!sz)) { \ + err = ENODATA; \ + goto out; \ + } \ + if (unlikely(sz != sizeof(type))) { \ + err = EOVERFLOW; \ + goto out; \ + } \ + } \ + (val) = va_arg((ap), type) diff --git a/distribution.video/re/include/re_udp.h b/distribution.video/re/include/re_udp.h new file mode 100644 index 0000000..e88557d --- /dev/null +++ b/distribution.video/re/include/re_udp.h @@ -0,0 +1,71 @@ +/** + * @file re_udp.h Interface to User Datagram Protocol + * + * Copyright (C) 2010 Creytiv.com + */ + + +struct sa; +struct udp_sock; + +typedef int (udp_send_h)(const struct sa *dst, + struct mbuf *mb, void *arg); + +/** + * Defines the UDP Receive handler + * + * @param src Source address + * @param mb Datagram buffer + * @param arg Handler argument + */ +typedef void (udp_recv_h)(const struct sa *src, struct mbuf *mb, void *arg); +typedef void (udp_error_h)(int err, void *arg); + + +int udp_listen(struct udp_sock **usp, const struct sa *local, + udp_recv_h *rh, void *arg); +int udp_alloc_sockless(struct udp_sock **usp, + udp_send_h *sendh, udp_recv_h *recvh, void *arg); +int udp_alloc_fd(struct udp_sock **usp, re_sock_t fd, + udp_recv_h *recvh, void *arg); +int udp_connect(struct udp_sock *us, const struct sa *peer); +int udp_open(struct udp_sock **usp, int af); +int udp_send(struct udp_sock *us, const struct sa *dst, struct mbuf *mb); +int udp_local_get(const struct udp_sock *us, struct sa *local); +int udp_setsockopt(struct udp_sock *us, int level, int optname, + const void *optval, uint32_t optlen); +int udp_sockbuf_set(struct udp_sock *us, int size); +void udp_rxsz_set(struct udp_sock *us, size_t rxsz); +void udp_rxbuf_presz_set(struct udp_sock *us, size_t rx_presz); +void udp_handler_set(struct udp_sock *us, udp_recv_h *rh, void *arg); +void udp_error_handler_set(struct udp_sock *us, udp_error_h *eh); +int udp_thread_attach(struct udp_sock *us); +void udp_thread_detach(struct udp_sock *us); +re_sock_t udp_sock_fd(const struct udp_sock *us, int af); + +int udp_multicast_join(struct udp_sock *us, const struct sa *group); +int udp_multicast_leave(struct udp_sock *us, const struct sa *group); +int udp_settos(struct udp_sock *us, uint8_t tos); +void udp_flush(const struct udp_sock *us); +void udp_recv_packet(struct udp_sock *us, const struct sa *src, + struct mbuf *mb); + + +/* Helper API */ +typedef bool (udp_helper_send_h)(int *err, struct sa *dst, + struct mbuf *mb, void *arg); +typedef bool (udp_helper_recv_h)(struct sa *src, + struct mbuf *mb, void *arg); + +struct udp_helper; + + +int udp_register_helper(struct udp_helper **uhp, struct udp_sock *us, + int layer, + udp_helper_send_h *sh, udp_helper_recv_h *rh, + void *arg); +int udp_send_helper(struct udp_sock *us, const struct sa *dst, + struct mbuf *mb, struct udp_helper *uh); +void udp_recv_helper(struct udp_sock *us, const struct sa *src, + struct mbuf *mb, struct udp_helper *uh); +struct udp_helper *udp_helper_find(const struct udp_sock *us, int layer); diff --git a/distribution.video/re/include/re_unixsock.h b/distribution.video/re/include/re_unixsock.h new file mode 100644 index 0000000..22c809e --- /dev/null +++ b/distribution.video/re/include/re_unixsock.h @@ -0,0 +1,2 @@ + +int unixsock_listen_fd(re_sock_t *fdp, const struct sa *sock); diff --git a/distribution.video/re/include/re_uri.h b/distribution.video/re/include/re_uri.h new file mode 100644 index 0000000..2b956b4 --- /dev/null +++ b/distribution.video/re/include/re_uri.h @@ -0,0 +1,49 @@ +/** + * @file re_uri.h Interface to URI module + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Defines a URI - Uniform Resource Identifier */ +struct uri { + struct pl scheme; /**< URI scheme e.g. "sip:" "sips:" */ + struct pl user; /**< Username */ + struct pl password; /**< Optional password */ + struct pl host; /**< Hostname or IP-address */ + int af; /**< Address family of host IP-address */ + uint16_t port; /**< Port number */ + struct pl path; /**< Optional URI-path */ + struct pl params; /**< Optional URI-parameters */ + struct pl headers; /**< Optional URI-headers */ +}; + +typedef int (uri_apply_h)(const struct pl *name, const struct pl *val, + void *arg); + +struct re_printf; +int uri_encode(struct re_printf *pf, const struct uri *uri); +int uri_decode(struct uri *uri, const struct pl *pl); +int uri_decode_hostport(const struct pl *hostport, struct pl *host, + struct pl *port); +int uri_param_get(const struct pl *pl, const struct pl *pname, + struct pl *pvalue); +int uri_params_apply(const struct pl *pl, uri_apply_h *ah, void *arg); +int uri_header_get(const struct pl *pl, const struct pl *hname, + struct pl *hvalue); +int uri_headers_apply(const struct pl *pl, uri_apply_h *ah, void *arg); + + +/* Special URI escaping/unescaping */ +int uri_user_escape(struct re_printf *pf, const struct pl *pl); +int uri_user_unescape(struct re_printf *pf, const struct pl *pl); +int uri_password_escape(struct re_printf *pf, const struct pl *pl); +int uri_password_unescape(struct re_printf *pf, const struct pl *pl); +int uri_param_escape(struct re_printf *pf, const struct pl *pl); +int uri_param_unescape(struct re_printf *pf, const struct pl *pl); +int uri_header_escape(struct re_printf *pf, const struct pl *pl); +int uri_header_unescape(struct re_printf *pf, const struct pl *pl); +int uri_escape_user(struct re_printf *pf, const char *user); +int uri_escape(struct re_printf *pf, const char *uri); +int uri_escape_pl(struct re_printf *pf, const struct pl *pl); +int uri_unescape_pl(struct re_printf *pf, const struct pl *pl); diff --git a/distribution.video/re/include/re_websock.h b/distribution.video/re/include/re_websock.h new file mode 100644 index 0000000..c782a65 --- /dev/null +++ b/distribution.video/re/include/re_websock.h @@ -0,0 +1,86 @@ +/** + * @file re_websock.h The WebSocket Protocol + * + * Copyright (C) 2010 Creytiv.com + */ + + +enum { + WEBSOCK_VERSION = 13, +}; + +enum websock_opcode { + /* Data frames */ + WEBSOCK_CONT = 0x0, + WEBSOCK_TEXT = 0x1, + WEBSOCK_BIN = 0x2, + /* Control frames */ + WEBSOCK_CLOSE = 0x8, + WEBSOCK_PING = 0x9, + WEBSOCK_PONG = 0xa, +}; + +enum websock_scode { + WEBSOCK_NORMAL_CLOSURE = 1000, + WEBSOCK_GOING_AWAY = 1001, + WEBSOCK_PROTOCOL_ERROR = 1002, + WEBSOCK_UNSUPPORTED_DATA = 1003, + WEBSOCK_INVALID_PAYLOAD = 1007, + WEBSOCK_POLICY_VIOLATION = 1008, + WEBSOCK_MESSAGE_TOO_BIG = 1009, + WEBSOCK_EXTENSION_ERROR = 1010, + WEBSOCK_INTERNAL_ERROR = 1011, +}; + +struct websock_hdr { + unsigned fin:1; + unsigned rsv1:1; + unsigned rsv2:1; + unsigned rsv3:1; + unsigned opcode:4; + unsigned mask:1; + uint64_t len; + uint8_t mkey[4]; +}; + +struct websock; +struct websock_conn; + +typedef void (websock_estab_h)(void *arg); +typedef void (websock_recv_h)(const struct websock_hdr *hdr, struct mbuf *mb, + void *arg); +typedef void (websock_close_h)(int err, void *arg); + + +int websock_connect(struct websock_conn **connp, struct websock *sock, + struct http_cli *cli, const char *uri, unsigned kaint, + websock_estab_h *estabh, websock_recv_h *recvh, + websock_close_h *closeh, void *arg, + const char *fmt, ...); +int websock_connect_proto(struct websock_conn **connp, const char *proto, + struct websock *sock, struct http_cli *cli, + const char *uri, unsigned kaint, + websock_estab_h *estabh, websock_recv_h *recvh, + websock_close_h *closeh, void *arg, const char *fmt, + ...); +int websock_accept(struct websock_conn **connp, struct websock *sock, + struct http_conn *htconn, const struct http_msg *msg, + unsigned kaint, websock_recv_h *recvh, + websock_close_h *closeh, void *arg); +int websock_accept_proto(struct websock_conn **connp, const char *proto, + struct websock *sock, struct http_conn *htconn, + const struct http_msg *msg, unsigned kaint, + websock_recv_h *recvh, websock_close_h *closeh, + void *arg); +int websock_send(struct websock_conn *conn, enum websock_opcode opcode, + const char *fmt, ...); +int websock_close(struct websock_conn *conn, enum websock_scode scode, + const char *fmt, ...); +const struct sa *websock_peer(const struct websock_conn *conn); +struct tcp_conn *websock_tcp(const struct websock_conn *conn); + +typedef void (websock_shutdown_h)(void *arg); + +int websock_alloc(struct websock **sockp, websock_shutdown_h *shuth, + void *arg); +void websock_shutdown(struct websock *sock); diff --git a/distribution.video/re/include/rem.h b/distribution.video/re/include/rem.h new file mode 100644 index 0000000..3a67b59 --- /dev/null +++ b/distribution.video/re/include/rem.h @@ -0,0 +1,25 @@ +/** + * @file rem.h Wrapper for librem headers + * + * Copyright (C) 2010 Creytiv.com + */ + +#ifndef REM_H__ +#define REM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "rem_audio.h" +#include "rem_video.h" +#include "rem_dsp.h" +#include "rem_flv.h" + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/distribution.video/re/include/rem_aac.h b/distribution.video/re/include/rem_aac.h new file mode 100644 index 0000000..f6e9b2c --- /dev/null +++ b/distribution.video/re/include/rem_aac.h @@ -0,0 +1,15 @@ +/** + * @file rem_aac.h Advanced Audio Coding + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Defines the AAC header */ +struct aac_header { + unsigned sample_rate; /**< Audio sample rate in [Hz] */ + unsigned channels; /**< Number of audio channels */ + unsigned frame_size; /**< Frame size, 960 or 1024 bits */ +}; + +int aac_header_decode(struct aac_header *hdr, const uint8_t *p, size_t len); diff --git a/distribution.video/re/include/rem_au.h b/distribution.video/re/include/rem_au.h new file mode 100644 index 0000000..aa6af8d --- /dev/null +++ b/distribution.video/re/include/rem_au.h @@ -0,0 +1,29 @@ +/** + * @file rem_au.h Basic audio types + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Audio formats */ +enum aufmt { + AUFMT_S16LE, /**< Signed 16-bit PCM */ + AUFMT_S32LE, /**< Signed 32-bit PCM */ + AUFMT_PCMA, /**< G.711 A-law */ + AUFMT_PCMU, /**< G.711 U-law */ + AUFMT_FLOAT, /**< Float 32 bit (CPU endian) */ + AUFMT_S24_3LE,/**< Signed 24bit Little Endian in 3bytes format */ + AUFMT_RAW, /**< RAW PCM */ +}; + +size_t aufmt_sample_size(enum aufmt fmt); +const char *aufmt_name(enum aufmt fmt); + +uint32_t au_calc_nsamp(uint32_t srate, uint8_t channels, uint16_t ptime); + +/* todo: remove backwards wrapper later */ +static inline uint32_t calc_nsamp(uint32_t srate, uint8_t channels, + uint16_t ptime) +{ + return au_calc_nsamp(srate, channels, ptime); +} diff --git a/distribution.video/re/include/rem_aubuf.h b/distribution.video/re/include/rem_aubuf.h new file mode 100644 index 0000000..b4e3a61 --- /dev/null +++ b/distribution.video/re/include/rem_aubuf.h @@ -0,0 +1,107 @@ +/** + * @file rem_aubuf.h Audio Buffer + * + * Copyright (C) 2010 Creytiv.com + */ +struct aubuf; + +enum aubuf_mode { + AUBUF_FIXED, + AUBUF_ADAPTIVE +}; + +int aubuf_alloc(struct aubuf **abp, size_t min_sz, size_t max_sz); +void aubuf_set_id(struct aubuf *ab, struct pl *id); +void aubuf_set_live(struct aubuf *ab, bool live); +void aubuf_set_mode(struct aubuf *ab, enum aubuf_mode mode); +void aubuf_set_silence(struct aubuf *ab, double silence); +int aubuf_resize(struct aubuf *ab, size_t min_sz, size_t max_sz); +int aubuf_write_auframe(struct aubuf *ab, const struct auframe *af); +int aubuf_append_auframe(struct aubuf *ab, struct mbuf *mb, + const struct auframe *af); +void aubuf_read_auframe(struct aubuf *ab, struct auframe *af); +void aubuf_sort_auframe(struct aubuf *ab); +int aubuf_get(struct aubuf *ab, uint32_t ptime, uint8_t *p, size_t sz); +void aubuf_flush(struct aubuf *ab); +int aubuf_debug(struct re_printf *pf, const struct aubuf *ab); +size_t aubuf_cur_size(const struct aubuf *ab); +size_t aubuf_maxsz(const struct aubuf *ab); +bool aubuf_started(const struct aubuf *ab); +void aubuf_drop_auframe(struct aubuf *ab, const struct auframe *af); + + +static inline int aubuf_append(struct aubuf *ab, struct mbuf *mb) +{ + return aubuf_append_auframe(ab, mb, NULL); +} + + +static inline int aubuf_get_samp(struct aubuf *ab, uint32_t ptime, + int16_t *sampv, size_t sampc) +{ + return aubuf_get(ab, ptime, (uint8_t *)sampv, sampc * 2); +} + + +#ifndef __cplusplus +static inline int aubuf_write(struct aubuf *ab, const uint8_t *p, size_t sz) +{ + struct auframe af = { + .fmt = AUFMT_RAW, + .srate = 0, + .sampv = (uint8_t *)p, + .sampc = sz, + .timestamp = 0, + .level = AULEVEL_UNDEF + }; + + return aubuf_write_auframe(ab, &af); +} + + +static inline int aubuf_write_samp(struct aubuf *ab, const int16_t *sampv, + size_t sampc) +{ + struct auframe af = { + .fmt = AUFMT_S16LE, + .srate = 0, + .sampv = (uint8_t *)sampv, + .sampc = sampc, + .timestamp = 0, + .level = AULEVEL_UNDEF + }; + + return aubuf_write_auframe(ab, &af); +} + + +static inline void aubuf_read(struct aubuf *ab, uint8_t *p, size_t sz) +{ + struct auframe af = { + .fmt = AUFMT_RAW, + .srate = 0, + .sampv = p, + .sampc = sz, + .timestamp = 0, + .level = AULEVEL_UNDEF + }; + + aubuf_read_auframe(ab, &af); +} + + +static inline void aubuf_read_samp(struct aubuf *ab, int16_t *sampv, + size_t sampc) +{ + struct auframe af = { + .fmt = AUFMT_S16LE, + .srate = 0, + .sampv = (uint8_t *)sampv, + .sampc = sampc, + .timestamp = 0, + .level = AULEVEL_UNDEF + }; + + aubuf_read_auframe(ab, &af); +} +#endif diff --git a/distribution.video/re/include/rem_auconv.h b/distribution.video/re/include/rem_auconv.h new file mode 100644 index 0000000..ef11f13 --- /dev/null +++ b/distribution.video/re/include/rem_auconv.h @@ -0,0 +1,13 @@ +/** + * @file rem_auconv.h Audio sample format conversion + * + * Copyright (C) 2010 Creytiv.com + */ + + +void auconv_from_s16(enum aufmt dst_fmt, void *dst_sampv, + const int16_t *src_sampv, size_t sampc); +void auconv_to_s16(int16_t *dst_sampv, enum aufmt src_fmt, + void *src_sampv, size_t sampc); +void auconv_to_float(float *dst_sampv, enum aufmt src_fmt, + const void *src_sampv, size_t sampc); diff --git a/distribution.video/re/include/rem_audio.h b/distribution.video/re/include/rem_audio.h new file mode 100644 index 0000000..c02c147 --- /dev/null +++ b/distribution.video/re/include/rem_audio.h @@ -0,0 +1,21 @@ +/** + * @file rem_audio.h Wrapper for all Audio header files + * + * Copyright (C) 2010 Creytiv.com + */ + + +#include "rem_au.h" +#include "rem_aulevel.h" +#include "rem_auframe.h" +#include "rem_aubuf.h" +#include "rem_auconv.h" +#include "rem_aufile.h" +#include "rem_autone.h" +#include "rem_aumix.h" +#include "rem_dtmf.h" +#include "rem_fir.h" +#include "rem_goertzel.h" +#include "rem_auresamp.h" +#include "rem_g711.h" +#include "rem_aac.h" diff --git a/distribution.video/re/include/rem_aufile.h b/distribution.video/re/include/rem_aufile.h new file mode 100644 index 0000000..b76bb0f --- /dev/null +++ b/distribution.video/re/include/rem_aufile.h @@ -0,0 +1,30 @@ +/** + * @file rem_aufile.h Audio File interface + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Audio file mode */ +enum aufile_mode { + AUFILE_READ, + AUFILE_WRITE, +}; + +/** Audio file parameters */ +struct aufile_prm { + uint32_t srate; + uint8_t channels; + enum aufmt fmt; +}; + +struct aufile; + +int aufile_open(struct aufile **afp, struct aufile_prm *prm, + const char *filename, enum aufile_mode mode); +int aufile_read(struct aufile *af, uint8_t *p, size_t *sz); +int aufile_write(struct aufile *af, const uint8_t *p, size_t sz); +size_t aufile_get_size(struct aufile *af); +size_t aufile_get_length(struct aufile *af, const struct aufile_prm *prm); +int aufile_set_position(struct aufile *af, const struct aufile_prm *prm, + size_t pos_ms); diff --git a/distribution.video/re/include/rem_auframe.h b/distribution.video/re/include/rem_auframe.h new file mode 100644 index 0000000..b2da0c0 --- /dev/null +++ b/distribution.video/re/include/rem_auframe.h @@ -0,0 +1,49 @@ +/* + * Audio frame + */ + +#define AUDIO_TIMEBASE 1000000U + +/** + * Defines a frame of audio samples + */ +struct auframe { + enum aufmt fmt; /**< Sample format (enum aufmt) */ + uint32_t srate; /**< Samplerate */ + void *sampv; /**< Audio samples (must be mem_ref'd) */ + size_t sampc; /**< Total number of audio samples */ + uint64_t timestamp; /**< Timestamp in AUDIO_TIMEBASE units */ + double level; /**< Audio level in dBov */ + uint16_t id; /**< Frame/Channel identifier */ + uint8_t ch; /**< Channels */ + uint8_t padding[5]; +}; + +void auframe_init(struct auframe *af, enum aufmt fmt, void *sampv, + size_t sampc, uint32_t srate, uint8_t ch); + +/** + * Update an audio frame + * + * @param af Audio frame + * @param sampv Audio samples + * @param sampc Total number of audio samples + * @param timestamp Timestamp in AUDIO_TIMEBASE units + */ +static inline void auframe_update(struct auframe *af, void *sampv, + size_t sampc, uint64_t timestamp) +{ + if (!af) + return; + + af->sampv = sampv; + af->sampc = sampc; + af->timestamp = timestamp; + af->level = AULEVEL_UNDEF; +} + +size_t auframe_size(const struct auframe *af); +void auframe_mute(struct auframe *af); +double auframe_level(struct auframe *af); +uint64_t auframe_bytes_to_timestamp(const struct auframe *af, size_t n); +uint64_t auframe_bytes_to_ms(const struct auframe *af, size_t n); diff --git a/distribution.video/re/include/rem_aulevel.h b/distribution.video/re/include/rem_aulevel.h new file mode 100644 index 0000000..838f34b --- /dev/null +++ b/distribution.video/re/include/rem_aulevel.h @@ -0,0 +1,13 @@ + + +/* + * Audio-level + */ + + +#define AULEVEL_UNDEF (-128.0) +#define AULEVEL_MIN (-96.0) +#define AULEVEL_MAX (0.0) + + +double aulevel_calc_dbov(int fmt, const void *sampv, size_t sampc); diff --git a/distribution.video/re/include/rem_aumix.h b/distribution.video/re/include/rem_aumix.h new file mode 100644 index 0000000..4017fa2 --- /dev/null +++ b/distribution.video/re/include/rem_aumix.h @@ -0,0 +1,36 @@ +/** + * @file rem_aumix.h Audio Mixer + * + * Copyright (C) 2010 Creytiv.com + */ + +struct aumix; +struct aumix_source; + +/** + * Audio mixer frame handler + * + * @param sampv Buffer with audio samples + * @param sampc Number of samples + * @param arg Handler argument + */ +typedef void (aumix_frame_h)(const int16_t *sampv, size_t sampc, void *arg); +typedef void (aumix_record_h)(struct auframe *af); +typedef void (aumix_read_h)(struct auframe *af, void *arg); + +int aumix_alloc(struct aumix **mixp, uint32_t srate, + uint8_t ch, uint32_t ptime); +void aumix_recordh(struct aumix *mix, aumix_record_h *recordh); +void aumix_record_sumh(struct aumix *mix, aumix_record_h *recordh); +int aumix_playfile(struct aumix *mix, const char *filepath); +uint32_t aumix_source_count(const struct aumix *mix); +int aumix_source_alloc(struct aumix_source **srcp, struct aumix *mix, + aumix_frame_h *fh, void *arg); +void aumix_source_set_id(struct aumix_source *src, uint16_t id); +void aumix_source_enable(struct aumix_source *src, bool enable); +void aumix_source_mute(struct aumix_source *src, bool mute); +int aumix_source_put(struct aumix_source *src, const int16_t *sampv, + size_t sampc); +void aumix_source_readh(struct aumix_source *src, aumix_read_h *readh); +void aumix_source_flush(struct aumix_source *src); +int aumix_debug(struct re_printf *pf, const struct aumix *mix); diff --git a/distribution.video/re/include/rem_auresamp.h b/distribution.video/re/include/rem_auresamp.h new file mode 100644 index 0000000..70b4086 --- /dev/null +++ b/distribution.video/re/include/rem_auresamp.h @@ -0,0 +1,34 @@ +/** + * @file rem_auresamp.h Audio Resampling + * + * Copyright (C) 2010 Creytiv.com + */ + +/** + * Defines the audio resampler handler + * + * @param outv Output samples + * @param inv Input samples + * @param inc Number of input samples + * @param ratio Resample ratio + */ +typedef void (auresamp_h)(int16_t *outv, const int16_t *inv, + size_t inc, unsigned ratio); + +/** Defines the resampler state */ +struct auresamp { + struct fir fir; /**< FIR filter state */ + auresamp_h *resample; /**< Resample handler */ + const int16_t *tapv; /**< FIR filter taps */ + size_t tapc; /**< FIR filter tap count */ + uint32_t orate, irate; /**< Input/output sample rate */ + unsigned och, ich; /**< Input/output channel count */ + unsigned ratio; /**< Resample ratio */ + bool up; /**< Up/down sample flag */ +}; + +void auresamp_init(struct auresamp *rs); +int auresamp_setup(struct auresamp *rs, uint32_t irate, unsigned ich, + uint32_t orate, unsigned och); +int auresamp(struct auresamp *rs, int16_t *outv, size_t *outc, + const int16_t *inv, size_t inc); diff --git a/distribution.video/re/include/rem_autone.h b/distribution.video/re/include/rem_autone.h new file mode 100644 index 0000000..23ba65b --- /dev/null +++ b/distribution.video/re/include/rem_autone.h @@ -0,0 +1,10 @@ +/** + * @file rem_autone.h Audio Tones + * + * Copyright (C) 2010 Creytiv.com + */ + + +int autone_sine(struct mbuf *mb, uint32_t srate, + uint32_t f1, int l1, uint32_t f2, int l2); +int autone_dtmf(struct mbuf *mb, uint32_t srate, int digit); diff --git a/distribution.video/re/include/rem_avc.h b/distribution.video/re/include/rem_avc.h new file mode 100644 index 0000000..b795d04 --- /dev/null +++ b/distribution.video/re/include/rem_avc.h @@ -0,0 +1,23 @@ +/** + * @file rem_avc.h Advanced Video Coding + * + * Copyright (C) 2010 Creytiv.com + */ + + +struct avc_config { + uint8_t profile_ind; + uint8_t profile_compat; + uint8_t level_ind; + uint16_t sps_len; + uint8_t sps[256]; + uint16_t pps_len; + uint8_t pps[64]; +}; + + +int avc_config_encode(struct mbuf *mb, uint8_t profile_ind, + uint8_t profile_compat, uint8_t level_ind, + uint16_t sps_length, const uint8_t *sps, + uint16_t pps_length, const uint8_t *pps); +int avc_config_decode(struct avc_config *conf, struct mbuf *mb); diff --git a/distribution.video/re/include/rem_dsp.h b/distribution.video/re/include/rem_dsp.h new file mode 100644 index 0000000..f9ede9f --- /dev/null +++ b/distribution.video/re/include/rem_dsp.h @@ -0,0 +1,137 @@ +/** + * @file rem_dsp.h DSP routines + * + * Copyright (C) 2010 Creytiv.com + */ + + +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif + +#define INT15_MAX 0x3fff +#define INT15_MIN (-INT15_MAX - 1) + +#ifndef INT16_MAX +#define INT16_MAX 0x7fff +#endif + +#ifndef INT16_MIN +#define INT16_MIN (-INT16_MAX - 1) +#endif + + +/* todo: check which preprocessor macros to use */ + + +#if defined (HAVE_ARMV6) || defined (HAVE_NEON) + +static inline uint8_t saturate_u8(int32_t a) +{ + uint8_t r; + __asm__ __volatile__ ("usat %0, #8, %1" : "=r"(r) : "r"(a)); + return r; +} + +static inline int16_t saturate_s15(int32_t a) +{ + __asm__ __volatile__ ("ssat %0, #15, %1 \n\t" + : "+r"(a) + : "r"(a) + ); + + return a; +} + +static inline int16_t saturate_s16(int32_t a) +{ + __asm__ __volatile__ ("ssat %0, #16, %1 \n\t" + : "+r"(a) + : "r"(a) + ); + + return a; +} + +static inline int16_t saturate_add16(int32_t a, int32_t b) +{ + __asm__ __volatile__ ("add %0, %1, %2 \n\t" + "ssat %0, #16, %0 \n\t" + :"+r"(a) + :"r"(a), "r"(b) + ); + return a; +} + +static inline int16_t saturate_sub16(int32_t a, int32_t b) +{ + __asm__ __volatile__ ("sub %0, %1, %2 \n\t" + "ssat %0, #16, %0 \n\t" + :"+r"(a) + :"r"(a), "r"(b) + ); + return a; +} + + +#else + + +static inline uint8_t saturate_u8(int32_t a) +{ + return (a > (int32_t)UINT8_MAX) ? UINT8_MAX : ((a < 0) ? 0 : a); +} + +static inline int16_t saturate_s15(int32_t a) +{ + if (a > INT15_MAX) + return INT15_MAX; + else if (a < INT15_MIN) + return INT15_MIN; + else + return a; +} + +static inline int16_t saturate_s16(int32_t a) +{ + if (a > INT16_MAX) + return INT16_MAX; + else if (a < INT16_MIN) + return INT16_MIN; + else + return a; +} + +static inline int16_t saturate_add16(int32_t a, int32_t b) +{ + return saturate_s16(a + b); +} + + +static inline int16_t saturate_sub16(int32_t a, int32_t b) +{ + return saturate_s16(a - b); +} + + +#endif + + +#ifdef HAVE_NEON +static inline int ABS32(int a) +{ + int r; + __asm__ __volatile__ ("vmov.s32 d0[0], %1 \t\n" + "vabs.s32 d0, d0 \t\n" + "vmov.s32 %0, d0[0] \t\n" + : "=r"(r) + : "r"(a) + ); + return a; +} +#else +static inline int ABS32(int a) +{ + return a > 0 ? a : -a; +} +#endif diff --git a/distribution.video/re/include/rem_dtmf.h b/distribution.video/re/include/rem_dtmf.h new file mode 100644 index 0000000..f96f11b --- /dev/null +++ b/distribution.video/re/include/rem_dtmf.h @@ -0,0 +1,21 @@ +/** + * @file rem_dtmf.h DTMF Decoder + * + * Copyright (C) 2010 Creytiv.com + */ + +struct dtmf_dec; + +/** + * Defines the DTMF decode handler + * + * @param digit Decoded DTMF digit + * @param arg Handler argument + */ +typedef void (dtmf_dec_h)(char digit, void *arg); + + +int dtmf_dec_alloc(struct dtmf_dec **decp, unsigned srate, unsigned ch, + dtmf_dec_h *dech, void *arg); +void dtmf_dec_reset(struct dtmf_dec *dec, unsigned srate, unsigned ch); +void dtmf_dec_probe(struct dtmf_dec *dec, const int16_t *sampv, size_t sampc); diff --git a/distribution.video/re/include/rem_fir.h b/distribution.video/re/include/rem_fir.h new file mode 100644 index 0000000..02dfc94 --- /dev/null +++ b/distribution.video/re/include/rem_fir.h @@ -0,0 +1,15 @@ +/** + * @file rem_fir.h Finite Impulse Response (FIR) functions + * + * Copyright (C) 2010 Creytiv.com + */ + +/** Defines the fir filter state */ +struct fir { + int16_t history[256]; /**< Previous samples */ + unsigned index; /**< Sample index */ +}; + +void fir_reset(struct fir *fir); +void fir_filter(struct fir *fir, int16_t *outv, const int16_t *inv, size_t inc, + unsigned ch, const int16_t *tapv, size_t tapc); diff --git a/distribution.video/re/include/rem_flv.h b/distribution.video/re/include/rem_flv.h new file mode 100644 index 0000000..abc8338 --- /dev/null +++ b/distribution.video/re/include/rem_flv.h @@ -0,0 +1,56 @@ +/** + * @file rem_flv.h Flash Video File Format + * + * Copyright (C) 2010 Creytiv.com + */ + + +/* + * Audio + */ + +enum flv_aucodec { + FLV_AUCODEC_PCM = 0, + FLV_AUCODEC_MP3 = 2, + FLV_AUCODEC_PCM_LE = 3, + FLV_AUCODEC_ALAW = 7, + FLV_AUCODEC_ULAW = 8, + FLV_AUCODEC_AAC = 10, +}; + +enum flv_srate { + FLV_SRATE_5500HZ = 0, + FLV_SRATE_11000HZ = 1, + FLV_SRATE_22000HZ = 2, + FLV_SRATE_44000HZ = 3, +}; + +enum flv_aac_packet_type { + FLV_AAC_SEQUENCE_HEADER = 0, + FLV_AAC_RAW = 1, +}; + + +/* + * Video + */ + +enum flv_vidframe { + FLV_VIDFRAME_KEY = 1, + FLV_VIDFRAME_INTER = 2, + FLV_VIDFRAME_DISP_INTER = 3, + FLV_VIDFRAME_GENERATED_KEY = 4, + FLV_VIDFRAME_VIDEO_INFO_CMD = 5, +}; + +enum flv_vidcodec { + FLV_VIDCODEC_H263 = 2, + FLV_VIDCODEC_H264 = 7, + FLV_VIDCODEC_MPEG4 = 9, +}; + +enum flv_avc_packet_type { + FLV_AVC_SEQUENCE = 0, + FLV_AVC_NALU = 1, + FLV_AVC_EOS = 2, +}; diff --git a/distribution.video/re/include/rem_g711.h b/distribution.video/re/include/rem_g711.h new file mode 100644 index 0000000..b093aab --- /dev/null +++ b/distribution.video/re/include/rem_g711.h @@ -0,0 +1,77 @@ +/** + * @file rem_g711.h Interface to G.711 codec + * + * Copyright (C) 2010 Creytiv.com + */ + + +extern const uint8_t g711_l2u[4096]; +extern const uint8_t g711_l2A[2048]; +extern const int16_t g711_u2l[256]; +extern const int16_t g711_A2l[256]; + + +/** + * Encode one 16-bit PCM sample to U-law format + * + * @param l Signed PCM sample + * + * @return U-law byte + */ +static inline uint8_t g711_pcm2ulaw(int16_t lx) +{ + int32_t l = lx; + const uint8_t mask = (l < 0) ? 0x7f : 0xff; + if (l < 0) + l = -l; + if (l < 4) + return 0xff & mask; + l -= 4; + l >>= 3; + + return g711_l2u[l] & mask; +} + + +/** + * Encode one 16-bit PCM sample to A-law format + * + * @param l Signed PCM sample + * + * @return A-law byte + */ +static inline uint8_t g711_pcm2alaw(int16_t l) +{ + const uint8_t mask = (l < 0) ? 0x7f : 0xff; + if (l < 0) + l = ~l; + l >>= 4; + + return g711_l2A[l] & mask; +} + + +/** + * Decode one U-law sample to 16-bit PCM sample + * + * @param u U-law byte + * + * @return Signed PCM sample + */ +static inline int16_t g711_ulaw2pcm(uint8_t u) +{ + return g711_u2l[u]; +} + + +/** + * Decode one A-law sample to 16-bit PCM sample + * + * @param A A-law byte + * + * @return Signed PCM sample + */ +static inline int16_t g711_alaw2pcm(uint8_t a) +{ + return g711_A2l[a]; +} diff --git a/distribution.video/re/include/rem_goertzel.h b/distribution.video/re/include/rem_goertzel.h new file mode 100644 index 0000000..c9ff2e6 --- /dev/null +++ b/distribution.video/re/include/rem_goertzel.h @@ -0,0 +1,32 @@ +/** + * @file rem_goertzel.h Goertzel algorithm + * + * Copyright (C) 2010 Creytiv.com + */ + +/** Defines the goertzel algorithm state */ +struct goertzel { + double q1; /**< current state */ + double q2; /**< previous state */ + double coef; /**< coefficient */ +}; + + +void goertzel_init(struct goertzel *g, double freq, unsigned srate); +void goertzel_reset(struct goertzel *g); +double goertzel_result(struct goertzel *g); + + +/** + * Process sample + * + * @param g Goertzel state + * @param samp Sample value + */ +static inline void goertzel_update(struct goertzel *g, int16_t samp) +{ + double q0 = g->coef*g->q1 - g->q2 + (double)samp; + + g->q2 = g->q1; + g->q1 = q0; +} diff --git a/distribution.video/re/include/rem_vid.h b/distribution.video/re/include/rem_vid.h new file mode 100644 index 0000000..3071d34 --- /dev/null +++ b/distribution.video/re/include/rem_vid.h @@ -0,0 +1,154 @@ +/** + * @file rem_vid.h Basic video types + * + * Copyright (C) 2010 Creytiv.com + */ + + +/** Pixel format */ +enum vidfmt { + VID_FMT_YUV420P = 0, /* planar YUV 4:2:0 12bpp */ + VID_FMT_YUYV422, /* packed YUV 4:2:2 16bpp */ + VID_FMT_UYVY422, /* packed YUV 4:2:2 16bpp */ + VID_FMT_RGB32, /* packed RGBA 8:8:8:8 32bpp (native endian) */ + VID_FMT_ARGB, /* packed RGBA 8:8:8:8 32bpp (big endian) */ + VID_FMT_RGB565, /* packed RGB 5:6:5 16bpp (native endian) */ + VID_FMT_NV12, /* planar YUV 4:2:0 12bpp UV interleaved */ + VID_FMT_NV21, /* planar YUV 4:2:0 12bpp VU interleaved */ + VID_FMT_YUV444P, /* planar YUV 4:4:4 24bpp */ + VID_FMT_YUV422P, /* planar YUV 4:2:2 16bpp */ + /* marker */ + VID_FMT_N +}; + +/** Video pixel format component description */ +struct vidfmt_compdesc { + unsigned plane_index:2; + unsigned step:3; +}; + +/** Video pixel format description */ +struct vidfmt_desc { + const char *name; + uint8_t planes; + uint8_t compn; + struct vidfmt_compdesc compv[4]; +}; + +/** Video orientation */ +enum vidorient { + VIDORIENT_PORTRAIT, + VIDORIENT_PORTRAIT_UPSIDEDOWN, + VIDORIENT_LANDSCAPE_LEFT, + VIDORIENT_LANDSCAPE_RIGHT, +}; + +/** Video size */ +struct vidsz { + unsigned w; /**< Width */ + unsigned h; /**< Height */ +}; + +/** Video frame */ +struct vidframe { + uint8_t *data[4]; /**< Video planes */ + uint16_t linesize[4]; /**< Array of line-sizes */ + struct vidsz size; /**< Frame resolution */ + enum vidfmt fmt; /**< Video pixel format */ + unsigned xoffs; /**< x offset */ + unsigned yoffs; /**< y offset */ +}; + +/** Video point */ +struct vidpt { + unsigned x; /**< X position */ + unsigned y; /**< Y position */ +}; + +/** Video rectangle */ +struct vidrect { + unsigned x; /**< X position */ + unsigned y; /**< Y position */ + unsigned w; /**< Width */ + unsigned h; /**< Height */ +}; + +static inline bool vidsz_cmp(const struct vidsz *a, const struct vidsz *b) +{ + if (!a || !b) + return false; + + if (a == b) + return true; + + return a->w == b->w && a->h == b->h; +} + + +static inline bool vidrect_cmp(const struct vidrect *a, + const struct vidrect *b) +{ + if (!a || !b) + return false; + + if (a == b) + return true; + + return a->x == b->x && a->y == b->y && a->w == b->w && a->h == b->h; +} + + +static inline int rgb2y(uint8_t r, uint8_t g, uint8_t b) +{ + return ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; +} + + +static inline int rgb2u(uint8_t r, uint8_t g, uint8_t b) +{ + return ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; +} + + +static inline int rgb2v(uint8_t r, uint8_t g, uint8_t b) +{ + return ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; +} + + +size_t vidframe_size(enum vidfmt fmt, const struct vidsz *sz); +void vidframe_init(struct vidframe *vf, enum vidfmt fmt, + const struct vidsz *sz, void *data[4], + unsigned linesize[4]); +void vidframe_init_buf(struct vidframe *vf, enum vidfmt fmt, + const struct vidsz *sz, uint8_t *buf); +int vidframe_alloc(struct vidframe **vfp, enum vidfmt fmt, + const struct vidsz *sz); +void vidframe_fill(struct vidframe *vf, uint32_t r, uint32_t g, uint32_t b); +void vidframe_copy(struct vidframe *dst, const struct vidframe *src); + + +const char *vidfmt_name(enum vidfmt fmt); + + +static inline bool vidframe_isvalid(const struct vidframe *f) +{ + return f ? f->data[0] != NULL : false; +} + + +extern const struct vidfmt_desc vidfmt_descv[VID_FMT_N]; + + +/* draw */ +void vidframe_draw_point(struct vidframe *f, unsigned x, unsigned y, + uint8_t r, uint8_t g, uint8_t b); +void vidframe_draw_hline(struct vidframe *f, + unsigned x0, unsigned y0, unsigned w, + uint8_t r, uint8_t g, uint8_t b); +void vidframe_draw_vline(struct vidframe *f, + unsigned x0, unsigned y0, unsigned h, + uint8_t r, uint8_t g, uint8_t b); +void vidframe_draw_rect(struct vidframe *f, + unsigned x0, unsigned y0, unsigned w, unsigned h, + uint8_t r, uint8_t g, uint8_t b); diff --git a/distribution.video/re/include/rem_vidconv.h b/distribution.video/re/include/rem_vidconv.h new file mode 100644 index 0000000..44120f4 --- /dev/null +++ b/distribution.video/re/include/rem_vidconv.h @@ -0,0 +1,13 @@ +/** + * @file rem_vidconv.h Video colorspace conversion + * + * Copyright (C) 2010 Creytiv.com + */ + + +void vidconv(struct vidframe *dst, const struct vidframe *src, + struct vidrect *r); +void vidconv_aspect(struct vidframe *dst, const struct vidframe *src, + struct vidrect *r); +void vidconv_center(struct vidframe *dst, const struct vidframe *src, + struct vidrect *r); diff --git a/distribution.video/re/include/rem_video.h b/distribution.video/re/include/rem_video.h new file mode 100644 index 0000000..73b4c77 --- /dev/null +++ b/distribution.video/re/include/rem_video.h @@ -0,0 +1,11 @@ +/** + * @file rem_video.h Wrapper for all Video header files + * + * Copyright (C) 2010 Creytiv.com + */ + + +#include "rem_vid.h" +#include "rem_vidmix.h" +#include "rem_vidconv.h" +#include "rem_avc.h" diff --git a/distribution.video/re/include/rem_vidmix.h b/distribution.video/re/include/rem_vidmix.h new file mode 100644 index 0000000..b775bbd --- /dev/null +++ b/distribution.video/re/include/rem_vidmix.h @@ -0,0 +1,42 @@ +/** + * @file rem_vidmix.h Video Mixer + * + * Copyright (C) 2010 Creytiv.com + */ + + +struct vidmix; +struct vidmix_source; + +/** + * Video mixer frame handler + * + * @param ts Timestamp + * @param frame Video frame + * @param arg Handler argument + */ +typedef void (vidmix_frame_h)(uint64_t ts, const struct vidframe *frame, + void *arg); + +int vidmix_alloc(struct vidmix **mixp); +void vidmix_set_fmt(struct vidmix *mix, enum vidfmt fmt); +int vidmix_source_alloc(struct vidmix_source **srcp, struct vidmix *mix, + const struct vidsz *sz, unsigned fps, bool content, + vidmix_frame_h *fh, void *arg); +bool vidmix_source_isenabled(const struct vidmix_source *src); +bool vidmix_source_isrunning(const struct vidmix_source *src); +uint32_t vidmix_source_get_pidx(const struct vidmix_source *src); +void *vidmix_source_get_focus(const struct vidmix_source *src); +void vidmix_source_enable(struct vidmix_source *src, bool enable); +int vidmix_source_start(struct vidmix_source *src); +void vidmix_source_stop(struct vidmix_source *src); +int vidmix_source_set_size(struct vidmix_source *src, const struct vidsz *sz); +void vidmix_source_set_rate(struct vidmix_source *src, unsigned fps); +void vidmix_source_set_content_hide(struct vidmix_source *src, bool hide); +void vidmix_source_toggle_selfview(struct vidmix_source *src); +void vidmix_source_set_focus(struct vidmix_source *src, + const struct vidmix_source *focus_src, + bool focus_full); +void vidmix_source_set_focus_idx(struct vidmix_source *src, uint32_t pidx); +void vidmix_source_put(struct vidmix_source *src, + const struct vidframe *frame); diff --git a/distribution.video/re/lib/arm64-v8a/libre.a b/distribution.video/re/lib/arm64-v8a/libre.a new file mode 100644 index 0000000..3769ebe Binary files /dev/null and b/distribution.video/re/lib/arm64-v8a/libre.a differ diff --git a/distribution.video/re/lib/arm64-v8a/libre.a_rev0 b/distribution.video/re/lib/arm64-v8a/libre.a_rev0 new file mode 100644 index 0000000..b988874 Binary files /dev/null and b/distribution.video/re/lib/arm64-v8a/libre.a_rev0 differ diff --git a/distribution.video/sndfile/lib/arm64-v8a/libsndfile.a b/distribution.video/sndfile/lib/arm64-v8a/libsndfile.a new file mode 100644 index 0000000..353e03d Binary files /dev/null and b/distribution.video/sndfile/lib/arm64-v8a/libsndfile.a differ diff --git a/distribution.video/spandsp/lib/arm64-v8a/libspandsp.a b/distribution.video/spandsp/lib/arm64-v8a/libspandsp.a new file mode 100644 index 0000000..bbe0325 Binary files /dev/null and b/distribution.video/spandsp/lib/arm64-v8a/libspandsp.a differ diff --git a/distribution.video/vpx/lib/arm64-v8a/libvpx.a b/distribution.video/vpx/lib/arm64-v8a/libvpx.a new file mode 100644 index 0000000..0324d30 Binary files /dev/null and b/distribution.video/vpx/lib/arm64-v8a/libvpx.a differ diff --git a/distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a b/distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a new file mode 100644 index 0000000..1e32d34 Binary files /dev/null and b/distribution.video/webrtc/lib/arm64-v8a/libwebrtc.a differ diff --git a/distribution.video/x264/lib/arm64-v8a/libx264.a b/distribution.video/x264/lib/arm64-v8a/libx264.a new file mode 100644 index 0000000..764a471 Binary files /dev/null and b/distribution.video/x264/lib/arm64-v8a/libx264.a differ diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt new file mode 100644 index 0000000..9581a88 --- /dev/null +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -0,0 +1,9 @@ +baresip ist eine SIP User Agent App für Android, die auf baresip basiert. + +Aktuell unterstüzt die baresip App Anrufe mit Ton, Textnachrichten, Anrufbeantworter (mit Anzeige für nicht abgehörte Nachrichten) und Anrufsweiterleitungen (direkt/ mit Zusatzinformationen). Zudem werden Opus, AMR, Codec2, G.729, G.722, G.722.1, G.726, oder PCMU/PCMA Codecs unterstüzt. Eine sichere Verbindung wird mit TLS oder WSS SIP und ZRTP oder (DTLS) SRTP Medienverkapselung sichergestellt. + +Die Entwicklung der baresip App wurde durch das Fehlen eines sicheren, quelloffenen und SIP-basierten VoIP User Agent für Android motiviert, der nicht auf proprietäre und externe Push-Benachrichtigungsdienste angewiesen ist. + +Falls Sie Videoanrufe tätigen wollen und ein Gerät mit Android 7.0 oder höher besitzen, das die Camera2 API auf dem Hardware-Unterstützungslevel LEVEL 3 unterstüzt, können Sie die Schwester-App baresip+ nutzen. + +Der Quellcode befindet sich auf GitHub, dort können sie Auch Fehler/ Bugs melden. diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt new file mode 100644 index 0000000..45e7e3d --- /dev/null +++ b/fastlane/metadata/android/de-DE/short_description.txt @@ -0,0 +1 @@ +VoIP User Agent App für Android basierend auf der baresip SIP Bibliothek diff --git a/fastlane/metadata/android/de-DE/title.txt b/fastlane/metadata/android/de-DE/title.txt new file mode 100644 index 0000000..cdeb99d --- /dev/null +++ b/fastlane/metadata/android/de-DE/title.txt @@ -0,0 +1 @@ +baresip diff --git a/fastlane/metadata/android/el/title.txt b/fastlane/metadata/android/el/title.txt new file mode 100644 index 0000000..d15bcef --- /dev/null +++ b/fastlane/metadata/android/el/title.txt @@ -0,0 +1 @@ +baresip+ diff --git a/fastlane/metadata/android/en-US/changelogs/1.0.0.txt b/fastlane/metadata/android/en-US/changelogs/1.0.0.txt new file mode 100644 index 0000000..b48cf7a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.0.0.txt @@ -0,0 +1 @@ +- Introduced video calling to baresip application. diff --git a/fastlane/metadata/android/en-US/changelogs/1.1.0.txt b/fastlane/metadata/android/en-US/changelogs/1.1.0.txt new file mode 100644 index 0000000..e87a1b7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.1.0.txt @@ -0,0 +1,3 @@ +- Ask if user allows video to be added to the call. +- Show video icon in red color when video request is pending. +- Use baresip+.bs as backup/restore file. diff --git a/fastlane/metadata/android/en-US/changelogs/1.1.1.txt b/fastlane/metadata/android/en-US/changelogs/1.1.1.txt new file mode 100644 index 0000000..96157a2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.1.1.txt @@ -0,0 +1,2 @@ +- Fixed two chat related crashes. +- Minor code improvements. diff --git a/fastlane/metadata/android/en-US/changelogs/1.2.0.txt b/fastlane/metadata/android/en-US/changelogs/1.2.0.txt new file mode 100644 index 0000000..fb796dd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.2.0.txt @@ -0,0 +1 @@ +- Dialog improvements. diff --git a/fastlane/metadata/android/en-US/changelogs/1.3.0.txt b/fastlane/metadata/android/en-US/changelogs/1.3.0.txt new file mode 100644 index 0000000..bdf6886 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.3.0.txt @@ -0,0 +1,6 @@ +- Added TURN account medianat option. +- Added possibility to give STUN/TURN server username/password. +- STUN/TURN related strings for some languages have not been updated yet. +- ES language update. +- Improved checking of camera availability. +- More dialog improvements. diff --git a/fastlane/metadata/android/en-US/changelogs/10.0.0.txt b/fastlane/metadata/android/en-US/changelogs/10.0.0.txt new file mode 100644 index 0000000..93a9091 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/10.0.0.txt @@ -0,0 +1,2 @@ +- Added support for dark theme and dark theme setting. +- Account spinner enhancements. diff --git a/fastlane/metadata/android/en-US/changelogs/10.1.0.txt b/fastlane/metadata/android/en-US/changelogs/10.1.0.txt new file mode 100644 index 0000000..1f185d9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/10.1.0.txt @@ -0,0 +1,3 @@ +- Fixed turning on dark theme when baresip application is launched +- Added "1920x1080" option to Video Frame Size setting +- New translations (Portuguese (Brazil)) diff --git a/fastlane/metadata/android/en-US/changelogs/11.0.0.txt b/fastlane/metadata/android/en-US/changelogs/11.0.0.txt new file mode 100644 index 0000000..b823435 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11.0.0.txt @@ -0,0 +1,5 @@ +- Added H.265 video codec +- Other apps can now see baresip as a phone app for sip: and tel: URIs +- Improved save/restore of call URI text when main activity is paused +- Introduced Japanese translation +- Color enhancements diff --git a/fastlane/metadata/android/en-US/changelogs/11.0.1.txt b/fastlane/metadata/android/en-US/changelogs/11.0.1.txt new file mode 100644 index 0000000..0d4768d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11.0.1.txt @@ -0,0 +1 @@ +- Fixed handling of call action when baresip app is not running. diff --git a/fastlane/metadata/android/en-US/changelogs/11.0.2.txt b/fastlane/metadata/android/en-US/changelogs/11.0.2.txt new file mode 100644 index 0000000..ce8ff63 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11.0.2.txt @@ -0,0 +1 @@ +- Try to detect rotation of contact avatar images diff --git a/fastlane/metadata/android/en-US/changelogs/12.0.0.txt b/fastlane/metadata/android/en-US/changelogs/12.0.0.txt new file mode 100644 index 0000000..e61c9fa --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/12.0.0.txt @@ -0,0 +1 @@ +- Added possibility to export baresip contacts to Android contacts diff --git a/fastlane/metadata/android/en-US/changelogs/13.0.0.txt b/fastlane/metadata/android/en-US/changelogs/13.0.0.txt new file mode 100644 index 0000000..1e624b5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/13.0.0.txt @@ -0,0 +1,2 @@ +- Fixed crash when baresip is started the first time +- Added AV1 video codec diff --git a/fastlane/metadata/android/en-US/changelogs/14.0.0.txt b/fastlane/metadata/android/en-US/changelogs/14.0.0.txt new file mode 100644 index 0000000..082021b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/14.0.0.txt @@ -0,0 +1 @@ +- Added possibility to partially auto-configure new account from web page (see https://github.com/juha-h/baresip-studio/wiki/Automatic-Account-Configuration for details) diff --git a/fastlane/metadata/android/en-US/changelogs/14.1.0.txt b/fastlane/metadata/android/en-US/changelogs/14.1.0.txt new file mode 100644 index 0000000..d54c4ae --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/14.1.0.txt @@ -0,0 +1,2 @@ +- Improved finding of a contact that matches a SIP URI +- Toolbar and menu style enhancements diff --git a/fastlane/metadata/android/en-US/changelogs/14.1.1.txt b/fastlane/metadata/android/en-US/changelogs/14.1.1.txt new file mode 100644 index 0000000..65a11c8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/14.1.1.txt @@ -0,0 +1,2 @@ +- Fixed call list related crash and appearance +- Fixed coloring of audio modules setting diff --git a/fastlane/metadata/android/en-US/changelogs/14.2.0.txt b/fastlane/metadata/android/en-US/changelogs/14.2.0.txt new file mode 100644 index 0000000..f259129 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/14.2.0.txt @@ -0,0 +1 @@ +- Added 'Verify Server Certificates' setting diff --git a/fastlane/metadata/android/en-US/changelogs/15.0.0.txt b/fastlane/metadata/android/en-US/changelogs/15.0.0.txt new file mode 100644 index 0000000..cb4d308 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/15.0.0.txt @@ -0,0 +1,3 @@ +- Enabled swipe left/right to toggle between accounts +- Added DTMF Mode account setting +- Translations update from Weblate (French) diff --git a/fastlane/metadata/android/en-US/changelogs/15.1.0.txt b/fastlane/metadata/android/en-US/changelogs/15.1.0.txt new file mode 100644 index 0000000..c6a9009 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/15.1.0.txt @@ -0,0 +1,5 @@ +- Fixed light mode color of hangup button +- Portuguese (Brazil) translations from Weblate +- Fixed F-Droid nb-NO locale tag +- Avoid 'duplicate finish request' warnings +- New baresip+ icon for F-Droid diff --git a/fastlane/metadata/android/en-US/changelogs/15.2.0.txt b/fastlane/metadata/android/en-US/changelogs/15.2.0.txt new file mode 100644 index 0000000..3bb698e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/15.2.0.txt @@ -0,0 +1,3 @@ +- Chat, call history, and contact related bug fixes +- Fixed URI completion bugs and improved URI related checks +- Translations from Weblate (French, Portuguese (Brazil)) diff --git a/fastlane/metadata/android/en-US/changelogs/16.0.0.txt b/fastlane/metadata/android/en-US/changelogs/16.0.0.txt new file mode 100644 index 0000000..90b9ed8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/16.0.0.txt @@ -0,0 +1 @@ +- Added possibility to take snapshot of received video stream diff --git a/fastlane/metadata/android/en-US/changelogs/16.1.0.txt b/fastlane/metadata/android/en-US/changelogs/16.1.0.txt new file mode 100644 index 0000000..6959a08 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/16.1.0.txt @@ -0,0 +1,2 @@ +- Store snapshots to Pictures folder instead of Downloads folder +- Avoid possible contacts related crash at baresip start diff --git a/fastlane/metadata/android/en-US/changelogs/16.1.1.txt b/fastlane/metadata/android/en-US/changelogs/16.1.1.txt new file mode 100644 index 0000000..d52bf9d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/16.1.1.txt @@ -0,0 +1 @@ +- Fixed proximity sensing after making an outgoing call. diff --git a/fastlane/metadata/android/en-US/changelogs/17.0.0.txt b/fastlane/metadata/android/en-US/changelogs/17.0.0.txt new file mode 100644 index 0000000..ee99b71 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.0.0.txt @@ -0,0 +1,3 @@ +- Upgraded target SDK version to API level 30 (Android 11) +- In Android versions 10 and above, let user choose the file in + backup, restore, TLS certificate related operations diff --git a/fastlane/metadata/android/en-US/changelogs/17.0.1.txt b/fastlane/metadata/android/en-US/changelogs/17.0.1.txt new file mode 100644 index 0000000..7e20dfb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.0.1.txt @@ -0,0 +1 @@ +- Upstream fix in selecting correct account for incoming call. diff --git a/fastlane/metadata/android/en-US/changelogs/17.1.0.txt b/fastlane/metadata/android/en-US/changelogs/17.1.0.txt new file mode 100644 index 0000000..344d633 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.1.0.txt @@ -0,0 +1 @@ +- Password dialog and account password entry improvements diff --git a/fastlane/metadata/android/en-US/changelogs/17.2.0.txt b/fastlane/metadata/android/en-US/changelogs/17.2.0.txt new file mode 100644 index 0000000..afae69c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.2.0.txt @@ -0,0 +1,6 @@ +- Added support for AMR codec Bandwidth Efficient Mode +- Allow escaped characters in SIP URI user part and authentication username +- Use coroutine instead of async task to fetch account config from network +- In Android 10+ use picker to choose TLS Certificate and TLS CA Files +- Ask confirmation to reset settings to factory defaults +- New translations (Portuguese and Portuguese (Brazil)) diff --git a/fastlane/metadata/android/en-US/changelogs/17.3.0.txt b/fastlane/metadata/android/en-US/changelogs/17.3.0.txt new file mode 100644 index 0000000..5af476d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.3.0.txt @@ -0,0 +1,3 @@ +- Play auto-answer sound when auto-answering +- Removed iLBC codec (removed from upstream) +- Removed unused audio files diff --git a/fastlane/metadata/android/en-US/changelogs/18.0.0.txt b/fastlane/metadata/android/en-US/changelogs/18.0.0.txt new file mode 100644 index 0000000..16ef0ed --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.0.0.txt @@ -0,0 +1,4 @@ +- Improved About text +- Restore chat list position when returning from chat +- Fixed crash when asking for account's password +- Don't try to load iLBC module diff --git a/fastlane/metadata/android/en-US/changelogs/18.1.0.txt b/fastlane/metadata/android/en-US/changelogs/18.1.0.txt new file mode 100644 index 0000000..a67ba84 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.1.0.txt @@ -0,0 +1,3 @@ +- Upstream fix of websocket transport +- New Portuguese translations +- Check Outbound Proxy URI transport diff --git a/fastlane/metadata/android/en-US/changelogs/18.2.0.txt b/fastlane/metadata/android/en-US/changelogs/18.2.0.txt new file mode 100644 index 0000000..7335e3b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.2.0.txt @@ -0,0 +1,3 @@ +- Account STUN/TURN URI enhancements +- Various audio related improvements +- New Portuguese (Brazil) and Slovenian translations diff --git a/fastlane/metadata/android/en-US/changelogs/18.2.1.txt b/fastlane/metadata/android/en-US/changelogs/18.2.1.txt new file mode 100644 index 0000000..387ec6f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.2.1.txt @@ -0,0 +1 @@ +- Fixed crash when selecting an account in accounts activity diff --git a/fastlane/metadata/android/en-US/changelogs/19.0.0.txt b/fastlane/metadata/android/en-US/changelogs/19.0.0.txt new file mode 100644 index 0000000..e0fb622 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/19.0.0.txt @@ -0,0 +1,3 @@ +- Added button to turn microphone on/off during call +- Used horizontal scroll view for call control buttons +- Moved "video on" button to call control button row diff --git a/fastlane/metadata/android/en-US/changelogs/19.1.1.txt b/fastlane/metadata/android/en-US/changelogs/19.1.1.txt new file mode 100644 index 0000000..68b6c3f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/19.1.1.txt @@ -0,0 +1,3 @@ +- Avoid crash when call is closed from video layout +- Don't show front/back camera button if camera is not available +- Minor AudioManager related improvements diff --git a/fastlane/metadata/android/en-US/changelogs/19.2.0.txt b/fastlane/metadata/android/en-US/changelogs/19.2.0.txt new file mode 100644 index 0000000..c0f2053 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/19.2.0.txt @@ -0,0 +1,2 @@ +- Improved checking of SIP URI parameters +- More audio manager/bluetooth related fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/19.3.0.txt b/fastlane/metadata/android/en-US/changelogs/19.3.0.txt new file mode 100644 index 0000000..f8c9de4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/19.3.0.txt @@ -0,0 +1,4 @@ +- Acquire WiFi lock while baresip is using WiFi network +- Restored accidently removed ringback asset +- Added About note regarding turning off battery optimizations +- Swedish language translations diff --git a/fastlane/metadata/android/en-US/changelogs/2.0.0.txt b/fastlane/metadata/android/en-US/changelogs/2.0.0.txt new file mode 100644 index 0000000..3063950 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2.0.0.txt @@ -0,0 +1,3 @@ +- Initial support for one way (sendonly/recvonly) video. +- Known issue: selfview is not shown when video stream is sendonly. +- Alert dialog improvements. diff --git a/fastlane/metadata/android/en-US/changelogs/20.0.0.txt b/fastlane/metadata/android/en-US/changelogs/20.0.0.txt new file mode 100644 index 0000000..2742efe --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/20.0.0.txt @@ -0,0 +1,2 @@ +- New Swedish and Portuguese (Brazil) translations +- Various implementation improvements diff --git a/fastlane/metadata/android/en-US/changelogs/21.0.0.txt b/fastlane/metadata/android/en-US/changelogs/21.0.0.txt new file mode 100644 index 0000000..6174864 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/21.0.0.txt @@ -0,0 +1,2 @@ +- Added limited support for multiple simultaneously active network interfaces +- Show notification when baresip is started without network access diff --git a/fastlane/metadata/android/en-US/changelogs/21.1.0.txt b/fastlane/metadata/android/en-US/changelogs/21.1.0.txt new file mode 100644 index 0000000..2b48d7f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/21.1.0.txt @@ -0,0 +1 @@ +- Use WebRTC Acoustic Echo Cancellation Mobile Mode filter diff --git a/fastlane/metadata/android/en-US/changelogs/22.0.0.txt b/fastlane/metadata/android/en-US/changelogs/22.0.0.txt new file mode 100644 index 0000000..a59d8b3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/22.0.0.txt @@ -0,0 +1,6 @@ +- Use WebRTC Acoustic Echo Cancellation Mobile Mode filter +- Show in notification the number missed calls if more than one +- When Default Call Volume setting is set, set both media and call volume +- Cancel notifications when main activity is resumed +- Fixed stop ringing in older Android versions +- New Swedish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/22.1.0.txt b/fastlane/metadata/android/en-US/changelogs/22.1.0.txt new file mode 100644 index 0000000..5b4ff03 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/22.1.0.txt @@ -0,0 +1,5 @@ +- When aec is enabled/disabled, load/unload webrtc_aecm module +- Use BaresipService to play all sounds +- Proper handling of session progress response +- During call, volume keys now control media volume +- Use communication audio mode when not in ringing audio mode diff --git a/fastlane/metadata/android/en-US/changelogs/22.2.0.txt b/fastlane/metadata/android/en-US/changelogs/22.2.0.txt new file mode 100644 index 0000000..5e6e037 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/22.2.0.txt @@ -0,0 +1,3 @@ +- Audio focus related fixes and improvements +- Remove all whitespace from callee field +- New Portuguese (Brazil) translation diff --git a/fastlane/metadata/android/en-US/changelogs/23.0.0.txt b/fastlane/metadata/android/en-US/changelogs/23.0.0.txt new file mode 100644 index 0000000..9e4517c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.0.0.txt @@ -0,0 +1,6 @@ +- Migrated baresip to API level 31 (Android 12) +- Improved available network detection +- Improved permission requests +- Removed account's Prefer IPv6 Media setting +- Fixed crash in account's Video Codecs setting +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/23.0.1.txt b/fastlane/metadata/android/en-US/changelogs/23.0.1.txt new file mode 100644 index 0000000..b2e8225 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.0.1.txt @@ -0,0 +1 @@ +- Stop ringing when answering to video call diff --git a/fastlane/metadata/android/en-US/changelogs/23.1.0.txt b/fastlane/metadata/android/en-US/changelogs/23.1.0.txt new file mode 100644 index 0000000..d45dcff --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.1.0.txt @@ -0,0 +1,4 @@ +- Moved call mute button from call control to action bar +- Added Battery Optimizations setting +- Ask microphone and camera permissions when baresip is started +- New Portuguese (Brazil), French, and Swedish translations diff --git a/fastlane/metadata/android/en-US/changelogs/23.2.0.txt b/fastlane/metadata/android/en-US/changelogs/23.2.0.txt new file mode 100644 index 0000000..d890c73 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.2.0.txt @@ -0,0 +1 @@ +- Added microphone mute button to video layout diff --git a/fastlane/metadata/android/en-US/changelogs/23.2.1.txt b/fastlane/metadata/android/en-US/changelogs/23.2.1.txt new file mode 100644 index 0000000..af5bed6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.2.1.txt @@ -0,0 +1 @@ +- Prevented swipe related crash diff --git a/fastlane/metadata/android/en-US/changelogs/23.3.0.txt b/fastlane/metadata/android/en-US/changelogs/23.3.0.txt new file mode 100644 index 0000000..b0f0b72 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.3.0.txt @@ -0,0 +1,3 @@ +- Removed AV1 video codec until it starts to work again +- Currently mic icon is active only when a call is connected +- New Swedish translations diff --git a/fastlane/metadata/android/en-US/changelogs/24.0.0.txt b/fastlane/metadata/android/en-US/changelogs/24.0.0.txt new file mode 100644 index 0000000..d4f6f74 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.0.0.txt @@ -0,0 +1 @@ +- RFC 5589 Basic Transfer compliant call transfer implementation diff --git a/fastlane/metadata/android/en-US/changelogs/24.0.1.txt b/fastlane/metadata/android/en-US/changelogs/24.0.1.txt new file mode 100644 index 0000000..4f17a63 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.0.1.txt @@ -0,0 +1 @@ +Fixed outgoing call audio settings diff --git a/fastlane/metadata/android/en-US/changelogs/24.1.0.txt b/fastlane/metadata/android/en-US/changelogs/24.1.0.txt new file mode 100644 index 0000000..5968ba0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.1.0.txt @@ -0,0 +1,5 @@ +- Added average bit rate, jitter, packet count, and packet lost count data to call info +- Use accent color pause icon to indicate that user has put the call on hold +- Inform user when the other party has put the call on hold +- Minor soft input related improvements +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/24.2.0.txt b/fastlane/metadata/android/en-US/changelogs/24.2.0.txt new file mode 100644 index 0000000..a39077c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.2.0.txt @@ -0,0 +1,2 @@ +- Better protection of baresip app when device is locked with secure keyguard +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/24.4.0.txt b/fastlane/metadata/android/en-US/changelogs/24.4.0.txt new file mode 100644 index 0000000..c68282b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.4.0.txt @@ -0,0 +1,3 @@ +- Added info button to video layout +- Moved Default Call Volume setting under Audio settings +- New language (German) diff --git a/fastlane/metadata/android/en-US/changelogs/24.5.0.txt b/fastlane/metadata/android/en-US/changelogs/24.5.0.txt new file mode 100644 index 0000000..81e457e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.5.0.txt @@ -0,0 +1 @@ +- New Portuguese and German translations diff --git a/fastlane/metadata/android/en-US/changelogs/25.0.0.txt b/fastlane/metadata/android/en-US/changelogs/25.0.0.txt new file mode 100644 index 0000000..1f94ba7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/25.0.0.txt @@ -0,0 +1,4 @@ +- Improved device lock/unlock handling +- In Settings, added link to Android settings +- Properly check if Battery Optimizations setting has been changed +- New Swedish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/26.0.0.txt b/fastlane/metadata/android/en-US/changelogs/26.0.0.txt new file mode 100644 index 0000000..a87d483 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/26.0.0.txt @@ -0,0 +1,5 @@ +- Improved display of call history time value in call history list +- Added call details activity that can be accessed by touching time in call history list +- Fixed showing of avatars in contact, call, and chat lists +- Allow cancelling of answered call that waits to be established +- New Portuguese, Portuguese Brazil, Swedish, and Norwegian translations diff --git a/fastlane/metadata/android/en-US/changelogs/26.1.0.txt b/fastlane/metadata/android/en-US/changelogs/26.1.0.txt new file mode 100644 index 0000000..57b8491 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/26.1.0.txt @@ -0,0 +1,7 @@ +- Improved and fixed handling of message and call transfer events +- Toast registration failure it to any current activity +- Automatically capitalize message sentences +- Made AV1 video codec available again, but beware of bad performance +- Replaced deprecated local broadcasts with LiveData events +- Fixed some bugs related to handling of external call actions +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/27.0.0.txt b/fastlane/metadata/android/en-US/changelogs/27.0.0.txt new file mode 100644 index 0000000..9effa8a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/27.0.0.txt @@ -0,0 +1,5 @@ +- Added Telephony Provider account configuration item +- Added support for tel URI as Callee value and Contact URI +- Prompt user for Telephony Provider account if needed to make the call +- Show account's STUN configuration items only if needed +- Improved handling of CALL action from other applications diff --git a/fastlane/metadata/android/en-US/changelogs/27.0.1.txt b/fastlane/metadata/android/en-US/changelogs/27.0.1.txt new file mode 100644 index 0000000..9effa8a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/27.0.1.txt @@ -0,0 +1,5 @@ +- Added Telephony Provider account configuration item +- Added support for tel URI as Callee value and Contact URI +- Prompt user for Telephony Provider account if needed to make the call +- Show account's STUN configuration items only if needed +- Improved handling of CALL action from other applications diff --git a/fastlane/metadata/android/en-US/changelogs/27.1.0.txt b/fastlane/metadata/android/en-US/changelogs/27.1.0.txt new file mode 100644 index 0000000..f168a85 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/27.1.0.txt @@ -0,0 +1,5 @@ +- Added call on hold notice to video view +- Do not play busy or error sound when call is closed +- Improved reliability of Bluetooth usage +- Better handling of events from baresip core +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/28.0.0.txt b/fastlane/metadata/android/en-US/changelogs/28.0.0.txt new file mode 100644 index 0000000..6f75294 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/28.0.0.txt @@ -0,0 +1,5 @@ +- Added call timer chronometer to "Call to .../Call from ..." row +- Added possibility to use Android contacts +- Added "Show Android Contacts" setting to choose if Android contacts are shown when contacts button is touched +- Check that restore file has been created by baresip+ app +- New Swedish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/29.0.0.txt b/fastlane/metadata/android/en-US/changelogs/29.0.0.txt new file mode 100644 index 0000000..4dc057c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29.0.0.txt @@ -0,0 +1,3 @@ +- Replaced 'Show Android Contacts' setting with 'Contacts' setting that allows to choose if baresip contacts, Android contacts, or both are used +- Contact name <-> contact URI mapping fixes and improvements +- Avoid crash when Android forces baresip+ app restart diff --git a/fastlane/metadata/android/en-US/changelogs/29.1.0.txt b/fastlane/metadata/android/en-US/changelogs/29.1.0.txt new file mode 100644 index 0000000..a5745fc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29.1.0.txt @@ -0,0 +1 @@ +- Replaced AppCompat theme with MaterialComponents theme diff --git a/fastlane/metadata/android/en-US/changelogs/29.2.0.txt b/fastlane/metadata/android/en-US/changelogs/29.2.0.txt new file mode 100644 index 0000000..04f30ba --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29.2.0.txt @@ -0,0 +1,2 @@ +- Contact selection list now contains only those Android contacts that have exactly one URI +- New Swedish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/29.3.0.txt b/fastlane/metadata/android/en-US/changelogs/29.3.0.txt new file mode 100644 index 0000000..b404f47 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29.3.0.txt @@ -0,0 +1,3 @@ +- Fixed adding of new baresip contact +- When selecting a new default account, keep the order of the rest unchanged +- Improved handling of call auto-rejection diff --git a/fastlane/metadata/android/en-US/changelogs/3.0.0.txt b/fastlane/metadata/android/en-US/changelogs/3.0.0.txt new file mode 100644 index 0000000..abccec3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.0.0.txt @@ -0,0 +1,3 @@ +- Acoustic Echo Cancellation improvements. +- Moved audio settings from Settings to new activity. +- Added AEC Extented Filter setting. diff --git a/fastlane/metadata/android/en-US/changelogs/3.0.1.txt b/fastlane/metadata/android/en-US/changelogs/3.0.1.txt new file mode 100644 index 0000000..ccf75f1 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.0.1.txt @@ -0,0 +1,2 @@ +- Fixed returning to Audio Activity after pause. +- Fixed adding of audio modules in Audio settings. diff --git a/fastlane/metadata/android/en-US/changelogs/3.0.2.txt b/fastlane/metadata/android/en-US/changelogs/3.0.2.txt new file mode 100644 index 0000000..fa8328c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.0.2.txt @@ -0,0 +1 @@ +- Dialpad button related fixes and improvements. diff --git a/fastlane/metadata/android/en-US/changelogs/3.1.0.txt b/fastlane/metadata/android/en-US/changelogs/3.1.0.txt new file mode 100644 index 0000000..2b1a312 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.1.0.txt @@ -0,0 +1,2 @@ +- Added contributed RU strings. +- Upstream fix of possible crash. diff --git a/fastlane/metadata/android/en-US/changelogs/30.0.0.txt b/fastlane/metadata/android/en-US/changelogs/30.0.0.txt new file mode 100644 index 0000000..6c31977 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/30.0.0.txt @@ -0,0 +1,4 @@ +- Added initial support for attended call transfer +- In chat activity, replaced long click with short click +- Made message text selectable +- Use bold typeface in AoR spinner text when call is active diff --git a/fastlane/metadata/android/en-US/changelogs/30.0.2.txt b/fastlane/metadata/android/en-US/changelogs/30.0.2.txt new file mode 100644 index 0000000..6c31977 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/30.0.2.txt @@ -0,0 +1,4 @@ +- Added initial support for attended call transfer +- In chat activity, replaced long click with short click +- Made message text selectable +- Use bold typeface in AoR spinner text when call is active diff --git a/fastlane/metadata/android/en-US/changelogs/30.1.0.txt b/fastlane/metadata/android/en-US/changelogs/30.1.0.txt new file mode 100644 index 0000000..85f6d67 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/30.1.0.txt @@ -0,0 +1,2 @@ +- Fixed 32 bit armeabi-v7a architecture related bug +- Display Anonymous or Unknown if URI host is anonymous.invalid or unknown.invalid diff --git a/fastlane/metadata/android/en-US/changelogs/31.0.0.txt b/fastlane/metadata/android/en-US/changelogs/31.0.0.txt new file mode 100644 index 0000000..89fb9b8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/31.0.0.txt @@ -0,0 +1,4 @@ +- Show diverter if incoming call has been diverted +- Backup related fixes in older Android versions +- Improved URI to Contact matching +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/31.1.0.txt b/fastlane/metadata/android/en-US/changelogs/31.1.0.txt new file mode 100644 index 0000000..f31c1f7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/31.1.0.txt @@ -0,0 +1,4 @@ +- Due to Google's requirement, ask user's consent if Android contacts +is chosen in Settings +- Fixed possible crash when setting video codecs +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/31.2.0.txt b/fastlane/metadata/android/en-US/changelogs/31.2.0.txt new file mode 100644 index 0000000..60d76f7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/31.2.0.txt @@ -0,0 +1,2 @@ +- Fixed crash on ARMv7 devices when message was received +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/32.0.0.txt b/fastlane/metadata/android/en-US/changelogs/32.0.0.txt new file mode 100644 index 0000000..63a2821 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/32.0.0.txt @@ -0,0 +1,3 @@ +- Added Country Code account configuration option +- Audio related improvements from upstream +- New Portuguese (Brazil) and Finnish translations diff --git a/fastlane/metadata/android/en-US/changelogs/32.1.0.txt b/fastlane/metadata/android/en-US/changelogs/32.1.0.txt new file mode 100644 index 0000000..c312dd7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/32.1.0.txt @@ -0,0 +1,2 @@ +- Use elliptic curve cryptography based DTLS Key Establishment Protocol +- New Swedish translations diff --git a/fastlane/metadata/android/en-US/changelogs/32.1.1.txt b/fastlane/metadata/android/en-US/changelogs/32.1.1.txt new file mode 100644 index 0000000..160965f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/32.1.1.txt @@ -0,0 +1,3 @@ +- Use elliptic curve cryptography based DTLS Key Establishment Protocol +- Fixed backup of call history +- New Swedish translations diff --git a/fastlane/metadata/android/en-US/changelogs/32.1.2.txt b/fastlane/metadata/android/en-US/changelogs/32.1.2.txt new file mode 100644 index 0000000..b0df290 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/32.1.2.txt @@ -0,0 +1 @@ +Ring and notification tone related fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/33.0.0.txt b/fastlane/metadata/android/en-US/changelogs/33.0.0.txt new file mode 100644 index 0000000..f30e3bc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.0.0.txt @@ -0,0 +1,5 @@ +- Added possibility to turn on/off account's registration via + broadcast intents (see Wiki for details) +- Upstream addition of DNS query caching +- Upstream fix of ICE candidate priorities +- Increased Android target API level to 32 (Android 12L) diff --git a/fastlane/metadata/android/en-US/changelogs/33.0.1.txt b/fastlane/metadata/android/en-US/changelogs/33.0.1.txt new file mode 100644 index 0000000..7ce8362 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.0.1.txt @@ -0,0 +1 @@ +- Do not use DNS cache that may cause long delays to address resolution diff --git a/fastlane/metadata/android/en-US/changelogs/33.1.0.txt b/fastlane/metadata/android/en-US/changelogs/33.1.0.txt new file mode 100644 index 0000000..8ad74e2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.1.0.txt @@ -0,0 +1,2 @@ +- Long touch on current account enables or disables account's registration +- Added possibility to nickname accounts diff --git a/fastlane/metadata/android/en-US/changelogs/33.1.1.txt b/fastlane/metadata/android/en-US/changelogs/33.1.1.txt new file mode 100644 index 0000000..8ad74e2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.1.1.txt @@ -0,0 +1,2 @@ +- Long touch on current account enables or disables account's registration +- Added possibility to nickname accounts diff --git a/fastlane/metadata/android/en-US/changelogs/33.1.2.txt b/fastlane/metadata/android/en-US/changelogs/33.1.2.txt new file mode 100644 index 0000000..8ad74e2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.1.2.txt @@ -0,0 +1,2 @@ +- Long touch on current account enables or disables account's registration +- Added possibility to nickname accounts diff --git a/fastlane/metadata/android/en-US/changelogs/33.2.0.txt b/fastlane/metadata/android/en-US/changelogs/33.2.0.txt new file mode 100644 index 0000000..5ed1e26 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/33.2.0.txt @@ -0,0 +1,3 @@ +- If unregistering fails, update registration status to white anyway +- Set asked password when user agent is created +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/34.0.0.txt b/fastlane/metadata/android/en-US/changelogs/34.0.0.txt new file mode 100644 index 0000000..616916c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/34.0.0.txt @@ -0,0 +1,2 @@ +- Added support for reliable provisional response messages (RFC 3262) +- Added QUIT action to intent receiver diff --git a/fastlane/metadata/android/en-US/changelogs/34.0.1.txt b/fastlane/metadata/android/en-US/changelogs/34.0.1.txt new file mode 100644 index 0000000..bcedcb2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/34.0.1.txt @@ -0,0 +1 @@ +- Upstream fix of early audio (183 Session Progress) related bug diff --git a/fastlane/metadata/android/en-US/changelogs/34.1.0.txt b/fastlane/metadata/android/en-US/changelogs/34.1.0.txt new file mode 100644 index 0000000..3adb74f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/34.1.0.txt @@ -0,0 +1,2 @@ +- Added support for SIP UPDATE method (RFC 3311) +- Upstream fix of early audio (183 Session Progress) related bug diff --git a/fastlane/metadata/android/en-US/changelogs/34.2.0.txt b/fastlane/metadata/android/en-US/changelogs/34.2.0.txt new file mode 100644 index 0000000..fc26a13 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/34.2.0.txt @@ -0,0 +1,5 @@ +- Delay calling by 1 sec after call icon is touched because audio mode + does not immediately change to communication +- Video call and answer fixes and improvements +- Upstream fix of PRACK handling +- New Swedish translations diff --git a/fastlane/metadata/android/en-US/changelogs/35.0.0.txt b/fastlane/metadata/android/en-US/changelogs/35.0.0.txt new file mode 100644 index 0000000..0b45f75 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/35.0.0.txt @@ -0,0 +1,3 @@ +- Use lock icons for call security indication +- When calling Android contact, use contact URI matching the latest peer URI +- In About text, added link to app's raw privacy policy diff --git a/fastlane/metadata/android/en-US/changelogs/36.0.0.txt b/fastlane/metadata/android/en-US/changelogs/36.0.0.txt new file mode 100644 index 0000000..579e7dc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/36.0.0.txt @@ -0,0 +1,5 @@ +- Use lock icons for call security indication +- When calling Android contact, use the latest peer URI if Android contact has it +- Use ZRTPCPP lib for ZRTP media encryption (peers need to be re-verified) +- Enable DNS caching +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/36.1.0.txt b/fastlane/metadata/android/en-US/changelogs/36.1.0.txt new file mode 100644 index 0000000..33fabe0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/36.1.0.txt @@ -0,0 +1,2 @@ +- Added GSM codec +- Made window un-touchable and started 5 second timer at Quit or Restart diff --git a/fastlane/metadata/android/en-US/changelogs/36.2.0.txt b/fastlane/metadata/android/en-US/changelogs/36.2.0.txt new file mode 100644 index 0000000..0ff492a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/36.2.0.txt @@ -0,0 +1,2 @@ +- Disabled PRACK (RFC 3262) feature due to severe upstream bug +- New Portuguese (Brazil) and Russian translations diff --git a/fastlane/metadata/android/en-US/changelogs/37.0.0.txt b/fastlane/metadata/android/en-US/changelogs/37.0.0.txt new file mode 100644 index 0000000..86bd5da --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.0.0.txt @@ -0,0 +1,3 @@ +- Improved selection and ordering of account's audio codecs +- Due to problems, disabled DNS query cache +- Migration to Android API 33 diff --git a/fastlane/metadata/android/en-US/changelogs/37.0.1.txt b/fastlane/metadata/android/en-US/changelogs/37.0.1.txt new file mode 100644 index 0000000..d6467f0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.0.1.txt @@ -0,0 +1,4 @@ +- Fixed upstream bug that caused long Quit delay if Voicemail checking was + activated for an account +- Simplified Quit/Restart process and avoided crash at exit +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/37.1.0.txt b/fastlane/metadata/android/en-US/changelogs/37.1.0.txt new file mode 100644 index 0000000..87cc323 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.1.0.txt @@ -0,0 +1 @@ +- Toast reason when incoming call gets closed by baresip lib diff --git a/fastlane/metadata/android/en-US/changelogs/37.1.1.txt b/fastlane/metadata/android/en-US/changelogs/37.1.1.txt new file mode 100644 index 0000000..4f92fac --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.1.1.txt @@ -0,0 +1 @@ +- Fixed audio crackling when G722 codec is used diff --git a/fastlane/metadata/android/en-US/changelogs/37.1.2.txt b/fastlane/metadata/android/en-US/changelogs/37.1.2.txt new file mode 100644 index 0000000..97dc4fd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.1.2.txt @@ -0,0 +1 @@ +- Upstream fix of Media NAT Traversal (STUN/TURN/ICE) bug diff --git a/fastlane/metadata/android/en-US/changelogs/37.1.3.txt b/fastlane/metadata/android/en-US/changelogs/37.1.3.txt new file mode 100644 index 0000000..e98e659 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.1.3.txt @@ -0,0 +1 @@ +- Upstream fix of codec negotiation diff --git a/fastlane/metadata/android/en-US/changelogs/37.2.0.txt b/fastlane/metadata/android/en-US/changelogs/37.2.0.txt new file mode 100644 index 0000000..d538b8d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.2.0.txt @@ -0,0 +1,3 @@ +- Added "RTCP Multiplexing" account setting +- Distribute action buttons evenly at the bottom of main activity +- Use colorSecondaryDark as text view hint color diff --git a/fastlane/metadata/android/en-US/changelogs/37.3.1.txt b/fastlane/metadata/android/en-US/changelogs/37.3.1.txt new file mode 100644 index 0000000..c211e84 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.3.1.txt @@ -0,0 +1,4 @@ +- Added "RTCP Multiplexing" account setting +- Distributes action buttons evenly at the bottom of main activity +- Used colorSecondaryDark as text view hint color +- Show correct status notification when there is no registered UAs diff --git a/fastlane/metadata/android/en-US/changelogs/37.4.0.txt b/fastlane/metadata/android/en-US/changelogs/37.4.0.txt new file mode 100644 index 0000000..243f499 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/37.4.0.txt @@ -0,0 +1,2 @@ +- Fixed crash at network changes +- New Portuguese (Brazil)) translations diff --git a/fastlane/metadata/android/en-US/changelogs/38.0.0.txt b/fastlane/metadata/android/en-US/changelogs/38.0.0.txt new file mode 100644 index 0000000..513762e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/38.0.0.txt @@ -0,0 +1,3 @@ +- Ask POST_NOTIFICATIONS permission on Android 13+ devices +- Use gray Microphone icon when microphone is not turned off +- Use "Busy Here" response message when call is rejected diff --git a/fastlane/metadata/android/en-US/changelogs/38.1.0.txt b/fastlane/metadata/android/en-US/changelogs/38.1.0.txt new file mode 100644 index 0000000..4db9356 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/38.1.0.txt @@ -0,0 +1,3 @@ +- Quit/Restart process improvements +- Speakerphone and call related fixes and enhancements for API 31+ +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/38.1.1.txt b/fastlane/metadata/android/en-US/changelogs/38.1.1.txt new file mode 100644 index 0000000..47c79b8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/38.1.1.txt @@ -0,0 +1 @@ +- More communication device related fixes and enhancements diff --git a/fastlane/metadata/android/en-US/changelogs/38.1.2.txt b/fastlane/metadata/android/en-US/changelogs/38.1.2.txt new file mode 100644 index 0000000..3f9687b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/38.1.2.txt @@ -0,0 +1 @@ +- Fixed WiFi hotspot interface detection on some devices diff --git a/fastlane/metadata/android/en-US/changelogs/38.2.0.txt b/fastlane/metadata/android/en-US/changelogs/38.2.0.txt new file mode 100644 index 0000000..68c0591 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/38.2.0.txt @@ -0,0 +1,2 @@ +- Audio routing related fixed for Android 12+ devices +- Use secondary dark color in codec name when in dark mode diff --git a/fastlane/metadata/android/en-US/changelogs/39.0.0.txt b/fastlane/metadata/android/en-US/changelogs/39.0.0.txt new file mode 100644 index 0000000..e5d5582 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/39.0.0.txt @@ -0,0 +1,4 @@ +- Vibrate and vibrate while ringing according to Sound and vibration settings +- Bluetooth fixes and improvements for Android 12+ devices +- Show permissions rationale when baresip is started the first time +- New Swedish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/39.1.0.txt b/fastlane/metadata/android/en-US/changelogs/39.1.0.txt new file mode 100644 index 0000000..0ada96a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/39.1.0.txt @@ -0,0 +1,7 @@ +- Added registration interval account setting +- Use Telephony Provider also when sending messages to tel URIs +- Now also ( and ) characters are accepted in telephone number +- Fixed posting notifications in later Android versions +- Improved permission handling in later Android versions +- New Spanish, Portuguese (Brazil)), and Swedish translations +- Still contains Android contact related bugs diff --git a/fastlane/metadata/android/en-US/changelogs/39.2.0.txt b/fastlane/metadata/android/en-US/changelogs/39.2.0.txt new file mode 100644 index 0000000..9f8723f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/39.2.0.txt @@ -0,0 +1,2 @@ +- Several contact related fixes and improvements +- New Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/4.0.0.txt b/fastlane/metadata/android/en-US/changelogs/4.0.0.txt new file mode 100644 index 0000000..22c7458 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.0.0.txt @@ -0,0 +1,2 @@ +- Added initial support for baresip originated call transfer. +- Added new language Portuguese from Weblate. diff --git a/fastlane/metadata/android/en-US/changelogs/4.1.0.txt b/fastlane/metadata/android/en-US/changelogs/4.1.0.txt new file mode 100644 index 0000000..7217cb8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.1.0.txt @@ -0,0 +1,4 @@ +- Added possibility to re-register selected account by swipe down gesture. +- Automatically focus and show soft keyboard when passwords or transfer +destination is asked. +- Various string related fixes. diff --git a/fastlane/metadata/android/en-US/changelogs/4.2.0.txt b/fastlane/metadata/android/en-US/changelogs/4.2.0.txt new file mode 100644 index 0000000..1bb95b4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.2.0.txt @@ -0,0 +1,3 @@ +- Added AMR-WB (Adaptive Multi-Rate Wideband) speech codec. +- Added Licenses section to About text. +- New Portuguese (Brazil) translations. diff --git a/fastlane/metadata/android/en-US/changelogs/40.0.0.txt b/fastlane/metadata/android/en-US/changelogs/40.0.0.txt new file mode 100644 index 0000000..fe81075 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40.0.0.txt @@ -0,0 +1,5 @@ +- Added support for selecting from multiple tel:/sip: URIs in Android + contacts +- Active account now has to have Telephony Provider configured in order + to make call or send message to tel: URI +- New Portuguese (Brazil), Spanish, Swedish, and Finnish translations diff --git a/fastlane/metadata/android/en-US/changelogs/40.1.0.txt b/fastlane/metadata/android/en-US/changelogs/40.1.0.txt new file mode 100644 index 0000000..683cd44 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40.1.0.txt @@ -0,0 +1,5 @@ +- Added preliminary support for call recording +- Many fixes related to asking of passwords +- Prevent outside dismiss of some dialogs +- New Spanish, Portuguese, and Brazil translations +- Not anymore available in Google Play Store diff --git a/fastlane/metadata/android/en-US/changelogs/40.2.0.txt b/fastlane/metadata/android/en-US/changelogs/40.2.0.txt new file mode 100644 index 0000000..4a1d49b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40.2.0.txt @@ -0,0 +1,3 @@ +- Added possibility to stop recording playback +- Added adaptive launcher icon +- New Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/41.0.0.txt b/fastlane/metadata/android/en-US/changelogs/41.0.0.txt new file mode 100644 index 0000000..5f9bce5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.0.0.txt @@ -0,0 +1,4 @@ +- Added setting to choose IP address family +- Added monochrome launcher icon +- Removed icon and text from status notification when Android version is 13+ +- New Spanish, Russian, Portuguese (Brazil), and Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/41.1.0.txt b/fastlane/metadata/android/en-US/changelogs/41.1.0.txt new file mode 100644 index 0000000..9c9686c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.1.0.txt @@ -0,0 +1,2 @@ +- Launcher icon improvements +- New Russian translations diff --git a/fastlane/metadata/android/en-US/changelogs/41.1.1.txt b/fastlane/metadata/android/en-US/changelogs/41.1.1.txt new file mode 100644 index 0000000..e27349f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.1.1.txt @@ -0,0 +1,4 @@ +- Launcher icon improvements +- Do not try to register new account if Register has not been checked +- Added Registration Interval help text +- New Russian translations diff --git a/fastlane/metadata/android/en-US/changelogs/41.1.2.txt b/fastlane/metadata/android/en-US/changelogs/41.1.2.txt new file mode 100644 index 0000000..b364f24 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.1.2.txt @@ -0,0 +1 @@ +- Upstream increase of max size of account string diff --git a/fastlane/metadata/android/en-US/changelogs/41.2.0.txt b/fastlane/metadata/android/en-US/changelogs/41.2.0.txt new file mode 100644 index 0000000..92e8600 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.2.0.txt @@ -0,0 +1,2 @@ +- Registration status notification improvements +- Replaced several icon images with material design vector drawables diff --git a/fastlane/metadata/android/en-US/changelogs/41.2.2.txt b/fastlane/metadata/android/en-US/changelogs/41.2.2.txt new file mode 100644 index 0000000..7ab82d0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.2.2.txt @@ -0,0 +1 @@ +- Fixed several audio focus/routing/volume control issues diff --git a/fastlane/metadata/android/en-US/changelogs/41.2.3.txt b/fastlane/metadata/android/en-US/changelogs/41.2.3.txt new file mode 100644 index 0000000..cc4cff4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.2.3.txt @@ -0,0 +1,2 @@ +- Simplified playing of ringtone +- New Portuguese translations diff --git a/fastlane/metadata/android/en-US/changelogs/41.2.4.txt b/fastlane/metadata/android/en-US/changelogs/41.2.4.txt new file mode 100644 index 0000000..94bc99c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.2.4.txt @@ -0,0 +1 @@ +- In Android versions below 12, add 1.5 sec delay before making a call in order to avoid missing audio from callee diff --git a/fastlane/metadata/android/en-US/changelogs/41.3.0.txt b/fastlane/metadata/android/en-US/changelogs/41.3.0.txt new file mode 100644 index 0000000..3c839a7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.3.0.txt @@ -0,0 +1,2 @@ +- Added 'Audio Delay' Audio Setting +- Improved Bluetooth headset connected test diff --git a/fastlane/metadata/android/en-US/changelogs/41.4.0.txt b/fastlane/metadata/android/en-US/changelogs/41.4.0.txt new file mode 100644 index 0000000..5829780 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.4.0.txt @@ -0,0 +1,3 @@ +- Play busy tone when "486 Busy Here" or "603 Decline" response is received +- Avoid unnecessary re-registration when network capabilities change +- Simplified abandoning of audio focus diff --git a/fastlane/metadata/android/en-US/changelogs/42.0.0.txt b/fastlane/metadata/android/en-US/changelogs/42.0.0.txt new file mode 100644 index 0000000..a170cc2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.0.0.txt @@ -0,0 +1,3 @@ +- Prevent starting of baresip service more than once +- Color improvements +- New Spanish, Russian, Portuguese (Brazil), Swedish, and Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/42.0.1.txt b/fastlane/metadata/android/en-US/changelogs/42.0.1.txt new file mode 100644 index 0000000..bdbcaf2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.0.1.txt @@ -0,0 +1,2 @@ +- Upstream fix of call remaining in active list even when closed +- Better handling of WiFi hotspot enable/disable events diff --git a/fastlane/metadata/android/en-US/changelogs/42.0.2.txt b/fastlane/metadata/android/en-US/changelogs/42.0.2.txt new file mode 100644 index 0000000..191bdd3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.0.2.txt @@ -0,0 +1,3 @@ +- Upstream fix of call remaining in active list even when closed +- Better handling of WiFi hotspot enable/disable events +- Fixed DNS server configuration diff --git a/fastlane/metadata/android/en-US/changelogs/42.0.3.txt b/fastlane/metadata/android/en-US/changelogs/42.0.3.txt new file mode 100644 index 0000000..6baea29 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.0.3.txt @@ -0,0 +1,4 @@ +- Upstream fix of call remaining in active list even when closed +- Better handling of WiFi hotspot enable/disable events +- Fixed DNS server configuration +- Improved alert dialog text button dark theme color contrast diff --git a/fastlane/metadata/android/en-US/changelogs/42.1.0.txt b/fastlane/metadata/android/en-US/changelogs/42.1.0.txt new file mode 100644 index 0000000..231f26e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.1.0.txt @@ -0,0 +1,2 @@ +- Dark theme color improvements +- Improved call auto-rejection diff --git a/fastlane/metadata/android/en-US/changelogs/42.2.0.txt b/fastlane/metadata/android/en-US/changelogs/42.2.0.txt new file mode 100644 index 0000000..b31f4d2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.2.0.txt @@ -0,0 +1,2 @@ +- In addition to CALL, handle also DIAL actions from other applications +- New Spanish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/43.0.0.txt b/fastlane/metadata/android/en-US/changelogs/43.0.0.txt new file mode 100644 index 0000000..3726d3c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/43.0.0.txt @@ -0,0 +1,6 @@ +- Allow selecting baresip as the default Phone app (do not select if also using telephony services) +- Support both CALL and DIAL actions from other apps +- Fixed bug in setting account's Telephony Provider +- In messages, support also other character sets than UTF-8 +- Use default values for audio_buffer and jitter_buffer_delay +- New Czech and Russian translations diff --git a/fastlane/metadata/android/en-US/changelogs/43.1.0.txt b/fastlane/metadata/android/en-US/changelogs/43.1.0.txt new file mode 100644 index 0000000..7cc4888 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/43.1.0.txt @@ -0,0 +1,5 @@ +- In call history, show missed (not rejected) calls using yellow up/down arrows +- Use audio_buffer size 20-300 (ms) and jitter_buffer delay 0-20 (frames) +- Avoid potential getNetworkInterfaces() related crash +- Simplified About text and added "more information" link to Wiki +- New Spanish, Portuguese (Brazil), and Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/43.2.0.txt b/fastlane/metadata/android/en-US/changelogs/43.2.0.txt new file mode 100644 index 0000000..881f348 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/43.2.0.txt @@ -0,0 +1,4 @@ +- Added separate jitter buffer delays for audio and video +- In call info, show packets, lost, and jitter as ?/? if info is not available +- Upstream fix that now allows escaped characters in account's part +- New Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/43.3.0.txt b/fastlane/metadata/android/en-US/changelogs/43.3.0.txt new file mode 100644 index 0000000..5fa9453 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/43.3.0.txt @@ -0,0 +1,3 @@ +- Fixed jitter buffer settings that prevented hearing of incoming audio +- Terminate call if no media has been received within 60 seconds +- New Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/44.0.0.txt b/fastlane/metadata/android/en-US/changelogs/44.0.0.txt new file mode 100644 index 0000000..33f7e59 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/44.0.0.txt @@ -0,0 +1,4 @@ +- Major rewrite of settings implementation by separating static and dynamic settings +- Revert back to original jitter buffer delays now when libre bug is fixed +- Configuration cannot be reloaded on the fly when opus settings are changed +- New Spanish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/44.1.0.txt b/fastlane/metadata/android/en-US/changelogs/44.1.0.txt new file mode 100644 index 0000000..56376c3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/44.1.0.txt @@ -0,0 +1,3 @@ +- Added more vertical padding to account configuration +- Hack to fix wrongly escaped URI when call or dial request comes from outside +- New Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/44.1.1.txt b/fastlane/metadata/android/en-US/changelogs/44.1.1.txt new file mode 100644 index 0000000..c129db2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/44.1.1.txt @@ -0,0 +1,2 @@ +- Fixed resetting of transports when networks are added or removed +- Fixed typo in Default Phone App help text diff --git a/fastlane/metadata/android/en-US/changelogs/44.2.0.txt b/fastlane/metadata/android/en-US/changelogs/44.2.0.txt new file mode 100644 index 0000000..03466f9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/44.2.0.txt @@ -0,0 +1,4 @@ +- Added Redirect Mode account setting to choose if call redirect requests + (3xx responses) are be followed automatically or if confirmation needs + to be asked +- New Spanish and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/45.0.0 b/fastlane/metadata/android/en-US/changelogs/45.0.0 new file mode 100644 index 0000000..211ddbd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/45.0.0 @@ -0,0 +1,5 @@ +- Added Reliable Provisional Responses Account Configuration option +- Added Tone Country Audio Configuration option (credits to Robert Averbeck for providing the tone files) +- Fixed AudioManager related SDK version test +- New Spanish, Portuguese and Portuguese (Brazil) translations +- Upstream bug fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/5.0.0.txt b/fastlane/metadata/android/en-US/changelogs/5.0.0.txt new file mode 100644 index 0000000..e14300d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.0.0.txt @@ -0,0 +1 @@ +- Added Websocket transport for SIP (RFC 7118). diff --git a/fastlane/metadata/android/en-US/changelogs/5.1.0.txt b/fastlane/metadata/android/en-US/changelogs/5.1.0.txt new file mode 100644 index 0000000..67c27fa --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.1.0.txt @@ -0,0 +1,2 @@ +- New Portuguese (Brazil) and Russian translations. +- Update icons after resuming to the application. diff --git a/fastlane/metadata/android/en-US/changelogs/6.0.0.txt b/fastlane/metadata/android/en-US/changelogs/6.0.0.txt new file mode 100644 index 0000000..6eb4622 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.0.0.txt @@ -0,0 +1,7 @@ +- Added visibility toggle to Account's Authentication and STUN/TURN Passwords +- Prefer VPN interface (if any) when choosing from available network interfaces +- Added note to About text about interface preference order +- Improved configuration of Account's Media NAT Traversal +- Default to Google's STUN server also when Media NAT Traversal protocol is ICE +- Increased maximum lengths of Account's Authentication and STUN/TURN Usernames and Display Name to 64 characters +- Added/updated FR, NO, and FI string translations diff --git a/fastlane/metadata/android/en-US/changelogs/6.1.0.txt b/fastlane/metadata/android/en-US/changelogs/6.1.0.txt new file mode 100644 index 0000000..bcb5699 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.1.0.txt @@ -0,0 +1,4 @@ +- Added G.729 audio codec. +- Added a Setting to turn on/off tracing of SIP messages to logcat. +- STUN/TURN Server URI schemes 'stuns' and 'turns' are not currently supported. +- New Portuguese (Brazil) string translations. diff --git a/fastlane/metadata/android/en-US/changelogs/7.0.0.txt b/fastlane/metadata/android/en-US/changelogs/7.0.0.txt new file mode 100644 index 0000000..a75d891 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/7.0.0.txt @@ -0,0 +1,4 @@ +- Added video call and video answer capability +- When calling from Contacts and Call History, let user choose between + voice and video call +- Improved detection of VPN connectivity changes diff --git a/fastlane/metadata/android/en-US/changelogs/7.0.1.txt b/fastlane/metadata/android/en-US/changelogs/7.0.1.txt new file mode 100644 index 0000000..90c84e2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/7.0.1.txt @@ -0,0 +1 @@ +Fixed handling of video direction changes diff --git a/fastlane/metadata/android/en-US/changelogs/8.0.0.txt b/fastlane/metadata/android/en-US/changelogs/8.0.0.txt new file mode 100644 index 0000000..f0f56b8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.0.0.txt @@ -0,0 +1,7 @@ +- Several video call related bug fixes (some may still remain) +- Video request now tells direction of the request +- Avoid volume control key related crash +- Automatically show DTMF soft keyboard when non-video call is connected +- Use adaptive jitter buffer +- Volume control keys now control ring or media volume +- New RU translations diff --git a/fastlane/metadata/android/en-US/changelogs/8.1.0.txt b/fastlane/metadata/android/en-US/changelogs/8.1.0.txt new file mode 100644 index 0000000..7778dd5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.1.0.txt @@ -0,0 +1,4 @@ +- Turn speakerphone on automatically when video call is established +- Fixed crash related to closing of video stream +- Video negotiation fixes and improvements +- Portuguese (Brazil) translations from Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/8.2.0.txt b/fastlane/metadata/android/en-US/changelogs/8.2.0.txt new file mode 100644 index 0000000..7c304f3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.2.0.txt @@ -0,0 +1,3 @@ +- Do not default STUN/TURN server Username/Password to Authentication Username/Password +- Replaced baresip launcher and notification icons with baresip+ ones +- Avoided more video related crashes diff --git a/fastlane/metadata/android/en-US/changelogs/9.0.0.txt b/fastlane/metadata/android/en-US/changelogs/9.0.0.txt new file mode 100644 index 0000000..d569bda --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/9.0.0.txt @@ -0,0 +1,2 @@ +- Improved incoming call notification. +- Added missed call notification. diff --git a/fastlane/metadata/android/en-US/changelogs/v46.0.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.0.0.txt new file mode 100644 index 0000000..bbfce68 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.0.0.txt @@ -0,0 +1,4 @@ +- Now targeting API level 34 (Android 14) +- Added support for Codec2 audio codec +- Recording of next call is not cleared when call is closed +- Included also Dark Theme setting in backup file diff --git a/fastlane/metadata/android/en-US/changelogs/v46.0.1.txt b/fastlane/metadata/android/en-US/changelogs/v46.0.1.txt new file mode 100644 index 0000000..bbfce68 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.0.1.txt @@ -0,0 +1,4 @@ +- Now targeting API level 34 (Android 14) +- Added support for Codec2 audio codec +- Recording of next call is not cleared when call is closed +- Included also Dark Theme setting in backup file diff --git a/fastlane/metadata/android/en-US/changelogs/v46.0.2.txt b/fastlane/metadata/android/en-US/changelogs/v46.0.2.txt new file mode 100644 index 0000000..bbfce68 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.0.2.txt @@ -0,0 +1,4 @@ +- Now targeting API level 34 (Android 14) +- Added support for Codec2 audio codec +- Recording of next call is not cleared when call is closed +- Included also Dark Theme setting in backup file diff --git a/fastlane/metadata/android/en-US/changelogs/v46.1.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.1.0.txt new file mode 100644 index 0000000..aeec5e8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.1.0.txt @@ -0,0 +1,6 @@ +- Now targeting API level 34 (Android 14) +- Added support for Codec2 audio codec +- Recording of next call is not cleared when call is closed +- Included also Dark Theme setting in backup file +- Do not automatically turn on speaker when video call is established +- Upstream fix of re-INVITE (call hold/resume) diff --git a/fastlane/metadata/android/en-US/changelogs/v46.1.1.txt b/fastlane/metadata/android/en-US/changelogs/v46.1.1.txt new file mode 100644 index 0000000..87ae87b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.1.1.txt @@ -0,0 +1 @@ +- Upstream fix of crash related to handling of OPTIONS request diff --git a/fastlane/metadata/android/en-US/changelogs/v46.2.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.2.0.txt new file mode 100644 index 0000000..61e7be2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.2.0.txt @@ -0,0 +1 @@ +- Added support for favorite (starred) contacts diff --git a/fastlane/metadata/android/en-US/changelogs/v46.3.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.3.0.txt new file mode 100644 index 0000000..b97bbd2 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.3.0.txt @@ -0,0 +1,2 @@ +- Start Automatically setting now starts the app rather than notifying about it +- New Spanish, Portuguese (Brazil), and Russian translations diff --git a/fastlane/metadata/android/en-US/changelogs/v46.4.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.4.0.txt new file mode 100644 index 0000000..f773f4d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.4.0.txt @@ -0,0 +1,2 @@ +- Minor upstream bug fixes +- New German translations diff --git a/fastlane/metadata/android/en-US/changelogs/v46.5.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.5.0.txt new file mode 100644 index 0000000..44d9161 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.5.0.txt @@ -0,0 +1,2 @@ +- Use thread RTP receive mode +- New Czech and Portuguese translations diff --git a/fastlane/metadata/android/en-US/changelogs/v46.6.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.6.0.txt new file mode 100644 index 0000000..754d94d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.6.0.txt @@ -0,0 +1,2 @@ +- Automatically use CA certificates provided by Android OS +- New Bulgarian, Japanese, Spanish, and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/v46.7.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.7.0.txt new file mode 100644 index 0000000..f0339a9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.7.0.txt @@ -0,0 +1,4 @@ +- Upstream revert that made audio only calls work again +- Added baresip, CPU, and Android information in User-Agent header +- Time of recorded call is now shown in accent color +- Increased video jitter buffer_delay from 50 to 100 diff --git a/fastlane/metadata/android/en-US/changelogs/v46.8.0.txt b/fastlane/metadata/android/en-US/changelogs/v46.8.0.txt new file mode 100644 index 0000000..01e4abb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v46.8.0.txt @@ -0,0 +1,2 @@ +- Upstream fix of bug that may cause baresip app to stop responding +- New Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.0.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.0.0.txt new file mode 100644 index 0000000..32e2d76 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.0.0.txt @@ -0,0 +1,3 @@ +- Use Android 14 compatible backup file format. Backup again before upgrading Android to version 14. +- Improved thread handling +- New German translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.1.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.1.0.txt new file mode 100644 index 0000000..ea7bca6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.1.0.txt @@ -0,0 +1,3 @@ +- Fixed deleting of avatar file when avatar is removed from contact or when contact with avatar is removed +- Fixed saving of account's DTMF Mode +- New Spanish, Portuguese, and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.2.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.2.0.txt new file mode 100644 index 0000000..f420626 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.2.0.txt @@ -0,0 +1,4 @@ +- Added 'In-band RTP or SIP INFO' account DTMF Mode +- Added Speaker Phone audio setting +- Fixed loading of baresip lib +- New German, Portuguese (Brazil), and Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.3.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.3.0.txt new file mode 100644 index 0000000..1d90993 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.3.0.txt @@ -0,0 +1,2 @@ +- Added 'Video Frames Per Second' setting +- Show device compatible 'Video Frame Size' setting values diff --git a/fastlane/metadata/android/en-US/changelogs/v47.4.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.4.0.txt new file mode 100644 index 0000000..e3858f9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.4.0.txt @@ -0,0 +1,4 @@ +- Added support for SHA-256 digest authentication +- Removed support for H265 video codec (did not work properly) +- Verify Server Certificates, Video Frame Size, and Video Frames per Second settings can now be changed without restart +- New Czech, German, Spanish, and Portuguese (Brazil) translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.5.0.txt b/fastlane/metadata/android/en-US/changelogs/v47.5.0.txt new file mode 100644 index 0000000..fdec226 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.5.0.txt @@ -0,0 +1,3 @@ +- Properly handle transfer request when original call is already closed +- Fixed handling of stateless TLS SIP requests +- New Portuguese, Portuguese (Brazil), Spanish, French, Russian, English, Finnish, Swedish, German, and Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.5.1.txt b/fastlane/metadata/android/en-US/changelogs/v47.5.1.txt new file mode 100644 index 0000000..ff5ba74 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.5.1.txt @@ -0,0 +1,2 @@ +- SRTP related security fix from upstream +- New Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/v47.5.2.txt b/fastlane/metadata/android/en-US/changelogs/v47.5.2.txt new file mode 100644 index 0000000..258d25b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v47.5.2.txt @@ -0,0 +1,4 @@ +- Fixed call recording +- Do not send '180 Ringing' response if incoming call is auto-rejected +- Remove also %20 (space) from call tel URI +- New German translations diff --git a/fastlane/metadata/android/en-US/changelogs/v48.0.0.txt b/fastlane/metadata/android/en-US/changelogs/v48.0.0.txt new file mode 100644 index 0000000..c887c5c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v48.0.0.txt @@ -0,0 +1,6 @@ +- Added User Agent setting that can be used to set custom SIP request/response User-Agent header field value +- Allow , and # characters in tel number (for example when calling Teams) +- Use accent color instead of bold in Call History time column if a call in that call row has been recorded +- Do not include uuid in backup file (prevents having many baresip UAs with same identity) +- By default, include date and time in backup file name +- New Spanish and Portuguese (Brazil) translations \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/v48.0.1.txt b/fastlane/metadata/android/en-US/changelogs/v48.0.1.txt new file mode 100644 index 0000000..508f361 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v48.0.1.txt @@ -0,0 +1,5 @@ +- If DTMF is enabled, keep focus at screen orientation changes +- Changed 'The Test Call' contact's URI to 'sip:thetestcall@sip2sip.info' +- When showing URI in friendly form, show URI parameters except ';transport=udp' +- Removed '.bs' suffix from backup file name +- New translations (Russian) diff --git a/fastlane/metadata/android/en-US/changelogs/v48.1.0.txt b/fastlane/metadata/android/en-US/changelogs/v48.1.0.txt new file mode 100644 index 0000000..c14ff33 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v48.1.0.txt @@ -0,0 +1,3 @@ +- Added Microphone Gain audio setting +- Added Logcat main menu item +- New Czech, Norwegian (Bokml), German, Portuguese (Brazil), and Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/v49.0.0.txt b/fastlane/metadata/android/en-US/changelogs/v49.0.0.txt new file mode 100644 index 0000000..8674e76 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v49.0.0.txt @@ -0,0 +1,4 @@ +- If available, use Acoustic Echo Canceler, Automatic Gain Control, and + Noise Suppressor provided by the device + +- Android 9 (API level 28) is now the minimum supported version diff --git a/fastlane/metadata/android/en-US/changelogs/v49.1.0.txt b/fastlane/metadata/android/en-US/changelogs/v49.1.0.txt new file mode 100644 index 0000000..43db6a6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v49.1.0.txt @@ -0,0 +1,2 @@ +- Use Video Frame Size based selfview size +- New Bulgarian, Japanese, Portuguese (Brazil), and Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/v49.2.0.txt b/fastlane/metadata/android/en-US/changelogs/v49.2.0.txt new file mode 100644 index 0000000..c0e6c49 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v49.2.0.txt @@ -0,0 +1,3 @@ +- Opt out edge-to-edge enforcement for Android 15 compatibility +- Avoid crashes in BootCompletedReceiver and when checking outbound proxy URI +- New Finnish, Bulgarian, Japanese, Portuguese (Brazil), Spanish, Czech, and Polish translations diff --git a/fastlane/metadata/android/en-US/changelogs/v50.0.0.txt b/fastlane/metadata/android/en-US/changelogs/v50.0.0.txt new file mode 100644 index 0000000..2d27c61 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.0.0.txt @@ -0,0 +1,4 @@ +- Added support for edge-to-edge content display for Android 15 compatibility +- Rounded alert dialog corners +- Don't automatically show soft keyboard when configuration changes +- Added new language (Tamil) diff --git a/fastlane/metadata/android/en-US/changelogs/v50.1.0.txt b/fastlane/metadata/android/en-US/changelogs/v50.1.0.txt new file mode 100644 index 0000000..e080187 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.1.0.txt @@ -0,0 +1,4 @@ +- Prevent soft keyboard from hiding input text field in some activities +- Fixed telephone-event payload type number +- Prevent crash when backup file is large +- New translations (German) diff --git a/fastlane/metadata/android/en-US/changelogs/v50.2.0.txt b/fastlane/metadata/android/en-US/changelogs/v50.2.0.txt new file mode 100644 index 0000000..e08032d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.2.0.txt @@ -0,0 +1,3 @@ + Apply Acoustic Echo Cancellation only to recorder session +- Do not backup recordings +- New Romanian, Portuguese (Brazil), German and Czech translations diff --git a/fastlane/metadata/android/en-US/changelogs/v50.2.1.txt b/fastlane/metadata/android/en-US/changelogs/v50.2.1.txt new file mode 100644 index 0000000..5dd96bb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.2.1.txt @@ -0,0 +1 @@ +- Improved setting of audio effects diff --git a/fastlane/metadata/android/en-US/changelogs/v50.2.2.txt b/fastlane/metadata/android/en-US/changelogs/v50.2.2.txt new file mode 100644 index 0000000..3faf7ef --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.2.2.txt @@ -0,0 +1 @@ +- Reinstalled player AEC diff --git a/fastlane/metadata/android/en-US/changelogs/v50.2.3.txt b/fastlane/metadata/android/en-US/changelogs/v50.2.3.txt new file mode 100644 index 0000000..fb76d3b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/v50.2.3.txt @@ -0,0 +1 @@ +- Allow use of software AEC even when hardware one would be available diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..6ddc0ce --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,10 @@ +This is a baresip based +SIP User Agent application for Android. + +Currently baresip+ app supports voice/video calling, text messaging, voicemail Message Waiting Indication, as well as blind and attended call transfers. Voice can be codec with Opus, AMR, Codec2, G.729, G.726, G.722, G.722.1, and PCMU/PCMA, codecs. Video can be coded with VP9, VP8, H.265, H.264, and AV1 codecs. Security is achieved via TLS or WSS signalling transport and ZRTP or (DTLS) SRTP media encapsulation. + +Motivated by need for a secure SIP user agent for Android that does not depend on third party push notification services. + +This application can be installed on Android devices running Android version 7.0 or later. Video calling requires that Android device supports Camera 2 API at hardware support level LEVEL_3. If you don't need video calling, you can instead of this application install its sister application baresip. + +Source code is available at GitHub, where also issues can be reported. diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000..e03fd1f Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot1.png new file mode 100644 index 0000000..d754bf5 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot1.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot2.png new file mode 100644 index 0000000..6f8d20c Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot2.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot3.png new file mode 100644 index 0000000..35454d3 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot3.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot4.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot4.png new file mode 100644 index 0000000..da49d67 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot4.png differ diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 0000000..981bddf --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +VoIP User Agent app for Android based on baresip SIP library diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..d15bcef --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +baresip+ diff --git a/fastlane/metadata/android/fi-FI/changelogs/10.0.0.txt b/fastlane/metadata/android/fi-FI/changelogs/10.0.0.txt new file mode 100644 index 0000000..d030ce6 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/10.0.0.txt @@ -0,0 +1 @@ +- Jatka Baresip keskeytettyyn toimintaan päätoiminnan sijaan. diff --git a/fastlane/metadata/android/fi-FI/changelogs/10.1.0.txt b/fastlane/metadata/android/fi-FI/changelogs/10.1.0.txt new file mode 100644 index 0000000..d45ff80 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/10.1.0.txt @@ -0,0 +1,2 @@ +- Lisätty tuki G722-koodekille. +- korjattu tilien tallentaminen. diff --git a/fastlane/metadata/android/fi-FI/changelogs/10.2.0.txt b/fastlane/metadata/android/fi-FI/changelogs/10.2.0.txt new file mode 100644 index 0000000..8d6cf27 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/10.2.0.txt @@ -0,0 +1,2 @@ +- Lisätty tuki G.726-koodekille. +- Parannettu koodekin oletusetusijajärjestys. diff --git a/fastlane/metadata/android/fi-FI/changelogs/10.3.0.txt b/fastlane/metadata/android/fi-FI/changelogs/10.3.0.txt new file mode 100644 index 0000000..cd3e40a --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/10.3.0.txt @@ -0,0 +1,4 @@ +- Lisätty Puheluhistoria-valikko, joka mahdollistaa tilin puheluhistorian poistamisen, +poistamisen käytöstä ja käyttöönoton. +- Lisätty espanjankieliset merkkijonot (hyvityksiä Javier Falbolle). +- Baresipin automaattinen käynnistys on nyt oletuksena uusissa asennuksissa. diff --git a/fastlane/metadata/android/fi-FI/changelogs/10.4.0.txt b/fastlane/metadata/android/fi-FI/changelogs/10.4.0.txt new file mode 100644 index 0000000..0c3d803 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/10.4.0.txt @@ -0,0 +1,6 @@ +- Salli tilin pikakeskusteluhistorian poistaminen pikakeskustelutoimintavalikkokohdan kautta. +- Pyydä vahvistus ennen pikakeskustelun ja puheluhistorian poistamista. +- Parannettu päätoimintojen puhepostin, pikakeskustelun ja puhelukuvakkeiden päivitys. +- Siirry suoraan Tilitoimintaan, kun baresip käynnistetään ilman tilejä. +- Vaihdettu puhelun hyväksymis- ja hylkäämispainikkeiden paikkoja. +- Älä salli lähtevän puhelun lopettamista ennen kuin soittoyritys on alkanut. diff --git a/fastlane/metadata/android/fi-FI/changelogs/11.0.0.txt b/fastlane/metadata/android/fi-FI/changelogs/11.0.0.txt new file mode 100644 index 0000000..6487c96 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/11.0.0.txt @@ -0,0 +1,7 @@ +- Tilien ja yhteystietojen vienti ja tuonti korvattu kaikkien sovellustietojen +varmuuskopioinnilla ja palautuksella. +- Parannettu suojaus estämällä Android-pohjaisten sovellusten varmuuskopiointi +ja sovelluksen asentaminen ulkoiseen tallennustilaan. +- Kun tili poistetaan, poista myös tilin puhelu- ja pikakeskusteluhistoria. +- Korjattu viestien ja pikakeskustelujen poistaminen. +- Pienet käyttöliittymä- ja merkkijonoparannukset. diff --git a/fastlane/metadata/android/fi-FI/changelogs/11.1.0.txt b/fastlane/metadata/android/fi-FI/changelogs/11.1.0.txt new file mode 100644 index 0000000..b48625a --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/11.1.0.txt @@ -0,0 +1,6 @@ +- Lisätty 'Bind Address' -kokoonpanomuuttuja, jonka avulla voit valita, mitä +verkkoliitäntää tai IP-osoitetta Baresip käyttää. +- Päivitä aina tilien tilakuvake, kun palaat päätoimintaan. +- Korjattu kaatuminen, kun palataan aiemmin tuhoutuneeseen päätoimintaan. +- Näytä aktiiviset saapuvat puhelut oikein, kun palaat päätoimintaan. +- Päivitetyt espanjankieliset merkkijonot. diff --git a/fastlane/metadata/android/fi-FI/changelogs/11.2.0.txt b/fastlane/metadata/android/fi-FI/changelogs/11.2.0.txt new file mode 100644 index 0000000..20bb1b0 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/11.2.0.txt @@ -0,0 +1,3 @@ +- Lisätty tuki AMR-kapeakaistaiselle koodekille. +- Lisätty bulgarialaiset merkkijonot. +- Päävalikon Kokoonpanokohde nimettiin uudelleen Asetuksiksi. diff --git a/fastlane/metadata/android/fi-FI/changelogs/11.3.0.txt b/fastlane/metadata/android/fi-FI/changelogs/11.3.0.txt new file mode 100644 index 0000000..57036ac --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/11.3.0.txt @@ -0,0 +1,3 @@ +- Lisätty Asetuksiin mahdollisuus valita ladattavat äänimoduulit. Ladattujen +moduulien toimittamat äänikoodekit ovat saatavilla tilien käyttöön. +- Pienet koodin parannukset. diff --git a/fastlane/metadata/android/fi-FI/changelogs/12.0.0.txt b/fastlane/metadata/android/fi-FI/changelogs/12.0.0.txt new file mode 100644 index 0000000..6ca67e1 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/12.0.0.txt @@ -0,0 +1 @@ +- Alkutoteutus äänen käyttöönotosta Bluetooth-kuulokkeiden kautta. diff --git a/fastlane/metadata/android/fi-FI/changelogs/12.1.0.txt b/fastlane/metadata/android/fi-FI/changelogs/12.1.0.txt new file mode 100644 index 0000000..54c6c88 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/12.1.0.txt @@ -0,0 +1,3 @@ +- Salli portin numero tilin tietueosoitteessa (AoR). +- Korjattu tarkistus, onko tili jo olemassa. +- Päivitetty NO- ja BG-kieliset merkkijonot. diff --git a/fastlane/metadata/android/fi-FI/changelogs/12.2.0.txt b/fastlane/metadata/android/fi-FI/changelogs/12.2.0.txt new file mode 100644 index 0000000..6a99074 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/12.2.0.txt @@ -0,0 +1,3 @@ +- Käytettiin uusia API-funktioita 'net_set_address' ja 'net_set_af' Prefer IPv6 +-toiminnallisuuden toteuttamiseen. +- Sidososoite poistettiin asetuksista (se ei toiminut odotetulla tavalla). diff --git a/fastlane/metadata/android/fi-FI/changelogs/12.2.1.txt b/fastlane/metadata/android/fi-FI/changelogs/12.2.1.txt new file mode 100644 index 0000000..a4d566f --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/12.2.1.txt @@ -0,0 +1 @@ +- Dynaamisten verkkojen käsittely parannettu ja korjattu. diff --git a/fastlane/metadata/android/fi-FI/changelogs/13.0.0.txt b/fastlane/metadata/android/fi-FI/changelogs/13.0.0.txt new file mode 100644 index 0000000..c17e152 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/13.0.0.txt @@ -0,0 +1,10 @@ +- Toista ilmoitusääni myös kun viesti saapuu ja baresip on näkyvissä. +- Jos yhteyshenkilön nimi on tyhjä, käytä yhteyshenkilön nimenä yhteyshenkilön +SIP URI AoR :ta. +- Yhteyshenkilön nimen tarkistaminen tehtiin rennommaksi. +- Vältä satunnaista kaatumista valitessasi tiliä spinnerissä. +- Pyydä äänitallentamisen (mikrofonin) lupa, kun Baresip alkaa (jos sitä ei ole jo +myönnetty tai evätty pysyvästi). +- Ulkoisen tallennustilan (tallennustilan) kirjoitus-/lukulupien parannettu käsittely +varmuuskopioinnin/palautuksen yhteydessä. +- Puhelimen tilan (Puhelin) -lupaa ei tarvita. diff --git a/fastlane/metadata/android/fi-FI/full_description.txt b/fastlane/metadata/android/fi-FI/full_description.txt new file mode 100644 index 0000000..fa4b70a --- /dev/null +++ b/fastlane/metadata/android/fi-FI/full_description.txt @@ -0,0 +1,9 @@ +Tämä on baresip-pohjainen SIP-käyttäjäagenttisovellus Androidille. + +Tällä hetkellä baresip-sovellus tukee äänipuheluita. tekstiviestejä, vastaajaviestin odotusilmoitus sekä sokeat ja osallistuneet puhelunsiirrot. Ääni voidaan koodata Opus-, AMR-, Codec2-, G.729-, G.722-, G.722.1-, G.726- tai PCMU/PCMA-koodekeilla. Turvallisuus saavutetaan TLS- tai WSS-SIP-signalointikuljetuksella ja ZRTP- tai (DTLS) SRTP-mediakapseloinnilla. + +Baresip-sovelluksen kehitystä motivoi tarve turvalliselle, avoimen lähdekoodin SIP-pohjaiselle VoIP-käyttäjäagentille Androidille, joka ei ole riippuvainen patentoiduista, kolmannen osapuolen työntö-ilmoituspalveluista. + +Jos tarvitset videopuheluita ja sinulla on Android-versio 7.0 tai uudempi laite, joka tukee Camera2 API:ta laitteistotukitasolla 3, voit tämän sovelluksen sijaan asentaa sen sisarsovelluksen baresip+. + +Lähdekoodi on saatavilla GitHubissa, jossa myös ongelmista voi ilmoittaa. diff --git a/fastlane/metadata/android/fi-FI/short_description.txt b/fastlane/metadata/android/fi-FI/short_description.txt new file mode 100644 index 0000000..6afd0e5 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/short_description.txt @@ -0,0 +1 @@ +VoIP-käyttäjäagenttisovellus Androidille, joka perustuu Baresip SIP -kirjastoon diff --git a/fastlane/metadata/android/fi-FI/title.txt b/fastlane/metadata/android/fi-FI/title.txt new file mode 100644 index 0000000..cdeb99d --- /dev/null +++ b/fastlane/metadata/android/fi-FI/title.txt @@ -0,0 +1 @@ +baresip diff --git a/fastlane/metadata/android/nb-NO/full_description.txt b/fastlane/metadata/android/nb-NO/full_description.txt new file mode 100644 index 0000000..b7e278a --- /dev/null +++ b/fastlane/metadata/android/nb-NO/full_description.txt @@ -0,0 +1,12 @@ +baresip VoIP-brukeragent støtter nå SIP-stemmeanrop, og meldinger, +telefonsvar-meldingsventingsindikasjon (MWI), og innkommende androps- +videresendinger via REFERENT-metode. Stemme kan kodes via PCMU/PCMA, Opus, +G.722.1, ok iLBC -kodek. Sikkerhets oppnås via TLS-signaleringstransport, +ZRTP og (DTLS) SRTP mediainnkapsling. + +Utvikling av baresip-programmet er motivert av behovet for en sikker og +fri SIP-brukeragent for Android, som ikke avhenger av proprietære +dyttingsmerknadstjenester fra tredjeparter. + +Kildekode tilgjengelig fra https://github.com/juha-h/baresip-studio, +der problemer kan innrapporteres. diff --git a/fastlane/metadata/android/nb-NO/short_description.txt b/fastlane/metadata/android/nb-NO/short_description.txt new file mode 100644 index 0000000..cac56c1 --- /dev/null +++ b/fastlane/metadata/android/nb-NO/short_description.txt @@ -0,0 +1 @@ +VoIP-brukeragentprogram for Android, basert på SIP-biblioteket baresip diff --git a/fastlane/metadata/android/nb-NO/title.txt b/fastlane/metadata/android/nb-NO/title.txt new file mode 100644 index 0000000..62c2789 --- /dev/null +++ b/fastlane/metadata/android/nb-NO/title.txt @@ -0,0 +1,2 @@ +baresip+ + diff --git a/fastlane/metadata/android/ro/full_description.txt b/fastlane/metadata/android/ro/full_description.txt new file mode 100644 index 0000000..05f2223 --- /dev/null +++ b/fastlane/metadata/android/ro/full_description.txt @@ -0,0 +1,12 @@ +Clientul VoIP baresip suportă apeluri vocale și mesaje SIP, notificări căsuță +vocală în așteptare (Message Waiting Indication - MWI) și transferuri apeluri +primite prin metoda REFER. Vocea poate fi transmisă utilizând codecurile +PCMU/PCMA, opus, G.722.1 și iLBC. Securizarea conexiunii este realizată +folosind transportul TLS precum și încapsularea media ZRTP și (DTLS) SRTP. + +Dezvoltarea aplicației baresip este motivată de nevoia de a avea un client +Android SIP securizat, cu sursă deschisă ce nu depinde de servicii terțe +proprietare de notificare. + +Codul sursă este disponibil la https://github.com/juha-h/baresip-studio unde +se și pot raporta eventualele probleme. diff --git a/fastlane/metadata/android/ro/short_description.txt b/fastlane/metadata/android/ro/short_description.txt new file mode 100644 index 0000000..31d2388 --- /dev/null +++ b/fastlane/metadata/android/ro/short_description.txt @@ -0,0 +1 @@ +Client VoIP pentru Android bazat pe biblioteca SIP baresip diff --git a/fastlane/metadata/android/ro/title.txt b/fastlane/metadata/android/ro/title.txt new file mode 100644 index 0000000..62c2789 --- /dev/null +++ b/fastlane/metadata/android/ro/title.txt @@ -0,0 +1,2 @@ +baresip+ + diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt new file mode 100644 index 0000000..000bd9e --- /dev/null +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -0,0 +1,9 @@ +Это приложение SIP-клиент для Android, основанный на baresip. + +В настоящее время приложение baresip поддерживает голосовые вызовы, текстовые сообщения, уведомления голосовой почты, а также переводы вызовов «вслепую» и «с участием». Голос может кодироваться с помощью Opus, AMR, GSM, G.729, G.722, G.722.1, G.726 или PCMU/PCMA. Безопасность обеспечивается посредством TLS или WSS для SIP-сигнализации и инкапсуляции мультимедиа в ZRTP или (DTLS) SRTP. + +Разработка приложения baresip обусловлена необходимостью создания безопасного VoIP клиента на основе SIP с открытым исходным кодом для Android, который не зависит от закрытых сторонних сервисов пуш-уведомлений. + +Если вам нужны видеозвонки и имеется устройство с Android версии 7.0 или новее, поддерживающее API Camera2 на третьем уровне аппаратной поддержки, можете вместо этого приложения установить родственное baresip+. + +Исходный код доступен на GitHub, там же можно сообщить о проблемах. diff --git a/fastlane/metadata/android/ru-RU/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt new file mode 100644 index 0000000..fe0a1b3 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/short_description.txt @@ -0,0 +1 @@ +VoIP-клиент для Android, основанный на одноимённой SIP-библиотеке diff --git a/fastlane/metadata/android/ru-RU/title.txt b/fastlane/metadata/android/ru-RU/title.txt new file mode 100644 index 0000000..cdeb99d --- /dev/null +++ b/fastlane/metadata/android/ru-RU/title.txt @@ -0,0 +1 @@ +baresip diff --git a/fastlane/metadata/android/sv/title.txt b/fastlane/metadata/android/sv/title.txt new file mode 100644 index 0000000..cdeb99d --- /dev/null +++ b/fastlane/metadata/android/sv/title.txt @@ -0,0 +1 @@ +baresip diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..92df1e6 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,27 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx1024m -Dfile.encoding=UTF-8 + +# Default value: summary +# org.gradle.warning.mode=all + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +android.enableJetifier=false +android.nonFinalResIds=true +android.useAndroidX=true +kotlin.code.style=official +android.nonTransitiveRClass=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..af1fda6 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Jan 30 05:45:34 EET 2023 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..b0d6d0a --- /dev/null +++ b/gradlew @@ -0,0 +1,188 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9991c50 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/icons/icon+.black.png b/icons/icon+.black.png new file mode 100644 index 0000000..9f83f30 Binary files /dev/null and b/icons/icon+.black.png differ diff --git a/icons/icon+.color.png b/icons/icon+.color.png new file mode 100644 index 0000000..e03fd1f Binary files /dev/null and b/icons/icon+.color.png differ diff --git a/local.properties b/local.properties new file mode 100644 index 0000000..1ab0bc3 --- /dev/null +++ b/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Tue Jan 28 13:22:45 KST 2025 +sdk.dir=D\:\\Android\\sdk diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..2953047 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +// The following is just for generating libs only. +// To use: +// uncomment out this line +// make sure uncomment out the one inside app/build.gradle to enable dependency +// build the app in Android Studio or command line +// Comment out this line and the one inside app/build.gradle again + +// include ':gen-libs' +