From ce49c84f3a26f016f9232d2bffdc830d7fd6169f Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Sat, 30 Aug 2014 11:37:47 +0000 Subject: Tox: - switch to offline when connection is lost - file transfer support - code refactoring - project reordering - version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@10340 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tox/Tox_10.vcxproj | 26 +- protocols/Tox/Tox_10.vcxproj.filters | 39 +- protocols/Tox/Tox_10.vcxproj.user | 3 + protocols/Tox/Tox_12.vcxproj | 27 +- protocols/Tox/Tox_12.vcxproj.filters | 38 +- protocols/Tox/dll/x64/libtox.dll | Bin 3480662 -> 0 bytes protocols/Tox/dll/x86/libtox.dll | Bin 2943841 -> 0 bytes protocols/Tox/docs/README.md | 18 - protocols/Tox/docs/dlltolib/deflibcreator/as.exe | Bin 792360 -> 0 bytes protocols/Tox/docs/dlltolib/deflibcreator/as64.exe | Bin 1510620 -> 0 bytes .../docs/dlltolib/deflibcreator/deflibcreator.exe | Bin 77824 -> 0 bytes .../Tox/docs/dlltolib/deflibcreator/dlltool.exe | Bin 611153 -> 0 bytes .../Tox/docs/dlltolib/deflibcreator/dlltool64.exe | Bin 1023386 -> 0 bytes protocols/Tox/docs/dlltolib/deflibcreator/link.exe | Bin 733440 -> 0 bytes .../docs/dlltolib/deflibcreator/link.exe.manifest | 11 - .../Tox/docs/dlltolib/deflibcreator/mspdb80.dll | Bin 173056 -> 0 bytes .../dlltolib/deflibcreator/mspdb80.dll.2.manifest | 11 - .../Tox/docs/dlltolib/deflibcreator/src/build.cmd | 5 - .../dlltolib/deflibcreator/src/deflib.manifest | 8 - .../dlltolib/deflibcreator/src/deflibcreator.cpp | 310 ---- .../Tox/docs/dlltolib/deflibcreator/src/dlc.ico | Bin 34494 -> 0 bytes .../docs/dlltolib/deflibcreator/src/resource.rc | 94 -- protocols/Tox/docs/dlltolib/start.cmd | 3 - protocols/Tox/lib/x64/libtox-x64.exp | Bin 215115 -> 0 bytes protocols/Tox/lib/x64/libtox-x64.lib | Bin 353750 -> 0 bytes protocols/Tox/lib/x64/libtox.def | 1561 ------------------ protocols/Tox/lib/x86/libtox.def | 1709 -------------------- protocols/Tox/lib/x86/libtox.exp | Bin 240874 -> 0 bytes protocols/Tox/lib/x86/libtox.lib | Bin 398560 -> 0 bytes protocols/Tox/res/resource.aps | Bin 0 -> 42156 bytes protocols/Tox/src/common.h | 3 +- protocols/Tox/src/file_transfer.h | 197 --- protocols/Tox/src/main.cpp | 4 +- protocols/Tox/src/stdafx.cpp | 18 - protocols/Tox/src/tox/tox.h | 683 -------- protocols/Tox/src/tox/toxav.h | 389 ----- protocols/Tox/src/tox/toxdns.h | 85 - protocols/Tox/src/tox_account.cpp | 45 +- protocols/Tox/src/tox_accounts.cpp | 43 + protocols/Tox/src/tox_contacts.cpp | 128 +- protocols/Tox/src/tox_events.cpp | 274 ---- protocols/Tox/src/tox_instances.cpp | 44 - protocols/Tox/src/tox_messages.cpp | 83 + protocols/Tox/src/tox_netlib.cpp | 6 +- protocols/Tox/src/tox_options.cpp | 100 -- protocols/Tox/src/tox_profile.cpp | 79 + protocols/Tox/src/tox_proto.cpp | 90 +- protocols/Tox/src/tox_proto.h | 111 +- protocols/Tox/src/tox_search.cpp | 79 + protocols/Tox/src/tox_services.cpp | 2 - protocols/Tox/src/tox_transfer.cpp | 128 ++ protocols/Tox/src/tox_transfers.cpp | 44 - protocols/Tox/src/tox_utils.cpp | 26 - protocols/Tox/src/version.h | 2 +- protocols/Tox/tox/README.md | 18 + protocols/Tox/tox/deflibcreator/as.exe | Bin 0 -> 792360 bytes protocols/Tox/tox/deflibcreator/as64.exe | Bin 0 -> 1510620 bytes protocols/Tox/tox/deflibcreator/deflibcreator.exe | Bin 0 -> 77824 bytes protocols/Tox/tox/deflibcreator/dlltool.exe | Bin 0 -> 611153 bytes protocols/Tox/tox/deflibcreator/dlltool64.exe | Bin 0 -> 1023386 bytes protocols/Tox/tox/deflibcreator/link.exe | Bin 0 -> 733440 bytes protocols/Tox/tox/deflibcreator/link.exe.manifest | 11 + protocols/Tox/tox/deflibcreator/mspdb80.dll | Bin 0 -> 173056 bytes .../Tox/tox/deflibcreator/mspdb80.dll.2.manifest | 11 + protocols/Tox/tox/deflibcreator/src/build.cmd | 5 + .../Tox/tox/deflibcreator/src/deflib.manifest | 8 + .../Tox/tox/deflibcreator/src/deflibcreator.cpp | 310 ++++ protocols/Tox/tox/deflibcreator/src/dlc.ico | Bin 0 -> 34494 bytes protocols/Tox/tox/deflibcreator/src/resource.rc | 94 ++ protocols/Tox/tox/dll/x64/libtox.dll | Bin 0 -> 3480662 bytes protocols/Tox/tox/dll/x86/libtox.dll | Bin 0 -> 2943841 bytes protocols/Tox/tox/generate_libs.cmd | 3 + protocols/Tox/tox/include/tox.h | 683 ++++++++ protocols/Tox/tox/include/toxav.h | 389 +++++ protocols/Tox/tox/include/toxdns.h | 85 + protocols/Tox/tox/lib/x64/libtox-x64.exp | Bin 0 -> 215115 bytes protocols/Tox/tox/lib/x64/libtox-x64.lib | Bin 0 -> 353750 bytes protocols/Tox/tox/lib/x64/libtox.def | 1561 ++++++++++++++++++ protocols/Tox/tox/lib/x86/libtox.def | 1709 ++++++++++++++++++++ protocols/Tox/tox/lib/x86/libtox.exp | Bin 0 -> 240874 bytes protocols/Tox/tox/lib/x86/libtox.lib | Bin 0 -> 398560 bytes 81 files changed, 5600 insertions(+), 5813 deletions(-) create mode 100644 protocols/Tox/Tox_10.vcxproj.user delete mode 100644 protocols/Tox/dll/x64/libtox.dll delete mode 100644 protocols/Tox/dll/x86/libtox.dll delete mode 100644 protocols/Tox/docs/README.md delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/as.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/as64.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/link.exe delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico delete mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc delete mode 100644 protocols/Tox/docs/dlltolib/start.cmd delete mode 100644 protocols/Tox/lib/x64/libtox-x64.exp delete mode 100644 protocols/Tox/lib/x64/libtox-x64.lib delete mode 100644 protocols/Tox/lib/x64/libtox.def delete mode 100644 protocols/Tox/lib/x86/libtox.def delete mode 100644 protocols/Tox/lib/x86/libtox.exp delete mode 100644 protocols/Tox/lib/x86/libtox.lib create mode 100644 protocols/Tox/res/resource.aps delete mode 100644 protocols/Tox/src/file_transfer.h delete mode 100644 protocols/Tox/src/stdafx.cpp delete mode 100644 protocols/Tox/src/tox/tox.h delete mode 100644 protocols/Tox/src/tox/toxav.h delete mode 100644 protocols/Tox/src/tox/toxdns.h create mode 100644 protocols/Tox/src/tox_accounts.cpp delete mode 100644 protocols/Tox/src/tox_instances.cpp create mode 100644 protocols/Tox/src/tox_messages.cpp create mode 100644 protocols/Tox/src/tox_profile.cpp create mode 100644 protocols/Tox/src/tox_search.cpp delete mode 100644 protocols/Tox/src/tox_services.cpp create mode 100644 protocols/Tox/src/tox_transfer.cpp delete mode 100644 protocols/Tox/src/tox_transfers.cpp create mode 100644 protocols/Tox/tox/README.md create mode 100644 protocols/Tox/tox/deflibcreator/as.exe create mode 100644 protocols/Tox/tox/deflibcreator/as64.exe create mode 100644 protocols/Tox/tox/deflibcreator/deflibcreator.exe create mode 100644 protocols/Tox/tox/deflibcreator/dlltool.exe create mode 100644 protocols/Tox/tox/deflibcreator/dlltool64.exe create mode 100644 protocols/Tox/tox/deflibcreator/link.exe create mode 100644 protocols/Tox/tox/deflibcreator/link.exe.manifest create mode 100644 protocols/Tox/tox/deflibcreator/mspdb80.dll create mode 100644 protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest create mode 100644 protocols/Tox/tox/deflibcreator/src/build.cmd create mode 100644 protocols/Tox/tox/deflibcreator/src/deflib.manifest create mode 100644 protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp create mode 100644 protocols/Tox/tox/deflibcreator/src/dlc.ico create mode 100644 protocols/Tox/tox/deflibcreator/src/resource.rc create mode 100644 protocols/Tox/tox/dll/x64/libtox.dll create mode 100644 protocols/Tox/tox/dll/x86/libtox.dll create mode 100644 protocols/Tox/tox/generate_libs.cmd create mode 100644 protocols/Tox/tox/include/tox.h create mode 100644 protocols/Tox/tox/include/toxav.h create mode 100644 protocols/Tox/tox/include/toxdns.h create mode 100644 protocols/Tox/tox/lib/x64/libtox-x64.exp create mode 100644 protocols/Tox/tox/lib/x64/libtox-x64.lib create mode 100644 protocols/Tox/tox/lib/x64/libtox.def create mode 100644 protocols/Tox/tox/lib/x86/libtox.def create mode 100644 protocols/Tox/tox/lib/x86/libtox.exp create mode 100644 protocols/Tox/tox/lib/x86/libtox.lib (limited to 'protocols') diff --git a/protocols/Tox/Tox_10.vcxproj b/protocols/Tox/Tox_10.vcxproj index a7680d8393..6199826078 100644 --- a/protocols/Tox/Tox_10.vcxproj +++ b/protocols/Tox/Tox_10.vcxproj @@ -89,7 +89,7 @@ Windows true - $(ProfileDir)..\..\bin10\lib;lib\x86 + tox\lib\x86;$(ProfileDir)..\..\bin10\lib $(IntDir)$(TargetName).lib false ws2_32.lib;libtox.lib;%(AdditionalDependencies) @@ -99,7 +99,7 @@ ..\..\include\msapi - xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y + xcopy tox\dll\x86\*.dll $(SolutionDir)$(Configuration) /Y @@ -107,18 +107,18 @@ Level3 Disabled _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true 4996;%(DisableSpecificWarnings) MultiThreadedDebugDLL - Use + Create common.h Windows true - $(ProfileDir)..\..\bin10\lib;lib\x64 + tox\lib\x64;$(ProfileDir)..\..\bin10\lib $(IntDir)$(TargetName).lib libtox-x64.lib;%(AdditionalDependencies) false @@ -128,7 +128,7 @@ ..\..\include\msapi - xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + xcopy tox\dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y @@ -197,27 +197,23 @@ - - - - - Create - + - + + - + - + diff --git a/protocols/Tox/Tox_10.vcxproj.filters b/protocols/Tox/Tox_10.vcxproj.filters index 91c0db1488..c2541a28e3 100644 --- a/protocols/Tox/Tox_10.vcxproj.filters +++ b/protocols/Tox/Tox_10.vcxproj.filters @@ -10,9 +10,6 @@ {b818611d-200d-4eb8-be7a-f15b396ae26d} - - {dcda5d79-c0d1-4515-9513-7eda6a003978} - @@ -27,19 +24,10 @@ Header Files - - Header Files\tox - - - Header Files\tox - - - Header Files\tox + + Header Files - Source Files - - Header Files @@ -50,18 +38,9 @@ Source Files - - Source Files - - - Source Files - Source Files - - Source Files - Source Files @@ -77,7 +56,19 @@ Source Files - + + Source Files + + + Source Files + + + Source Files + + + Source Files + + Source Files diff --git a/protocols/Tox/Tox_10.vcxproj.user b/protocols/Tox/Tox_10.vcxproj.user new file mode 100644 index 0000000000..695b5c78b9 --- /dev/null +++ b/protocols/Tox/Tox_10.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/protocols/Tox/Tox_12.vcxproj b/protocols/Tox/Tox_12.vcxproj index cf0bcaea5f..5f189f3b84 100644 --- a/protocols/Tox/Tox_12.vcxproj +++ b/protocols/Tox/Tox_12.vcxproj @@ -82,18 +82,18 @@ Level3 Disabled _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true 4996;%(DisableSpecificWarnings) MultiThreadedDebugDLL common.h - Use + Create Windows true - $(ProfileDir)..\..\bin12\lib;lib\x86 + tox\lib\x86;$(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib false false @@ -104,7 +104,7 @@ ..\..\include\msapi - xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y + xcopy tox\dll\x86\*.dll $(SolutionDir)$(Configuration) /Y @@ -123,7 +123,7 @@ Windows true - $(ProfileDir)..\..\bin12\lib;lib\x64 + tox\lib\x64;$(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib libtox-x64.lib;%(AdditionalDependencies) false @@ -133,7 +133,7 @@ ..\..\include\msapi - xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + xcopy tox\dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y @@ -198,29 +198,24 @@ - - - - - - Create - - + + + - + - + diff --git a/protocols/Tox/Tox_12.vcxproj.filters b/protocols/Tox/Tox_12.vcxproj.filters index 52d4ff6048..cdd0faa973 100644 --- a/protocols/Tox/Tox_12.vcxproj.filters +++ b/protocols/Tox/Tox_12.vcxproj.filters @@ -10,9 +10,6 @@ {b818611d-200d-4eb8-be7a-f15b396ae26d} - - {dcda5d79-c0d1-4515-9513-7eda6a003978} - @@ -27,21 +24,9 @@ Header Files - - Header Files\tox - - - Header Files\tox - - - Header Files\tox - Header Files - - Header Files - @@ -50,18 +35,9 @@ Source Files - - Source Files - - - Source Files - Source Files - - Source Files - Source Files @@ -77,7 +53,19 @@ Source Files - + + Source Files + + + Source Files + + + Source Files + + + Source Files + + Source Files diff --git a/protocols/Tox/dll/x64/libtox.dll b/protocols/Tox/dll/x64/libtox.dll deleted file mode 100644 index 832ff1d072..0000000000 Binary files a/protocols/Tox/dll/x64/libtox.dll and /dev/null differ diff --git a/protocols/Tox/dll/x86/libtox.dll b/protocols/Tox/dll/x86/libtox.dll deleted file mode 100644 index f892c75fb7..0000000000 Binary files a/protocols/Tox/dll/x86/libtox.dll and /dev/null differ diff --git a/protocols/Tox/docs/README.md b/protocols/Tox/docs/README.md deleted file mode 100644 index 0879158997..0000000000 --- a/protocols/Tox/docs/README.md +++ /dev/null @@ -1,18 +0,0 @@ -Prerequisites -------------- - -You will need PowerShell for preparing the `.def` file. - -### Tox-Core - -Download Tox DLL from [the CI server](https://jenkins.libtoxcore.so/job/toxcore_win32_dll/). Put that DLL into `dll` directory, copy the `include` files. - -Now you need to prepare the `.def` file for the DLL. You have to prepare the corresponding `.lib` file for the DLL. To do it, start PowerShell and enter a Visual Studio command environment. Then execute the following script: - - PS> 'EXPORTS' | Out-File .\libtox.def -Encoding ascii; dumpbin.exe /exports .\libtox.dll | % { ($_ -split '\s+')[4] } | Out-File .\libtox.def -Append -Encoding ascii - -It prepares the `def` file for the next step - the `lib` tool: - - PS> lib /def:libtox.def /out:libtox.lib /machine:x86 - -You'll get the `libtox.lib` import library in the current directory. Copy it to `lib` project directory and you're ready! diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/as.exe b/protocols/Tox/docs/dlltolib/deflibcreator/as.exe deleted file mode 100644 index e1b3143100..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/as.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe b/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe deleted file mode 100644 index 4f5095abf8..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe b/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe deleted file mode 100644 index 5969f5d4c2..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe deleted file mode 100644 index 7874bdd13e..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe deleted file mode 100644 index 6a41e5228c..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe deleted file mode 100644 index 5215aecd5d..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest deleted file mode 100644 index 2981431665..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll deleted file mode 100644 index cbe888915c..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest deleted file mode 100644 index 2981431665..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd b/protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd deleted file mode 100644 index abcf258d0a..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@echo off -rc /d "_UNICODE" /d "UNICODE" /fo".\release\resource.res" resource.rc -cl /EHsc /DUNICODE /D_UNICODE /Ox /Oi /Ot /DWIN32 /DNDEBUG /nologo /GL /TP /GS /Gz /MD deflibcreator.cpp /link /LTCG /release /manifest:no /Machine:x86 .\release\resource.res /out:.\release\deflibcreator.exe -del deflibcreator.obj -del .\release\resource.res \ No newline at end of file diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest deleted file mode 100644 index 414433b643..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp b/protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp deleted file mode 100644 index 6480fda7e3..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp +++ /dev/null @@ -1,310 +0,0 @@ -#define WIN32_LEAN_AND_MEAN -#define _WIN32_WINNT 0x0501 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#pragma comment(lib, "dbghelp.lib") -#pragma comment(lib, "shlwapi.lib") -#pragma comment(lib, "shell32.lib") - -// ordinals to names -typedef std::map > ExportMap; - -void GetExports(PVOID pMapping, ExportMap& exports, WORD& imageType) -{ - ULONG size = 0; - PIMAGE_NT_HEADERS pHead = ImageNtHeader(pMapping); - PIMAGE_EXPORT_DIRECTORY pDir = static_cast(ImageDirectoryEntryToData(pMapping, FALSE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size)); - if(pHead && pDir) - { - imageType = pHead->FileHeader.Machine; - char* base = static_cast(pMapping); - DWORD rvaExportDir = reinterpret_cast(pDir) - base; - PIMAGE_SECTION_HEADER pSec = NULL; - PDWORD namesAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNames, &pSec)); - PWORD ordinalAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNameOrdinals, &pSec)); - DWORD numFuncs = pDir->NumberOfFunctions; - DWORD numNames = pDir->NumberOfNames; - DWORD baseOrd = pDir->Base; - - std::set ordinals; - DWORD lastOrd = baseOrd + numFuncs; - for(DWORD i = baseOrd; i < lastOrd; ++i) - { - ordinals.insert(i); - } - - for(DWORD i = 0; i < numNames; ++i) - { - WORD thisZeroBasedOrd = ordinalAddr[i]; - DWORD thisBasedOrd = thisZeroBasedOrd + baseOrd; - ordinals.erase(thisBasedOrd); - LPCSTR name = static_cast(ImageRvaToVa(pHead, pMapping, namesAddr[i], &pSec)); - exports[thisBasedOrd].push_back(name); - } - - for(std::set::const_iterator iter = ordinals.begin(), end = ordinals.end(); - iter != end; - ++iter - ) - { - exports.insert(std::make_pair(*iter, ExportMap::mapped_type())); - } - } -} - -PVOID MapFile(HANDLE hFile, DWORD fileMapPerm, DWORD mappedPerms) -{ - PVOID base = NULL; - HANDLE hMap = CreateFileMappingW( - hFile, - NULL, - fileMapPerm, - 0, - 0, - NULL - ); - if(hMap) - { - base = MapViewOfFile(hMap, mappedPerms, 0, 0, 0); - CloseHandle(hMap); - } - return base; -} - -PVOID MapFile(const wchar_t* fileName, DWORD filePerms, DWORD fileMapPerm, DWORD mappedPerms) -{ - PVOID base = NULL; - HANDLE hFile = CreateFileW( - fileName, - filePerms, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, - NULL - ); - if(hFile != INVALID_HANDLE_VALUE) - { - base = MapFile(hFile, fileMapPerm, mappedPerms); - CloseHandle(hFile); - } - return base; -} - -PVOID MapFileRO(const wchar_t* fileName, BOOL image) -{ - return MapFile(fileName, GENERIC_READ, PAGE_READONLY | (image ? SEC_IMAGE : 0), FILE_MAP_READ); -} - -std::wstring GetFileName(const wchar_t* pFilePath) -{ - const wchar_t* pAfterSlash = pFilePath, *pSlash = NULL; - while((pSlash = wcspbrk(pAfterSlash, L"\\/")) != NULL) - { - pAfterSlash = pSlash + 1; - } - const wchar_t* pDot = wcschr(pAfterSlash, L'.'); - if(pDot != NULL) - { - return std::wstring(pAfterSlash, pDot); - } - else return std::wstring(pAfterSlash); -} - -std::wstring MakeWString(const char* string) -{ - size_t reqd = mbstowcs(NULL, string, 0); - if(reqd != static_cast(-1)) - { - std::wstring str(reqd, 0); - mbstowcs(&str[0], string, reqd); - return str; - } - return std::wstring(string, string + strlen(string) + 1); -} - -void DoAndWaitForExecution(SHELLEXECUTEINFO& sei) -{ - if(!ShellExecuteEx(&sei)) - { - std::wcerr << L"Couldn't execute \"" << sei.lpFile << L'\n'; - } - else - { - WaitForSingleObject(sei.hProcess, INFINITE); - CloseHandle(sei.hProcess); - } -} - -void CreateLibs(const std::wstring& defFile, const std::wstring& baseName, const std::wstring& outDir, WORD machineType) -{ - std::wstring curDir(1000, 0); - curDir.resize(GetModuleFileName(GetModuleHandle(NULL), &curDir[0], curDir.length())); - curDir.resize(curDir.find_last_of(L"\\/") + 1); - SHELLEXECUTEINFO sei = {sizeof(sei), 0}; - sei.fMask = SEE_MASK_NOCLOSEPROCESS; - sei.hwnd = GetConsoleWindow(); - sei.lpVerb = L"open"; - sei.lpDirectory = outDir.c_str(); - - // 32-bit libs - if(machineType == IMAGE_FILE_MACHINE_I386) - { - std::wcout << L"Creating 32-bit libs...\n"; - // dlltool for mingw (x86) - std::wcout << L"\tCreating lib" << baseName << L".a...\n"; - std::wostringstream pstream; - pstream << L"-d \"" << defFile << L"\" -l lib" << baseName << L".a"; - - std::wstring binary = curDir + L"dlltool.exe"; - std::wstring parameters = pstream.str(); - - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - - DoAndWaitForExecution(sei); - - pstream.str(L""); - - // link for msvc (x86) - std::wcout << L"\tCreating " << baseName << L".lib...\n"; - pstream << L"/lib /nologo /machine:x86 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L".lib\""; - - binary = curDir + L"link.exe"; - parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - } - else - { - std::wcout << L"Creating 64-bit libs...\n"; - // dlltool for mingw (x64) (my fail if running on 32-bit comp) - std::wcout << L"\tlib" << baseName << L"-x64.a...\n"; - - std::wstring binary = curDir + L"dlltool64.exe"; - std::wstring as64Pos = L"\""; - as64Pos += (curDir + L"as64.exe\""); - std::wostringstream pstream; - pstream << L"-d \"" << defFile << L"\" -S " << as64Pos << L" -l lib" << baseName << L"-x64.a"; - - std::wstring parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - - pstream.str(L""); - - // link for msvc (x64) - std::wcout << L'\t' << baseName << L"-x64.lib...\n"; - binary = curDir + L"link.exe"; - pstream << L"/lib /nologo /machine:x64 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L"-x64.lib\""; - parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - } -} - -BOOL CreateDef(LPCWSTR dllFile, const std::wstring& defFile, WORD& machineType) -{ - std::wcout << L"Creating " << defFile << L"...\n"; - // this is FALSE on purpose. If it's true, some dll's (mainly bcrypt.dll from Vista) - // fail to map as an image because of some funkyness with the certificate or - // something (STATUS_INVALID_IMAGE_HASH fyi). So this is just easier - PVOID pMapping = MapFileRO(dllFile, FALSE); - if(pMapping) - { - ExportMap exports; - GetExports(pMapping, exports, machineType); - if(!exports.empty()) - { - std::wofstream defFile(defFile.c_str()); - std::wostringstream expDetails; - defFile << L"LIBRARY \"" << GetFileName(dllFile) << L"\"\n\nEXPORTS\n"; - for(ExportMap::const_iterator iter = exports.begin(), end = exports.end(); - iter != end; - ++iter - ) - { - expDetails.str(L""); - expDetails.clear(); - expDetails << L'\t'; - const ExportMap::mapped_type& names = iter->second; - if(!names.empty()) - { - const std::wstring& initialName = MakeWString(*(names.begin())); - expDetails << initialName << L"\t@" << iter->first << L'\n'; - for(ExportMap::mapped_type::const_iterator namesIter = names.begin() + 1, namesEnd = names.end(); - namesIter != namesEnd; - ++namesIter - ) - { - expDetails << '\t' << MakeWString(*namesIter) << L'=' << initialName << L'\n'; - } - } - // unnamed export - else - { - expDetails << L"Ordinal" << iter->first << L" NONAME\t@" << iter->first << L'\n'; - } - defFile << expDetails.str(); - } - } - else - { - std::wcerr << dllFile << L" has no exports, nothing to do\n"; - return FALSE; - } - UnmapViewOfFile(pMapping); - } - return TRUE; -} - -int __cdecl wmain(int argc, wchar_t** argv) -{ - std::wcout << L"DefLibCreator v1.0 - Airesoft.co.uk\n\n"; - if(argc < 2) - { - puts("Usage: DefLibCreator dll [outDir]"); - return 1; - } - else - { - std::wstring baseFileName = PathFindFileName(argv[1]); - baseFileName.erase(baseFileName.find_last_of('.')); - int outDirArg = (argc >= 3) ? 2 : 1; - LPWSTR pFilePart = NULL; - std::wstring outDir(GetFullPathName(argv[outDirArg], 0, NULL, NULL), 0); - outDir.resize(GetFullPathName(argv[outDirArg], outDir.length(), &outDir[0], &pFilePart)); - // if the explicit output dir wasn't specified, we need to chop the dll filename off the end of outDir - if(outDirArg == 1) - { - outDir.resize(pFilePart - outDir.c_str()); - } - else - { - CreateDirectory(outDir.c_str(), NULL); - } - outDir.push_back(L'\\'); // ensure it ends with a slash - std::wstring defFile(outDir); - defFile += (baseFileName + L".def"); - WORD machineType = 0; - if(CreateDef(argv[1], defFile, machineType)) - { - CreateLibs(defFile, baseFileName, outDir, machineType); - } - } - return 0; -} diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico b/protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico deleted file mode 100644 index aa524c729c..0000000000 Binary files a/protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico and /dev/null differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc b/protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc deleted file mode 100644 index 503ec99a76..0000000000 --- a/protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc +++ /dev/null @@ -1,94 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winresrc.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN -END - -2 TEXTINCLUDE -BEGIN - "#include ""winresrc.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN -END - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -1 ICON "dlc.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080904b0" - BEGIN - VALUE "CompanyName", "Airesoft" - VALUE "FileDescription", "DefLibCreator" - VALUE "FileVersion", "1, 0, 0, 0" - VALUE "InternalName", "DefLibCreator.exe" - VALUE "LegalCopyright", "Copyright (C) Airesoft 2012" - VALUE "OriginalFilename", "DefLibCreator.exe" - VALUE "ProductName", "DefLibCreator" - VALUE "ProductVersion", "1, 0, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x809, 1200 - END -END - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - -/// Manifest -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST deflib.manifest \ No newline at end of file diff --git a/protocols/Tox/docs/dlltolib/start.cmd b/protocols/Tox/docs/dlltolib/start.cmd deleted file mode 100644 index 913dca85c7..0000000000 --- a/protocols/Tox/docs/dlltolib/start.cmd +++ /dev/null @@ -1,3 +0,0 @@ -deflibcreator\deflibcreator ..\..\dll\x86\libtox.dll ..\..\lib\x86\ - -deflibcreator\deflibcreator ..\..\dll\x64\libtox.dll ..\..\lib\x64\ diff --git a/protocols/Tox/lib/x64/libtox-x64.exp b/protocols/Tox/lib/x64/libtox-x64.exp deleted file mode 100644 index d322ce16b6..0000000000 Binary files a/protocols/Tox/lib/x64/libtox-x64.exp and /dev/null differ diff --git a/protocols/Tox/lib/x64/libtox-x64.lib b/protocols/Tox/lib/x64/libtox-x64.lib deleted file mode 100644 index 9be529069c..0000000000 Binary files a/protocols/Tox/lib/x64/libtox-x64.lib and /dev/null differ diff --git a/protocols/Tox/lib/x64/libtox.def b/protocols/Tox/lib/x64/libtox.def deleted file mode 100644 index f685a57c30..0000000000 --- a/protocols/Tox/lib/x64/libtox.def +++ /dev/null @@ -1,1561 +0,0 @@ -LIBRARY "libtox" - -EXPORTS - Assoc_add_entry @1 - Assoc_get_close_entries @2 - Assoc_self_client_id_changed @3 - DHT_addfriend @4 - DHT_bootstrap @5 - DHT_bootstrap_from_address @6 - DHT_delfriend @7 - DHT_get_close_list @8 - DHT_get_shared_key_recv @9 - DHT_get_shared_key_sent @10 - DHT_getfriendip @11 - DHT_getnodes @12 - DHT_isconnected @13 - DHT_load @14 - DHT_non_lan_connected @15 - DHT_save @16 - DHT_size @17 - LAN_ip @18 - LANdiscovery_init @19 - U16_to_bytes @20 - U32_to_bytes @21 - VP8_UVSSE @22 - __pth_gpointer_locked @23 - __pthread_clock_nanosleep @24 - __pthread_shallcancel @25 - __xl_f @26 - _celt_autocorr @27 - _celt_lpc @28 - _pthread_cleanup_dest @29 - _pthread_get_state @30 - _pthread_invoke_cancel @31 - _pthread_key_dest @32 - _pthread_rel_time_in_ms @33 - _pthread_set_state @34 - _pthread_setnobreak @35 - _pthread_time_in_ms @36 - _pthread_time_in_ms_from_timespec @37 - _pthread_tryjoin @38 - _sodium_alignedcalloc @39 - accept_crypto_connection @40 - add_ext_header @41 - add_groupchat @42 - add_header @43 - add_tcp_relay @44 - add_tcp_relay_peer @45 - add_to_ping @46 - addr_parse_ip @47 - addr_resolve @48 - addr_resolve_or_parse_ip @49 - addto_lists @50 - alg_quant @51 - alg_unquant @52 - amp2Log2 @53 - anti_collapse @54 - at_startup_ran @55 - av_DefaultSettings @56 - av_VADd @57 - av_jbufdc @58 - bs_list_add @59 - bs_list_find @60 - bs_list_free @61 - bs_list_init @62 - bs_list_remove @63 - bs_list_trim @64 - build_header @65 - bytes_to_U16 @66 - bytes_to_U32 @67 - callback_file_control @68 - callback_file_data @69 - callback_file_sendrequest @70 - callback_friendrequest @71 - callback_groupaction @72 - callback_groupmessage @73 - callback_namelistchange @74 - celt_decode_with_ec @75 - celt_decoder_get_size @76 - celt_decoder_init @77 - celt_encode_with_ec @78 - celt_encoder_get_size @79 - celt_encoder_init @80 - celt_fir @81 - celt_iir @82 - celt_lcg_rand @83 - celt_pitch_xcorr_c @84 - celt_preemphasis @85 - chat_bootstrap @86 - chat_bootstrap_nonlazy @87 - check_control_input @88 - check_fragments_for_errors @89 - check_late_message @90 - closelist_nodes @91 - clt_mdct_backward @92 - clt_mdct_forward @93 - codec_init_session @94 - codec_terminate_session @95 - comb_filter @96 - compute_allocation @97 - compute_band_energies @98 - compute_frame_size @99 - compute_stereo_width @100 - cond_print @101 - cond_print_set @102 - connection_data_handler @103 - connection_lossy_data_handler @104 - connection_status_handler @105 - copy_chatlist @106 - copy_connected_tcp_relays @107 - copy_friendlist @108 - count_chatlist @109 - count_friendlist @110 - create_announce_request @111 - create_data_request @112 - create_onion_packet @113 - create_onion_packet_tcp @114 - create_onion_path @115 - create_queue @116 - create_request @117 - crypto_box @118 - crypto_box_afternm @119 - crypto_box_beforenm @120 - crypto_box_beforenmbytes @121 - crypto_box_boxzerobytes @122 - crypto_box_curve25519xsalsa20poly1305 @123 - crypto_box_curve25519xsalsa20poly1305_afternm @124 - crypto_box_curve25519xsalsa20poly1305_beforenm @125 - crypto_box_curve25519xsalsa20poly1305_keypair @126 - crypto_box_curve25519xsalsa20poly1305_open @127 - crypto_box_curve25519xsalsa20poly1305_open_afternm @128 - crypto_box_curve25519xsalsa20poly1305_seed_keypair @129 - crypto_box_keypair @130 - crypto_box_macbytes @131 - crypto_box_noncebytes @132 - crypto_box_open @133 - crypto_box_open_afternm @134 - crypto_box_primitive @135 - crypto_box_publickeybytes @136 - crypto_box_secretkeybytes @137 - crypto_box_seed_keypair @138 - crypto_box_seedbytes @139 - crypto_box_zerobytes @140 - crypto_cmp @141 - crypto_connection_status @142 - crypto_core_hsalsa20 @143 - crypto_core_salsa20 @144 - crypto_hash_sha256 @145 - crypto_hash_sha256_final @146 - crypto_hash_sha256_init @147 - crypto_hash_sha256_update @148 - crypto_hash_sha512 @149 - crypto_hash_sha512_final @150 - crypto_hash_sha512_init @151 - crypto_hash_sha512_update @152 - crypto_kill @153 - crypto_num_free_sendqueue_slots @154 - crypto_onetimeauth_pick_best_implementation @155 - crypto_onetimeauth_poly1305 @156 - crypto_onetimeauth_poly1305_donna @157 - crypto_onetimeauth_poly1305_donna_final @158 - crypto_onetimeauth_poly1305_donna_implementation @159 - crypto_onetimeauth_poly1305_donna_implementation_name @160 - crypto_onetimeauth_poly1305_donna_init @161 - crypto_onetimeauth_poly1305_donna_update @162 - crypto_onetimeauth_poly1305_donna_verify @163 - crypto_onetimeauth_poly1305_final @164 - crypto_onetimeauth_poly1305_implementation_name @165 - crypto_onetimeauth_poly1305_init @166 - crypto_onetimeauth_poly1305_set_implementation @167 - crypto_onetimeauth_poly1305_update @168 - crypto_onetimeauth_poly1305_verify @169 - crypto_run_interval @170 - crypto_scalarmult_curve25519 @171 - crypto_scalarmult_curve25519_base @172 - crypto_secretbox_xsalsa20poly1305 @173 - crypto_secretbox_xsalsa20poly1305_open @174 - crypto_stream_salsa20 @175 - crypto_stream_salsa20_keybytes @176 - crypto_stream_salsa20_noncebytes @177 - crypto_stream_salsa20_xor @178 - crypto_stream_salsa20_xor_ic @179 - crypto_stream_xsalsa20 @180 - crypto_stream_xsalsa20_xor @181 - crypto_verify_16 @182 - crypto_verify_32 @183 - cryptopacket_registerhandler @184 - current_time_monotonic @185 - custom_lossless_packet_registerhandler @186 - custom_lossy_packet_registerhandler @187 - decode_pulses @188 - decrypt_data @189 - decrypt_data_symmetric @190 - del_groupchat @191 - denormalise_bands @192 - dequeue @193 - do_Assoc @194 - do_DHT @195 - do_TCP_connection @196 - do_TCP_server @197 - do_friends @198 - do_groupchat @199 - do_hardening @200 - do_messenger @201 - do_net_crypto @202 - do_onion_client @203 - do_sema_b_wait_intern @204 - do_to_ping @205 - downmix_float @206 - downmix_int @207 - eMeans @208 - ec_dec_bit_logp @209 - ec_dec_bits @210 - ec_dec_icdf @211 - ec_dec_init @212 - ec_dec_uint @213 - ec_dec_update @214 - ec_decode @215 - ec_decode_bin @216 - ec_enc_bit_logp @217 - ec_enc_bits @218 - ec_enc_done @219 - ec_enc_icdf @220 - ec_enc_init @221 - ec_enc_patch_initial_bits @222 - ec_enc_shrink @223 - ec_enc_uint @224 - ec_encode @225 - ec_encode_bin @226 - ec_laplace_decode @227 - ec_laplace_encode @228 - ec_tell_frac @229 - encode_pulses @230 - encode_size @231 - encrypt_data @232 - encrypt_data_symmetric @233 - encrypt_precompute @234 - energy_VAD @235 - extract_ext_header @236 - extract_header @237 - file_control @238 - file_data @239 - file_dataremaining @240 - file_sendrequest @241 - format_output @242 - frame_size_select @243 - friend_ips @244 - friendreq_init @245 - get_close_nodes @246 - get_connection_dht_key @247 - get_friendlist @248 - get_nospam @249 - get_num_online_friends @250 - get_shared_key @251 - getaddress @252 - getclient_id @253 - getfriend_id @254 - getname @255 - getself_name @256 - group_action_send @257 - group_client_names @258 - group_message_send @259 - group_names @260 - group_newpeer @261 - group_number_peers @262 - group_numpeers @263 - group_peername @264 - group_sendaction @265 - group_sendmessage @266 - haar1 @267 - handle_groupchatpacket @268 - handle_request @269 - host_to_net @270 - hysteresis_decision @271 - id_closest @272 - id_copy @273 - id_equal @274 - increment_nonce @275 - increment_nonce_number @276 - init_audio_decoder @277 - init_audio_encoder @278 - init_caps @279 - init_video_decoder @280 - init_video_encoder @281 - invite_friend @282 - invoke_callback @283 - ip_copy @284 - ip_equal @285 - ip_init @286 - ip_isset @287 - ip_ntoa @288 - ip_pack @289 - ip_reset @290 - ip_unpack @291 - ipport_copy @292 - ipport_equal @293 - ipport_isset @294 - ipport_pack @295 - ipport_unpack @296 - is_timeout @297 - isqrt32 @298 - join_groupchat @299 - kill_Assoc @300 - kill_DHT @301 - kill_TCP_connection @302 - kill_TCP_server @303 - kill_groupchat @304 - kill_messenger @305 - kill_net_crypto @306 - kill_networking @307 - kill_onion @308 - kill_onion_announce @309 - kill_onion_client @310 - kill_ping @311 - kill_sock @312 - load_keys @313 - load_state @314 - m_addfriend @315 - m_addfriend_norequest @316 - m_callback_action @317 - m_callback_connectionstatus @318 - m_callback_connectionstatus_internal_av @319 - m_callback_friendmessage @320 - m_callback_friendrequest @321 - m_callback_group_action @322 - m_callback_group_invite @323 - m_callback_group_message @324 - m_callback_group_namelistchange @325 - m_callback_msi_packet @326 - m_callback_namechange @327 - m_callback_read_receipt @328 - m_callback_statusmessage @329 - m_callback_typingchange @330 - m_callback_userstatus @331 - m_copy_self_statusmessage @332 - m_copy_statusmessage @333 - m_delfriend @334 - m_friend_exists @335 - m_get_friend_connectionstatus @336 - m_get_istyping @337 - m_get_last_online @338 - m_get_name_size @339 - m_get_self_name_size @340 - m_get_self_statusmessage_size @341 - m_get_self_userstatus @342 - m_get_statusmessage_size @343 - m_get_userstatus @344 - m_group_peername @345 - m_msi_packet @346 - m_sendaction @347 - m_sendaction_withid @348 - m_sendmessage @349 - m_sendmessage_withid @350 - m_set_sends_receipts @351 - m_set_statusmessage @352 - m_set_userstatus @353 - m_set_usertyping @354 - messenger_load @355 - messenger_run_interval @356 - messenger_save @357 - messenger_size @358 - mlp_process @359 - msg_parse @360 - msi_answer @361 - msi_cancel @362 - msi_change_csettings @363 - msi_hangup @364 - msi_init_session @365 - msi_invite @366 - msi_msg_get_csettings @367 - msi_msg_set_callid @368 - msi_msg_set_csettings @369 - msi_msg_set_reason @370 - msi_new_message @371 - msi_register_callback @372 - msi_reject @373 - msi_stopcall @374 - msi_terminate_session @375 - mutex_print @376 - mutex_print_set @377 - net @378 - networking_at_startup @379 - networking_poll @380 - networking_registerhandler @381 - new_Assoc @382 - new_Assoc_default @383 - new_DHT @384 - new_TCP_connection @385 - new_TCP_server @386 - new_connection_handler @387 - new_crypto_connection @388 - new_filesender @389 - new_groupchat @390 - new_keys @391 - new_messenger @392 - new_net_crypto @393 - new_networking @394 - new_nonce @395 - new_onion @396 - new_onion_announce @397 - new_onion_client @398 - new_ping @399 - new_symmetric_key @400 - normalise_bands @401 - onion_add_path_node @402 - onion_addfriend @403 - onion_backup_nodes @404 - onion_delfriend @405 - onion_friend_num @406 - onion_getfriend_DHT_pubkey @407 - onion_getfriendip @408 - onion_isconnected @409 - onion_response_handler @410 - onion_send_1 @411 - onion_set_friend_DHT_pubkey @412 - onion_set_friend_online @413 - oniondata_registerhandler @414 - oob_data_handler @415 - optimize_framesize @416 - opus_custom_decoder_ctl @417 - opus_custom_encoder_ctl @418 - opus_custom_mode_create @419 - opus_decode @420 - opus_decode_float @421 - opus_decode_native @422 - opus_decoder_create @423 - opus_decoder_ctl @424 - opus_decoder_destroy @425 - opus_decoder_get_nb_samples @426 - opus_decoder_get_size @427 - opus_decoder_init @428 - opus_encode @429 - opus_encode_float @430 - opus_encode_native @431 - opus_encoder_create @432 - opus_encoder_ctl @433 - opus_encoder_destroy @434 - opus_encoder_get_size @435 - opus_encoder_init @436 - opus_fft @437 - opus_get_version_string @438 - opus_ifft @439 - opus_multistream_packet_pad @440 - opus_multistream_packet_unpad @441 - opus_packet_get_bandwidth @442 - opus_packet_get_nb_channels @443 - opus_packet_get_nb_frames @444 - opus_packet_get_nb_samples @445 - opus_packet_get_samples_per_frame @446 - opus_packet_pad @447 - opus_packet_parse @448 - opus_packet_parse_impl @449 - opus_packet_unpad @450 - opus_pcm_soft_clip @451 - opus_repacketizer_cat @452 - opus_repacketizer_create @453 - opus_repacketizer_destroy @454 - opus_repacketizer_get_nb_frames @455 - opus_repacketizer_get_size @456 - opus_repacketizer_init @457 - opus_repacketizer_out @458 - opus_repacketizer_out_range @459 - opus_repacketizer_out_range_impl @460 - opus_strerror @461 - pack_nodes @462 - parse_recv @463 - parse_send @464 - patch_transient_decision @465 - ping_array_add @466 - ping_array_check @467 - ping_array_free_all @468 - ping_array_init @469 - pitch_downsample @470 - pitch_search @471 - pthread_attr_destroy @472 - pthread_attr_getdetachstate @473 - pthread_attr_getinheritsched @474 - pthread_attr_getscope @475 - pthread_attr_getstackaddr @476 - pthread_attr_getstacksize @477 - pthread_attr_init @478 - pthread_attr_setdetachstate @479 - pthread_attr_setinheritsched @480 - pthread_attr_setscope @481 - pthread_attr_setstackaddr @482 - pthread_attr_setstacksize @483 - pthread_cancel @484 - pthread_cond_broadcast @485 - pthread_cond_destroy @486 - pthread_cond_init @487 - pthread_cond_signal @488 - pthread_cond_timedwait @489 - pthread_cond_timedwait_relative @490 - pthread_cond_wait @491 - pthread_condattr_destroy @492 - pthread_condattr_getclock @493 - pthread_condattr_getpshared @494 - pthread_condattr_init @495 - pthread_condattr_setclock @496 - pthread_condattr_setpshared @497 - pthread_create @498 - pthread_create_wrapper @499 - pthread_delay_np @500 - pthread_delay_np_ms @501 - pthread_detach @502 - pthread_equal @503 - pthread_exit @504 - pthread_get_concurrency @505 - pthread_getclean @506 - pthread_getconcurrency @507 - pthread_getevent @508 - pthread_gethandle @509 - pthread_getspecific @510 - pthread_join @511 - pthread_key_create @512 - pthread_key_delete @513 - pthread_kill @514 - pthread_mutex_destroy @515 - pthread_mutex_init @516 - pthread_mutex_lock @517 - pthread_mutex_timedlock @518 - pthread_mutex_trylock @519 - pthread_mutex_unlock @520 - pthread_mutexattr_destroy @521 - pthread_mutexattr_getprioceiling @522 - pthread_mutexattr_getprotocol @523 - pthread_mutexattr_getpshared @524 - pthread_mutexattr_gettype @525 - pthread_mutexattr_init @526 - pthread_mutexattr_setprioceiling @527 - pthread_mutexattr_setprotocol @528 - pthread_mutexattr_setpshared @529 - pthread_mutexattr_settype @530 - pthread_num_processors_np @531 - pthread_once @532 - pthread_rwlock_destroy @533 - pthread_rwlock_init @534 - pthread_rwlock_rdlock @535 - pthread_rwlock_timedrdlock @536 - pthread_rwlock_timedwrlock @537 - pthread_rwlock_tryrdlock @538 - pthread_rwlock_trywrlock @539 - pthread_rwlock_unlock @540 - pthread_rwlock_wrlock @541 - pthread_rwlockattr_destroy @542 - pthread_rwlockattr_getpshared @543 - pthread_rwlockattr_init @544 - pthread_rwlockattr_setpshared @545 - pthread_self @546 - pthread_set_concurrency @547 - pthread_set_num_processors_np @548 - pthread_setcancelstate @549 - pthread_setcanceltype @550 - pthread_setconcurrency @551 - pthread_setspecific @552 - pthread_spin_destroy @553 - pthread_spin_init @554 - pthread_spin_lock @555 - pthread_spin_trylock @556 - pthread_spin_unlock @557 - pthread_testcancel @558 - pthread_timechange_handler_np @559 - pthread_tls_init @560 - public_key_valid @561 - quant_all_bands @562 - quant_coarse_energy @563 - quant_energy_finalise @564 - quant_fine_energy @565 - queue @566 - random_64b @567 - random_int @568 - random_node @569 - random_nodes_path @570 - random_nonce @571 - randombytes @572 - randombytes_buf @573 - randombytes_close @574 - randombytes_implementation_name @575 - randombytes_random @576 - randombytes_set_implementation @577 - randombytes_stir @578 - randombytes_sysrandom @579 - randombytes_sysrandom_buf @580 - randombytes_sysrandom_close @581 - randombytes_sysrandom_implementation @582 - randombytes_sysrandom_implementation_name @583 - randombytes_sysrandom_stir @584 - randombytes_sysrandom_uniform @585 - randombytes_uniform @586 - read_TCP_length @587 - read_TCP_packet @588 - read_packet_TCP_secure_connection @589 - realloc_friendlist @590 - reconfigure_video_encoder_bitrate @591 - reconfigure_video_encoder_resolution @592 - recv_tcp_relay_handler @593 - remove_doubling @594 - remove_request_received @595 - renormalise_vector @596 - resampling_factor @597 - route_packet @598 - route_tofriend @599 - routing_data_handler @600 - routing_response_handler @601 - routing_status_handler @602 - rtp_free_msg @603 - rtp_handle_packet @604 - rtp_init_session @605 - rtp_new_message @606 - rtp_send_msg @607 - rtp_terminate_session @608 - run_analysis @609 - rwl_print @610 - rwl_print_set @611 - save_keys @612 - send_LANdiscovery @613 - send_announce_request @614 - send_custom_lossless_packet @615 - send_custom_lossy_packet @616 - send_data @617 - send_data_request @618 - send_disconnect_request @619 - send_friendrequest @620 - send_lossy_cryptpacket @621 - send_onion_data @622 - send_onion_packet @623 - send_onion_request @624 - send_onion_response @625 - send_oob_packet @626 - send_ping_request @627 - send_reponse @628 - send_routing_request @629 - send_tcp_onion_request @630 - sendpacket @631 - set_callback_handle_recv_1 @632 - set_connection_dht_public_key @633 - set_direct_ip_port @634 - set_filter_function @635 - set_nick @636 - set_nospam @637 - set_socket_dualstack @638 - set_socket_nonblock @639 - set_socket_nosigpipe @640 - set_tcp_connection_number @641 - setfriendname @642 - setname @643 - silk_A2NLSF @644 - silk_A2NLSF_FLP @645 - silk_CB_lags_stage2 @646 - silk_CB_lags_stage2_10_ms @647 - silk_CB_lags_stage3 @648 - silk_CB_lags_stage3_10_ms @649 - silk_CNG @650 - silk_CNG_Reset @651 - silk_Decode @652 - silk_Encode @653 - silk_Get_Decoder_Size @654 - silk_Get_Encoder_Size @655 - silk_HP_variable_cutoff @656 - silk_InitDecoder @657 - silk_InitEncoder @658 - silk_LBRR_flags_iCDF_ptr @659 - silk_LPC_analysis_filter @660 - silk_LPC_analysis_filter_FLP @661 - silk_LPC_inverse_pred_gain @662 - silk_LPC_inverse_pred_gain_FLP @663 - silk_LP_variable_cutoff @664 - silk_LSFCosTab_FIX_Q12 @665 - silk_LTPScales_table_Q14 @666 - silk_LTP_analysis_filter_FLP @667 - silk_LTP_gain_BITS_Q5_ptrs @668 - silk_LTP_gain_iCDF_ptrs @669 - silk_LTP_gain_middle_avg_RD_Q14 @670 - silk_LTP_per_index_iCDF @671 - silk_LTP_scale_ctrl_FLP @672 - silk_LTP_vq_gain_ptrs_Q7 @673 - silk_LTP_vq_ptrs_Q7 @674 - silk_LTP_vq_sizes @675 - silk_LTPscale_iCDF @676 - silk_Lag_range_stage3 @677 - silk_Lag_range_stage3_10_ms @678 - silk_NLSF2A @679 - silk_NLSF2A_FLP @680 - silk_NLSF_CB_NB_MB @681 - silk_NLSF_CB_WB @682 - silk_NLSF_EXT_iCDF @683 - silk_NLSF_VQ @684 - silk_NLSF_VQ_weights_laroia @685 - silk_NLSF_decode @686 - silk_NLSF_del_dec_quant @687 - silk_NLSF_encode @688 - silk_NLSF_interpolation_factor_iCDF @689 - silk_NLSF_stabilize @690 - silk_NLSF_unpack @691 - silk_NSQ @692 - silk_NSQ_del_dec @693 - silk_NSQ_wrapper_FLP @694 - silk_PLC @695 - silk_PLC_Reset @696 - silk_PLC_glue_frames @697 - silk_Quantization_Offsets_Q10 @698 - silk_Resampler_1_2_COEFS @699 - silk_Resampler_1_3_COEFS @700 - silk_Resampler_1_4_COEFS @701 - silk_Resampler_1_6_COEFS @702 - silk_Resampler_2_3_COEFS @703 - silk_Resampler_2_3_COEFS_LQ @704 - silk_Resampler_3_4_COEFS @705 - silk_SNR_table_Q1 @706 - silk_TargetRate_table_MB @707 - silk_TargetRate_table_NB @708 - silk_TargetRate_table_WB @709 - silk_Transition_LP_A_Q28 @710 - silk_Transition_LP_B_Q28 @711 - silk_VAD_GetSA_Q8 @712 - silk_VAD_Init @713 - silk_VQ_WMat_EC @714 - silk_ana_filt_bank_1 @715 - silk_apply_sine_window_FLP @716 - silk_autocorrelation_FLP @717 - silk_biquad_alt @718 - silk_burg_modified_FLP @719 - silk_bwexpander @720 - silk_bwexpander_32 @721 - silk_bwexpander_FLP @722 - silk_control_SNR @723 - silk_control_audio_bandwidth @724 - silk_control_encoder @725 - silk_corrMatrix_FLP @726 - silk_corrVector_FLP @727 - silk_decode_core @728 - silk_decode_frame @729 - silk_decode_indices @730 - silk_decode_parameters @731 - silk_decode_pitch @732 - silk_decode_pulses @733 - silk_decode_signs @734 - silk_decoder_set_fs @735 - silk_delta_gain_iCDF @736 - silk_encode_do_VAD_FLP @737 - silk_encode_frame_FLP @738 - silk_encode_indices @739 - silk_encode_pulses @740 - silk_encode_signs @741 - silk_energy_FLP @742 - silk_find_LPC_FLP @743 - silk_find_LTP_FLP @744 - silk_find_pitch_lags_FLP @745 - silk_find_pred_coefs_FLP @746 - silk_gain_iCDF @747 - silk_gains_ID @748 - silk_gains_dequant @749 - silk_gains_quant @750 - silk_init_decoder @751 - silk_init_encoder @752 - silk_inner_prod_aligned_scale @753 - silk_inner_product_FLP @754 - silk_insertion_sort_decreasing_FLP @755 - silk_insertion_sort_increasing @756 - silk_insertion_sort_increasing_all_values_int16 @757 - silk_interpolate @758 - silk_k2a_FLP @759 - silk_levinsondurbin_FLP @760 - silk_lin2log @761 - silk_log2lin @762 - silk_lsb_iCDF @763 - silk_max_pulses_table @764 - silk_nb_cbk_searchs_stage3 @765 - silk_noise_shape_analysis_FLP @766 - silk_pitch_analysis_core_FLP @767 - silk_pitch_contour_10_ms_NB_iCDF @768 - silk_pitch_contour_10_ms_iCDF @769 - silk_pitch_contour_NB_iCDF @770 - silk_pitch_contour_iCDF @771 - silk_pitch_delta_iCDF @772 - silk_pitch_lag_iCDF @773 - silk_prefilter_FLP @774 - silk_process_NLSFs @775 - silk_process_NLSFs_FLP @776 - silk_process_gains_FLP @777 - silk_pulses_per_block_BITS_Q5 @778 - silk_pulses_per_block_iCDF @779 - silk_quant_LTP_gains @780 - silk_quant_LTP_gains_FLP @781 - silk_rate_levels_BITS_Q5 @782 - silk_rate_levels_iCDF @783 - silk_regularize_correlations_FLP @784 - silk_resampler @785 - silk_resampler_down2 @786 - silk_resampler_down2_3 @787 - silk_resampler_frac_FIR_12 @788 - silk_resampler_init @789 - silk_resampler_private_AR2 @790 - silk_resampler_private_IIR_FIR @791 - silk_resampler_private_down_FIR @792 - silk_resampler_private_up2_HQ @793 - silk_resampler_private_up2_HQ_wrapper @794 - silk_residual_energy_FLP @795 - silk_residual_energy_covar_FLP @796 - silk_scale_copy_vector_FLP @797 - silk_scale_vector_FLP @798 - silk_schur_FLP @799 - silk_shell_code_table0 @800 - silk_shell_code_table1 @801 - silk_shell_code_table2 @802 - silk_shell_code_table3 @803 - silk_shell_code_table_offsets @804 - silk_shell_decoder @805 - silk_shell_encoder @806 - silk_sigm_Q15 @807 - silk_sign_iCDF @808 - silk_solve_LDL_FLP @809 - silk_stereo_LR_to_MS @810 - silk_stereo_MS_to_LR @811 - silk_stereo_decode_mid_only @812 - silk_stereo_decode_pred @813 - silk_stereo_encode_mid_only @814 - silk_stereo_encode_pred @815 - silk_stereo_find_predictor @816 - silk_stereo_only_code_mid_iCDF @817 - silk_stereo_pred_joint_iCDF @818 - silk_stereo_pred_quant_Q13 @819 - silk_stereo_quant_pred @820 - silk_sum_sqr_shift @821 - silk_type_offset_VAD_iCDF @822 - silk_type_offset_no_VAD_iCDF @823 - silk_uniform3_iCDF @824 - silk_uniform4_iCDF @825 - silk_uniform5_iCDF @826 - silk_uniform6_iCDF @827 - silk_uniform8_iCDF @828 - silk_warped_autocorrelation_FLP @829 - sock_valid @830 - sodium_bin2hex @831 - sodium_hex2bin @832 - sodium_init @833 - sodium_memcmp @834 - sodium_memzero @835 - sodium_mlock @836 - sodium_munlock @837 - sodium_runtime_get_cpu_features @838 - sodium_runtime_has_neon @839 - sodium_runtime_has_sse2 @840 - sodium_runtime_has_sse3 @841 - spreading_decision @842 - stereo_itheta @843 - tcp_onion_response_handler @844 - terminate_queue @845 - tf_select_table @846 - thread_print @847 - thread_print_set @848 - to_host_family @849 - to_net_family @850 - tonality_analysis @851 - tonality_get_info @852 - tox_add_friend @853 - tox_add_friend_norequest @854 - tox_add_groupchat @855 - tox_bootstrap_from_address @856 - tox_callback_connection_status @857 - tox_callback_file_control @858 - tox_callback_file_data @859 - tox_callback_file_send_request @860 - tox_callback_friend_action @861 - tox_callback_friend_message @862 - tox_callback_friend_request @863 - tox_callback_group_action @864 - tox_callback_group_invite @865 - tox_callback_group_message @866 - tox_callback_group_namelist_change @867 - tox_callback_name_change @868 - tox_callback_read_receipt @869 - tox_callback_status_message @870 - tox_callback_typing_change @871 - tox_callback_user_status @872 - tox_count_chatlist @873 - tox_count_friendlist @874 - tox_decrypt_dns3_TXT @875 - tox_del_friend @876 - tox_del_groupchat @877 - tox_dns3_kill @878 - tox_dns3_new @879 - tox_do @880 - tox_do_interval @881 - tox_file_data_remaining @882 - tox_file_data_size @883 - tox_file_send_control @884 - tox_file_send_data @885 - tox_friend_exists @886 - tox_generate_dns3_string @887 - tox_get_address @888 - tox_get_chatlist @889 - tox_get_client_id @890 - tox_get_friend_connection_status @891 - tox_get_friend_number @892 - tox_get_friendlist @893 - tox_get_is_typing @894 - tox_get_keys @895 - tox_get_last_online @896 - tox_get_name @897 - tox_get_name_size @898 - tox_get_nospam @899 - tox_get_num_online_friends @900 - tox_get_self_name @901 - tox_get_self_name_size @902 - tox_get_self_status_message @903 - tox_get_self_status_message_size @904 - tox_get_self_user_status @905 - tox_get_status_message @906 - tox_get_status_message_size @907 - tox_get_user_status @908 - tox_group_action_send @909 - tox_group_get_names @910 - tox_group_message_send @911 - tox_group_number_peers @912 - tox_group_peername @913 - tox_invite_friend @914 - tox_isconnected @915 - tox_join_groupchat @916 - tox_kill @917 - tox_load @918 - tox_new @919 - tox_new_file_sender @920 - tox_save @921 - tox_send_action @922 - tox_send_action_withid @923 - tox_send_message @924 - tox_send_message_withid @925 - tox_set_name @926 - tox_set_nospam @927 - tox_set_status_message @928 - tox_set_user_is_typing @929 - tox_set_user_status @930 - tox_size @931 - toxav_answer @932 - toxav_call @933 - toxav_cancel @934 - toxav_capability_supported @935 - toxav_change_settings @936 - toxav_get_call_state @937 - toxav_get_peer_csettings @938 - toxav_get_peer_id @939 - toxav_get_tox @940 - toxav_handle_packet @941 - toxav_hangup @942 - toxav_has_activity @943 - toxav_kill @944 - toxav_kill_transmission @945 - toxav_new @946 - toxav_prepare_audio_frame @947 - toxav_prepare_transmission @948 - toxav_prepare_video_frame @949 - toxav_register_audio_recv_callback @950 - toxav_register_callstate_callback @951 - toxav_register_video_recv_callback @952 - toxav_reject @953 - toxav_send_audio @954 - toxav_send_video @955 - toxav_stop_call @956 - unix_time @957 - unix_time_update @958 - unpack_nodes @959 - unquant_coarse_energy @960 - unquant_energy_finalise @961 - unquant_fine_energy @962 - vp8_ac2quant @963 - vp8_ac_uv_quant @964 - vp8_ac_yquant @965 - vp8_activity_masking @966 - vp8_adjust_key_frame_context @967 - vp8_alloc_compressor_data @968 - vp8_alloc_frame_buffers @969 - vp8_auto_select_speed @970 - vp8_bilinear_filters_x86_4 @971 - vp8_bilinear_filters_x86_8 @972 - vp8_bilinear_predict16x16 @973 - vp8_bilinear_predict16x16_mmx @974 - vp8_bilinear_predict16x16_sse2 @975 - vp8_bilinear_predict16x16_ssse3 @976 - vp8_bilinear_predict4x4_mmx @977 - vp8_bilinear_predict8x4_mmx @978 - vp8_bilinear_predict8x8 @979 - vp8_bilinear_predict8x8_mmx @980 - vp8_bilinear_predict8x8_sse2 @981 - vp8_bilinear_predict8x8_ssse3 @982 - vp8_bits_per_mb @983 - vp8_blend_b_c @984 - vp8_blend_mb_inner_c @985 - vp8_blend_mb_outer_c @986 - vp8_block2above @987 - vp8_block2left @988 - vp8_block_error_c @989 - vp8_block_error_mmx @990 - vp8_block_error_xmm @991 - vp8_bmode_encodings @992 - vp8_bmode_prob @993 - vp8_bmode_tree @994 - vp8_build_block_doffsets @995 - vp8_build_block_offsets @996 - vp8_build_component_cost_table @997 - vp8_build_inter16x16_predictors_mb @998 - vp8_build_inter16x16_predictors_mbuv @999 - vp8_build_inter16x16_predictors_mby @1000 - vp8_build_inter4x4_predictors_mbuv @1001 - vp8_build_inter_predictors_b @1002 - vp8_build_inter_predictors_mb @1003 - vp8_build_intra_predictors_mbuv_s @1004 - vp8_build_intra_predictors_mbuv_s_sse2 @1005 - vp8_build_intra_predictors_mbuv_s_ssse3 @1006 - vp8_build_intra_predictors_mby_s @1007 - vp8_build_intra_predictors_mby_s_sse2 @1008 - vp8_build_intra_predictors_mby_s_ssse3 @1009 - vp8_cal_sad @1010 - vp8_calc_ref_frame_costs @1011 - vp8_calc_ss_err @1012 - vp8_change_config @1013 - vp8_clear_system_state_c @1014 - vp8_coef_bands @1015 - vp8_coef_encodings @1016 - vp8_coef_tree @1017 - vp8_coef_update_probs @1018 - vp8_compute_frame_size_bounds @1019 - vp8_convert_rfct_to_prob @1020 - vp8_copy32xn @1021 - vp8_copy32xn_c @1022 - vp8_copy32xn_sse2 @1023 - vp8_copy32xn_sse3 @1024 - vp8_copy_and_extend_frame @1025 - vp8_copy_and_extend_frame_with_rect @1026 - vp8_copy_mem16x16_c @1027 - vp8_copy_mem16x16_mmx @1028 - vp8_copy_mem16x16_sse2 @1029 - vp8_copy_mem8x4_c @1030 - vp8_copy_mem8x4_mmx @1031 - vp8_copy_mem8x8_c @1032 - vp8_copy_mem8x8_mmx @1033 - vp8_cost_mv_ref @1034 - vp8_cost_tokens @1035 - vp8_cost_tokens2 @1036 - vp8_create_common @1037 - vp8_create_compressor @1038 - vp8_create_decoder_instances @1039 - vp8_ctf_maps @1040 - vp8_dc2quant @1041 - vp8_dc_only_idct_add_c @1042 - vp8_dc_only_idct_add_mmx @1043 - vp8_dc_quant @1044 - vp8_dc_uv_quant @1045 - vp8_dct_value_cost_ptr @1046 - vp8_dct_value_tokens_ptr @1047 - vp8_de_alloc_frame_buffers @1048 - vp8_deblock @1049 - vp8_decode_frame @1050 - vp8_decode_mb_tokens @1051 - vp8_decode_mode_mvs @1052 - vp8_decoder_create_threads @1053 - vp8_decoder_remove_threads @1054 - vp8_default_bmode_probs @1055 - vp8_default_coef_probs @1056 - vp8_default_inv_zig_zag @1057 - vp8_default_mv_context @1058 - vp8_default_zig_zag1d @1059 - vp8_default_zig_zag_mask @1060 - vp8_denoiser_allocate @1061 - vp8_denoiser_denoise_mb @1062 - vp8_denoiser_filter_c @1063 - vp8_denoiser_filter_sse2 @1064 - vp8_denoiser_free @1065 - vp8_dequant_idct_add_mmx @1066 - vp8_dequant_idct_add_uv_block_mmx @1067 - vp8_dequant_idct_add_uv_block_sse2 @1068 - vp8_dequant_idct_add_y_block_mmx @1069 - vp8_dequant_idct_add_y_block_sse2 @1070 - vp8_dequantize_b_impl_mmx @1071 - vp8_dequantize_b_mmx @1072 - vp8_diamond_search_sad @1073 - vp8_diamond_search_sad_c @1074 - vp8_diamond_search_sadx4 @1075 - vp8_encode_frame @1076 - vp8_encode_inter16x16 @1077 - vp8_encode_inter16x16y @1078 - vp8_encode_intra @1079 - vp8_encode_intra16x16mbuv @1080 - vp8_encode_intra16x16mby @1081 - vp8_encode_intra4x4block @1082 - vp8_encode_intra4x4mby @1083 - vp8_encode_motion_vector @1084 - vp8_encode_value @1085 - vp8_end_first_pass @1086 - vp8_end_second_pass @1087 - vp8_estimate_entropy_savings @1088 - vp8_extend_mb_row @1089 - vp8_extra_bits @1090 - vp8_fast_quantize_b @1091 - vp8_fast_quantize_b_c @1092 - vp8_fast_quantize_b_pair_c @1093 - vp8_fast_quantize_b_sse2 @1094 - vp8_fast_quantize_b_ssse3 @1095 - vp8_filter_block1d16_h6_only_sse2 @1096 - vp8_filter_block1d16_h6_sse2 @1097 - vp8_filter_block1d16_h6_ssse3 @1098 - vp8_filter_block1d16_v6_sse2 @1099 - vp8_filter_block1d16_v6_ssse3 @1100 - vp8_filter_block1d4_h6_ssse3 @1101 - vp8_filter_block1d4_v6_ssse3 @1102 - vp8_filter_block1d8_h6_only_sse2 @1103 - vp8_filter_block1d8_h6_sse2 @1104 - vp8_filter_block1d8_h6_ssse3 @1105 - vp8_filter_block1d8_v6_only_sse2 @1106 - vp8_filter_block1d8_v6_sse2 @1107 - vp8_filter_block1d8_v6_ssse3 @1108 - vp8_filter_block1d_h6_mmx @1109 - vp8_filter_block1dc_v6_mmx @1110 - vp8_filter_block2d_bil4x4_var_mmx @1111 - vp8_filter_block2d_bil_var_mmx @1112 - vp8_filter_block2d_bil_var_sse2 @1113 - vp8_filter_block2d_bil_var_ssse3 @1114 - vp8_filter_by_weight16x16_c @1115 - vp8_filter_by_weight16x16_sse2 @1116 - vp8_filter_by_weight4x4_c @1117 - vp8_filter_by_weight8x8_c @1118 - vp8_filter_by_weight8x8_sse2 @1119 - vp8_find_best_half_pixel_step @1120 - vp8_find_best_sub_pixel_step @1121 - vp8_find_best_sub_pixel_step_iteratively @1122 - vp8_find_near_mvs @1123 - vp8_find_near_mvs_bias @1124 - vp8_first_pass @1125 - vp8_fix_contexts @1126 - vp8_full_search_sad @1127 - vp8_full_search_sad_c @1128 - vp8_full_search_sadx3 @1129 - vp8_full_search_sadx8 @1130 - vp8_gaussian @1131 - vp8_get16x16var_sse2 @1132 - vp8_get4x4sse_cs_c @1133 - vp8_get4x4sse_cs_mmx @1134 - vp8_get4x4var_mmx @1135 - vp8_get8x8var_mmx @1136 - vp8_get8x8var_sse2 @1137 - vp8_get_compressed_data @1138 - vp8_get_inter_mbpred_error @1139 - vp8_get_mb_ss_mmx @1140 - vp8_get_mb_ss_sse2 @1141 - vp8_get_preview_raw_frame @1142 - vp8_get_quantizer @1143 - vp8_get_reference @1144 - vp8_gf_boost_qadjustment @1145 - vp8_half_horiz_variance16x_h_sse2 @1146 - vp8_half_horiz_variance8x_h_sse2 @1147 - vp8_half_horiz_vert_variance16x_h_sse2 @1148 - vp8_half_horiz_vert_variance8x_h_sse2 @1149 - vp8_half_vert_variance16x_h_sse2 @1150 - vp8_half_vert_variance8x_h_sse2 @1151 - vp8_hex_search @1152 - vp8_horizontal_line_2_1_scale_c @1153 - vp8_horizontal_line_5_3_scale_c @1154 - vp8_horizontal_line_5_4_scale_c @1155 - vp8_idct_dequant_0_2x_sse2 @1156 - vp8_idct_dequant_dc_0_2x_sse2 @1157 - vp8_idct_dequant_dc_full_2x_sse2 @1158 - vp8_idct_dequant_full_2x_sse2 @1159 - vp8_init3smotion_compensation @1160 - vp8_init_dsmotion_compensation @1161 - vp8_init_first_pass @1162 - vp8_init_mbmode_probs @1163 - vp8_init_mode_costs @1164 - vp8_init_second_pass @1165 - vp8_initialize_rd_consts @1166 - vp8_intra4x4_predict_c @1167 - vp8_intra_pred_uv_dc128_mmx @1168 - vp8_intra_pred_uv_dc_mmx2 @1169 - vp8_intra_pred_uv_dcleft_mmx2 @1170 - vp8_intra_pred_uv_dctop_mmx2 @1171 - vp8_intra_pred_uv_ho_mmx2 @1172 - vp8_intra_pred_uv_ho_ssse3 @1173 - vp8_intra_pred_uv_tm_sse2 @1174 - vp8_intra_pred_uv_tm_ssse3 @1175 - vp8_intra_pred_uv_ve_mmx @1176 - vp8_intra_pred_y_dc128_sse2 @1177 - vp8_intra_pred_y_dc_sse2 @1178 - vp8_intra_pred_y_dcleft_sse2 @1179 - vp8_intra_pred_y_dctop_sse2 @1180 - vp8_intra_pred_y_ho_sse2 @1181 - vp8_intra_pred_y_tm_sse2 @1182 - vp8_intra_pred_y_tm_ssse3 @1183 - vp8_intra_pred_y_ve_sse2 @1184 - vp8_kf_bmode_prob @1185 - vp8_kf_uv_mode_prob @1186 - vp8_kf_ymode_encodings @1187 - vp8_kf_ymode_prob @1188 - vp8_kf_ymode_tree @1189 - vp8_lookahead_depth @1190 - vp8_lookahead_destroy @1191 - vp8_lookahead_init @1192 - vp8_lookahead_peek @1193 - vp8_lookahead_pop @1194 - vp8_lookahead_push @1195 - vp8_loop_filter_bh_mmx @1196 - vp8_loop_filter_bh_sse2 @1197 - vp8_loop_filter_bh_y_sse2 @1198 - vp8_loop_filter_bhs_mmx @1199 - vp8_loop_filter_bhs_sse2 @1200 - vp8_loop_filter_bv_mmx @1201 - vp8_loop_filter_bv_sse2 @1202 - vp8_loop_filter_bv_y_sse2 @1203 - vp8_loop_filter_bvs_mmx @1204 - vp8_loop_filter_bvs_sse2 @1205 - vp8_loop_filter_frame @1206 - vp8_loop_filter_frame_init @1207 - vp8_loop_filter_frame_yonly @1208 - vp8_loop_filter_horizontal_edge_mmx @1209 - vp8_loop_filter_horizontal_edge_uv_sse2 @1210 - vp8_loop_filter_init @1211 - vp8_loop_filter_mbh_mmx @1212 - vp8_loop_filter_mbh_sse2 @1213 - vp8_loop_filter_mbv_mmx @1214 - vp8_loop_filter_mbv_sse2 @1215 - vp8_loop_filter_partial_frame @1216 - vp8_loop_filter_row_normal @1217 - vp8_loop_filter_row_simple @1218 - vp8_loop_filter_simple_horizontal_edge_mmx @1219 - vp8_loop_filter_simple_horizontal_edge_sse2 @1220 - vp8_loop_filter_simple_vertical_edge_mmx @1221 - vp8_loop_filter_simple_vertical_edge_sse2 @1222 - vp8_loop_filter_update_sharpness @1223 - vp8_loop_filter_vertical_edge_mmx @1224 - vp8_loop_filter_vertical_edge_uv_sse2 @1225 - vp8_loopfilter_frame @1226 - vp8_machine_specific_config @1227 - vp8_mb_feature_data_bits @1228 - vp8_mb_init_dequantizer @1229 - vp8_mbblock_error_c @1230 - vp8_mbblock_error_mmx_impl @1231 - vp8_mbblock_error_xmm @1232 - vp8_mbblock_error_xmm_impl @1233 - vp8_mbloop_filter_horizontal_edge_mmx @1234 - vp8_mbloop_filter_horizontal_edge_sse2 @1235 - vp8_mbloop_filter_horizontal_edge_uv_sse2 @1236 - vp8_mbloop_filter_vertical_edge_mmx @1237 - vp8_mbloop_filter_vertical_edge_sse2 @1238 - vp8_mbloop_filter_vertical_edge_uv_sse2 @1239 - vp8_mbpost_proc_across_ip_c @1240 - vp8_mbpost_proc_across_ip_xmm @1241 - vp8_mbpost_proc_down_c @1242 - vp8_mbpost_proc_down_xmm @1243 - vp8_mbsplit_count @1244 - vp8_mbsplit_encodings @1245 - vp8_mbsplit_offset @1246 - vp8_mbsplit_probs @1247 - vp8_mbsplit_tree @1248 - vp8_mbsplits @1249 - vp8_mbuverror_c @1250 - vp8_mbuverror_mmx_impl @1251 - vp8_mbuverror_xmm @1252 - vp8_mbuverror_xmm_impl @1253 - vp8_mode_contexts @1254 - vp8_mode_order @1255 - vp8_mse16x16_wmt @1256 - vp8_mse2psnr @1257 - vp8_multiframe_quality_enhance @1258 - vp8_mv_bit_cost @1259 - vp8_mv_cont @1260 - vp8_mv_pred @1261 - vp8_mv_ref_encoding_array @1262 - vp8_mv_ref_probs @1263 - vp8_mv_ref_tree @1264 - vp8_mv_update_probs @1265 - vp8_new_framerate @1266 - vp8_norm @1267 - vp8_optimize_mbuv @1268 - vp8_optimize_mby @1269 - vp8_pack_bitstream @1270 - vp8_pack_tokens_c @1271 - vp8_pick_frame_size @1272 - vp8_pick_inter_mode @1273 - vp8_pick_intra_mode @1274 - vp8_plane_add_noise_c @1275 - vp8_plane_add_noise_wmt @1276 - vp8_post_proc_down_and_across_mb_row_c @1277 - vp8_post_proc_down_and_across_mb_row_sse2 @1278 - vp8_post_proc_frame @1279 - vp8_prev_token_class @1280 - vp8_prob_cost @1281 - vp8_quantize_mb_c @1282 - vp8_quantize_mbuv_c @1283 - vp8_quantize_mby_c @1284 - vp8_rd_pick_inter_mode @1285 - vp8_rd_pick_intra_mode @1286 - vp8_receive_raw_frame @1287 - vp8_ref_frame_order @1288 - vp8_refining_search_sad @1289 - vp8_refining_search_sad_c @1290 - vp8_refining_search_sadx4 @1291 - vp8_regular_quantize_b_c @1292 - vp8_regular_quantize_b_pair_c @1293 - vp8_regular_quantize_b_sse2 @1294 - vp8_regulate_q @1295 - vp8_remove_common @1296 - vp8_remove_compressor @1297 - vp8_remove_decoder_instances @1298 - vp8_reset_mb_tokens_context @1299 - vp8_restore_coding_context @1300 - vp8_reverse_trans @1301 - vp8_rtcd @1302 - vp8_rv @1303 - vp8_sad16x16 @1304 - vp8_sad16x16_c @1305 - vp8_sad16x16_sse3 @1306 - vp8_sad16x16_wmt @1307 - vp8_sad16x16x3 @1308 - vp8_sad16x16x3_c @1309 - vp8_sad16x16x3_sse3 @1310 - vp8_sad16x16x3_ssse3 @1311 - vp8_sad16x16x4d @1312 - vp8_sad16x16x4d_c @1313 - vp8_sad16x16x4d_sse3 @1314 - vp8_sad16x16x8 @1315 - vp8_sad16x16x8_c @1316 - vp8_sad16x16x8_sse4 @1317 - vp8_sad16x8_c @1318 - vp8_sad16x8_wmt @1319 - vp8_sad16x8x3 @1320 - vp8_sad16x8x3_c @1321 - vp8_sad16x8x3_sse3 @1322 - vp8_sad16x8x3_ssse3 @1323 - vp8_sad16x8x4d @1324 - vp8_sad16x8x4d_c @1325 - vp8_sad16x8x4d_sse3 @1326 - vp8_sad16x8x8 @1327 - vp8_sad16x8x8_c @1328 - vp8_sad16x8x8_sse4 @1329 - vp8_sad4x4_c @1330 - vp8_sad4x4_wmt @1331 - vp8_sad4x4x3 @1332 - vp8_sad4x4x3_c @1333 - vp8_sad4x4x3_sse3 @1334 - vp8_sad4x4x4d @1335 - vp8_sad4x4x4d_c @1336 - vp8_sad4x4x4d_sse3 @1337 - vp8_sad4x4x8 @1338 - vp8_sad4x4x8_c @1339 - vp8_sad4x4x8_sse4 @1340 - vp8_sad8x16_c @1341 - vp8_sad8x16_wmt @1342 - vp8_sad8x16x3 @1343 - vp8_sad8x16x3_c @1344 - vp8_sad8x16x3_sse3 @1345 - vp8_sad8x16x4d @1346 - vp8_sad8x16x4d_c @1347 - vp8_sad8x16x4d_sse3 @1348 - vp8_sad8x16x8 @1349 - vp8_sad8x16x8_c @1350 - vp8_sad8x16x8_sse4 @1351 - vp8_sad8x8_c @1352 - vp8_sad8x8_wmt @1353 - vp8_sad8x8x3 @1354 - vp8_sad8x8x3_c @1355 - vp8_sad8x8x3_sse3 @1356 - vp8_sad8x8x4d @1357 - vp8_sad8x8x4d_c @1358 - vp8_sad8x8x4d_sse3 @1359 - vp8_sad8x8x8 @1360 - vp8_sad8x8x8_c @1361 - vp8_sad8x8x8_sse4 @1362 - vp8_save_coding_context @1363 - vp8_second_pass @1364 - vp8_set_active_map @1365 - vp8_set_internal_size @1366 - vp8_set_mbmode_and_mvs @1367 - vp8_set_quantizer @1368 - vp8_set_reference @1369 - vp8_set_roimap @1370 - vp8_set_speed_features @1371 - vp8_setup_block_dptrs @1372 - vp8_setup_block_ptrs @1373 - vp8_setup_intra_recon @1374 - vp8_setup_intra_recon_top_line @1375 - vp8_setup_key_frame @1376 - vp8_setup_version @1377 - vp8_short_fdct4x4_sse2 @1378 - vp8_short_fdct8x4_sse2 @1379 - vp8_short_idct4x4llm_c @1380 - vp8_short_idct4x4llm_mmx @1381 - vp8_short_inv_walsh4x4_1_c @1382 - vp8_short_inv_walsh4x4_c @1383 - vp8_short_inv_walsh4x4_sse2 @1384 - vp8_short_walsh4x4_sse2 @1385 - vp8_six_tap_mmx @1386 - vp8_sixtap_predict16x16 @1387 - vp8_sixtap_predict16x16_mmx @1388 - vp8_sixtap_predict16x16_sse2 @1389 - vp8_sixtap_predict16x16_ssse3 @1390 - vp8_sixtap_predict4x4 @1391 - vp8_sixtap_predict4x4_mmx @1392 - vp8_sixtap_predict4x4_ssse3 @1393 - vp8_sixtap_predict8x4 @1394 - vp8_sixtap_predict8x4_mmx @1395 - vp8_sixtap_predict8x4_sse2 @1396 - vp8_sixtap_predict8x4_ssse3 @1397 - vp8_sixtap_predict8x8 @1398 - vp8_sixtap_predict8x8_mmx @1399 - vp8_sixtap_predict8x8_sse2 @1400 - vp8_sixtap_predict8x8_ssse3 @1401 - vp8_skip_fractional_mv_step @1402 - vp8_small_mvencodings @1403 - vp8_small_mvtree @1404 - vp8_start_encode @1405 - vp8_stop_encode @1406 - vp8_strict_quantize_b_c @1407 - vp8_stuff_mb @1408 - vp8_sub_mv_ref_encoding_array @1409 - vp8_sub_mv_ref_prob2 @1410 - vp8_sub_mv_ref_prob3 @1411 - vp8_sub_mv_ref_tree @1412 - vp8_sub_pixel_mse16x16_wmt @1413 - vp8_sub_pixel_variance16x16 @1414 - vp8_sub_pixel_variance16x16_ssse3 @1415 - vp8_sub_pixel_variance16x16_wmt @1416 - vp8_sub_pixel_variance16x8 @1417 - vp8_sub_pixel_variance16x8_ssse3 @1418 - vp8_sub_pixel_variance16x8_wmt @1419 - vp8_sub_pixel_variance4x4_wmt @1420 - vp8_sub_pixel_variance8x16_wmt @1421 - vp8_sub_pixel_variance8x8_wmt @1422 - vp8_subtract_b_c @1423 - vp8_subtract_b_sse2 @1424 - vp8_subtract_b_sse2_impl @1425 - vp8_subtract_mbuv_c @1426 - vp8_subtract_mbuv_sse2 @1427 - vp8_subtract_mby_c @1428 - vp8_subtract_mby_sse2 @1429 - vp8_swap_yv12_buffer @1430 - vp8_temporal_filter_apply_c @1431 - vp8_temporal_filter_apply_sse2 @1432 - vp8_temporal_filter_prepare_c @1433 - vp8_tokenize_mb @1434 - vp8_tokens_from_tree @1435 - vp8_tokens_from_tree_offset @1436 - vp8_transform_intra_mby @1437 - vp8_transform_mbuv @1438 - vp8_tree_probs_from_distribution @1439 - vp8_unpack_block1d16_h6_sse2 @1440 - vp8_update_coef_probs @1441 - vp8_update_entropy @1442 - vp8_update_gf_useage_maps @1443 - vp8_update_rate_correction_factors @1444 - vp8_update_reference @1445 - vp8_update_zbin_extra @1446 - vp8_use_as_reference @1447 - vp8_uv_mode_encodings @1448 - vp8_uv_mode_prob @1449 - vp8_uv_mode_tree @1450 - vp8_variance16x16_wmt @1451 - vp8_variance16x8_wmt @1452 - vp8_variance4x4_wmt @1453 - vp8_variance8x16_wmt @1454 - vp8_variance8x8_wmt @1455 - vp8_variance_and_sad_16x16_sse2 @1456 - vp8_variance_halfpixvar16x16_h_wmt @1457 - vp8_variance_halfpixvar16x16_hv_wmt @1458 - vp8_variance_halfpixvar16x16_v_wmt @1459 - vp8_vertical_band_2_1_scale_c @1460 - vp8_vertical_band_2_1_scale_i_c @1461 - vp8_vertical_band_5_3_scale_c @1462 - vp8_vertical_band_5_4_scale_c @1463 - vp8_write_mvprobs @1464 - vp8_ymode_encodings @1465 - vp8_ymode_prob @1466 - vp8_ymode_tree @1467 - vp8_yv12_alloc_frame_buffer @1468 - vp8_yv12_copy_frame_c @1469 - vp8_yv12_copy_partial_frame_c @1470 - vp8_yv12_de_alloc_frame_buffer @1471 - vp8_yv12_extend_frame_borders_c @1472 - vp8_yv12_realloc_frame_buffer @1473 - vp8cx_base_skip_false_prob @1474 - vp8cx_create_encoder_threads @1475 - vp8cx_encode_inter_macroblock @1476 - vp8cx_encode_intra_macroblock @1477 - vp8cx_frame_init_quantizer @1478 - vp8cx_init_de_quantizer @1479 - vp8cx_init_mbrthread_data @1480 - vp8cx_init_quantizer @1481 - vp8cx_initialize_me_consts @1482 - vp8cx_mb_init_quantizer @1483 - vp8cx_pick_filter_level @1484 - vp8cx_pick_filter_level_fast @1485 - vp8cx_remove_encoder_threads @1486 - vp8cx_set_alt_lf_level @1487 - vp8dx_bool_decoder_fill @1488 - vp8dx_get_raw_frame @1489 - vp8dx_get_reference @1490 - vp8dx_receive_compressed_data @1491 - vp8dx_references_buffer @1492 - vp8dx_set_reference @1493 - vp8dx_start_decode @1494 - vp8mt_alloc_temp_buffers @1495 - vp8mt_de_alloc_temp_buffers @1496 - vp8mt_decode_mb_rows @1497 - vp9_alloc_frame_buffer @1498 - vp9_extend_frame_borders_c @1499 - vp9_extend_frame_inner_borders_c @1500 - vp9_free_frame_buffer @1501 - vp9_realloc_frame_buffer @1502 - vpx_calloc @1503 - vpx_codec_control_ @1504 - vpx_codec_dec_init_ver @1505 - vpx_codec_decode @1506 - vpx_codec_destroy @1507 - vpx_codec_enc_config_default @1508 - vpx_codec_enc_config_set @1509 - vpx_codec_enc_init_multi_ver @1510 - vpx_codec_enc_init_ver @1511 - vpx_codec_encode @1512 - vpx_codec_err_to_string @1513 - vpx_codec_error @1514 - vpx_codec_error_detail @1515 - vpx_codec_get_caps @1516 - vpx_codec_get_cx_data @1517 - vpx_codec_get_frame @1518 - vpx_codec_get_global_headers @1519 - vpx_codec_get_mem_map @1520 - vpx_codec_get_preview_frame @1521 - vpx_codec_get_stream_info @1522 - vpx_codec_iface_name @1523 - vpx_codec_peek_stream_info @1524 - vpx_codec_pkt_list_add @1525 - vpx_codec_pkt_list_get @1526 - vpx_codec_register_put_frame_cb @1527 - vpx_codec_register_put_slice_cb @1528 - vpx_codec_set_cx_data_buf @1529 - vpx_codec_set_mem_map @1530 - vpx_codec_version @1531 - vpx_codec_version_extra_str @1532 - vpx_codec_version_str @1533 - vpx_codec_vp8_cx @1534 - vpx_codec_vp8_cx_algo @1535 - vpx_codec_vp8_dx @1536 - vpx_codec_vp8_dx_algo @1537 - vpx_free @1538 - vpx_malloc @1539 - vpx_mem_get_version @1540 - vpx_mem_set_functions @1541 - vpx_mem_set_heap_size @1542 - vpx_mem_unset_functions @1543 - vpx_memalign @1544 - vpx_memcpy @1545 - vpx_memmove @1546 - vpx_memset @1547 - vpx_mmap_alloc @1548 - vpx_mmap_dtor @1549 - vpx_realloc @1550 - vpx_reset_mmx_state @1551 - vpx_scale_frame @1552 - vpx_scale_rtcd @1553 - vpx_validate_mmaps @1554 - vpx_winx64_fldcw @1555 - vpx_winx64_fstcw @1556 - vpx_yv12_copy_y_c @1557 - write_cryptpacket @1558 diff --git a/protocols/Tox/lib/x86/libtox.def b/protocols/Tox/lib/x86/libtox.def deleted file mode 100644 index cca6b10ff0..0000000000 --- a/protocols/Tox/lib/x86/libtox.def +++ /dev/null @@ -1,1709 +0,0 @@ -LIBRARY "libtox" - -EXPORTS - Assoc_add_entry @1 - Assoc_get_close_entries @2 - Assoc_self_client_id_changed @3 - DHT_addfriend @4 - DHT_bootstrap @5 - DHT_bootstrap_from_address @6 - DHT_delfriend @7 - DHT_get_close_list @8 - DHT_get_shared_key_recv @9 - DHT_get_shared_key_sent @10 - DHT_getfriendip @11 - DHT_getnodes @12 - DHT_isconnected @13 - DHT_load @14 - DHT_non_lan_connected @15 - DHT_save @16 - DHT_size @17 - LAN_ip @18 - LANdiscovery_init @19 - U16_to_bytes @20 - U32_to_bytes @21 - VP8_UVSSE @22 - __pth_gpointer_locked @23 - __pthread_clock_nanosleep @24 - __pthread_shallcancel @25 - __xl_f @26 - _celt_autocorr @27 - _celt_lpc @28 - _pthread_cleanup_dest @29 - _pthread_get_state @30 - _pthread_invoke_cancel @31 - _pthread_key_dest @32 - _pthread_rel_time_in_ms @33 - _pthread_set_state @34 - _pthread_setnobreak @35 - _pthread_time_in_ms @36 - _pthread_time_in_ms_from_timespec @37 - _pthread_tryjoin @38 - _sodium_alignedcalloc @39 - accept_crypto_connection @40 - add_ext_header @41 - add_groupchat @42 - add_header @43 - add_tcp_relay @44 - add_tcp_relay_peer @45 - add_to_ping @46 - addr_parse_ip @47 - addr_resolve @48 - addr_resolve_or_parse_ip @49 - addto_lists @50 - alg_quant @51 - alg_unquant @52 - amp2Log2 @53 - anti_collapse @54 - at_startup_ran @55 - av_DefaultSettings @56 - av_VADd @57 - av_jbufdc @58 - bs_list_add @59 - bs_list_find @60 - bs_list_free @61 - bs_list_init @62 - bs_list_remove @63 - bs_list_trim @64 - build_header @65 - bytes_to_U16 @66 - bytes_to_U32 @67 - callback_file_control @68 - callback_file_data @69 - callback_file_sendrequest @70 - callback_friendrequest @71 - callback_groupaction @72 - callback_groupmessage @73 - callback_namelistchange @74 - celt_decode_with_ec @75 - celt_decoder_get_size @76 - celt_decoder_init @77 - celt_encode_with_ec @78 - celt_encoder_get_size @79 - celt_encoder_init @80 - celt_fir @81 - celt_iir @82 - celt_lcg_rand @83 - celt_pitch_xcorr_c @84 - celt_preemphasis @85 - chat_bootstrap @86 - chat_bootstrap_nonlazy @87 - check_control_input @88 - check_fragments_for_errors @89 - check_late_message @90 - closelist_nodes @91 - clt_mdct_backward @92 - clt_mdct_forward @93 - codec_init_session @94 - codec_terminate_session @95 - comb_filter @96 - compute_allocation @97 - compute_band_energies @98 - compute_frame_size @99 - compute_stereo_width @100 - cond_print @101 - cond_print_set @102 - connection_data_handler @103 - connection_lossy_data_handler @104 - connection_status_handler @105 - copy_chatlist @106 - copy_connected_tcp_relays @107 - copy_friendlist @108 - count_chatlist @109 - count_friendlist @110 - create_announce_request @111 - create_data_request @112 - create_onion_packet @113 - create_onion_packet_tcp @114 - create_onion_path @115 - create_queue @116 - create_request @117 - crypto_box @118 - crypto_box_afternm @119 - crypto_box_beforenm @120 - crypto_box_beforenmbytes @121 - crypto_box_boxzerobytes @122 - crypto_box_curve25519xsalsa20poly1305 @123 - crypto_box_curve25519xsalsa20poly1305_afternm @124 - crypto_box_curve25519xsalsa20poly1305_beforenm @125 - crypto_box_curve25519xsalsa20poly1305_keypair @126 - crypto_box_curve25519xsalsa20poly1305_open @127 - crypto_box_curve25519xsalsa20poly1305_open_afternm @128 - crypto_box_curve25519xsalsa20poly1305_seed_keypair @129 - crypto_box_keypair @130 - crypto_box_macbytes @131 - crypto_box_noncebytes @132 - crypto_box_open @133 - crypto_box_open_afternm @134 - crypto_box_primitive @135 - crypto_box_publickeybytes @136 - crypto_box_secretkeybytes @137 - crypto_box_seed_keypair @138 - crypto_box_seedbytes @139 - crypto_box_zerobytes @140 - crypto_cmp @141 - crypto_connection_status @142 - crypto_core_hsalsa20 @143 - crypto_core_salsa20 @144 - crypto_hash_sha256 @145 - crypto_hash_sha256_final @146 - crypto_hash_sha256_init @147 - crypto_hash_sha256_update @148 - crypto_hash_sha512 @149 - crypto_hash_sha512_final @150 - crypto_hash_sha512_init @151 - crypto_hash_sha512_update @152 - crypto_kill @153 - crypto_num_free_sendqueue_slots @154 - crypto_onetimeauth_pick_best_implementation @155 - crypto_onetimeauth_poly1305 @156 - crypto_onetimeauth_poly1305_donna @157 - crypto_onetimeauth_poly1305_donna_final @158 - crypto_onetimeauth_poly1305_donna_implementation @159 - crypto_onetimeauth_poly1305_donna_implementation_name @160 - crypto_onetimeauth_poly1305_donna_init @161 - crypto_onetimeauth_poly1305_donna_update @162 - crypto_onetimeauth_poly1305_donna_verify @163 - crypto_onetimeauth_poly1305_final @164 - crypto_onetimeauth_poly1305_implementation_name @165 - crypto_onetimeauth_poly1305_init @166 - crypto_onetimeauth_poly1305_set_implementation @167 - crypto_onetimeauth_poly1305_update @168 - crypto_onetimeauth_poly1305_verify @169 - crypto_run_interval @170 - crypto_scalarmult_curve25519 @171 - crypto_scalarmult_curve25519_base @172 - crypto_scalarmult_curve25519_ref10_fe_0 @173 - crypto_scalarmult_curve25519_ref10_fe_1 @174 - crypto_scalarmult_curve25519_ref10_fe_add @175 - crypto_scalarmult_curve25519_ref10_fe_copy @176 - crypto_scalarmult_curve25519_ref10_fe_cswap @177 - crypto_scalarmult_curve25519_ref10_fe_frombytes @178 - crypto_scalarmult_curve25519_ref10_fe_invert @179 - crypto_scalarmult_curve25519_ref10_fe_mul @180 - crypto_scalarmult_curve25519_ref10_fe_mul121666 @181 - crypto_scalarmult_curve25519_ref10_fe_sq @182 - crypto_scalarmult_curve25519_ref10_fe_sub @183 - crypto_scalarmult_curve25519_ref10_fe_tobytes @184 - crypto_secretbox_xsalsa20poly1305 @185 - crypto_secretbox_xsalsa20poly1305_open @186 - crypto_stream_salsa20 @187 - crypto_stream_salsa20_keybytes @188 - crypto_stream_salsa20_noncebytes @189 - crypto_stream_salsa20_xor @190 - crypto_stream_salsa20_xor_ic @191 - crypto_stream_xsalsa20 @192 - crypto_stream_xsalsa20_xor @193 - crypto_verify_16 @194 - crypto_verify_32 @195 - cryptopacket_registerhandler @196 - current_time_monotonic @197 - custom_lossless_packet_registerhandler @198 - custom_lossy_packet_registerhandler @199 - decode_pulses @200 - decrypt_data @201 - decrypt_data_symmetric @202 - del_groupchat @203 - denormalise_bands @204 - dequeue @205 - do_Assoc @206 - do_DHT @207 - do_TCP_connection @208 - do_TCP_server @209 - do_friends @210 - do_groupchat @211 - do_hardening @212 - do_messenger @213 - do_net_crypto @214 - do_onion_client @215 - do_sema_b_wait_intern @216 - do_to_ping @217 - downmix_float @218 - downmix_int @219 - eMeans @220 - ec_dec_bit_logp @221 - ec_dec_bits @222 - ec_dec_icdf @223 - ec_dec_init @224 - ec_dec_uint @225 - ec_dec_update @226 - ec_decode @227 - ec_decode_bin @228 - ec_enc_bit_logp @229 - ec_enc_bits @230 - ec_enc_done @231 - ec_enc_icdf @232 - ec_enc_init @233 - ec_enc_patch_initial_bits @234 - ec_enc_shrink @235 - ec_enc_uint @236 - ec_encode @237 - ec_encode_bin @238 - ec_laplace_decode @239 - ec_laplace_encode @240 - ec_tell_frac @241 - encode_pulses @242 - encode_size @243 - encrypt_data @244 - encrypt_data_symmetric @245 - encrypt_precompute @246 - energy_VAD @247 - extract_ext_header @248 - extract_header @249 - file_control @250 - file_data @251 - file_dataremaining @252 - file_sendrequest @253 - format_output @254 - frame_size_select @255 - friend_ips @256 - friendreq_init @257 - get_close_nodes @258 - get_connection_dht_key @259 - get_friendlist @260 - get_nospam @261 - get_num_online_friends @262 - get_shared_key @263 - getaddress @264 - getclient_id @265 - getfriend_id @266 - getname @267 - getself_name @268 - group_action_send @269 - group_client_names @270 - group_message_send @271 - group_names @272 - group_newpeer @273 - group_number_peers @274 - group_numpeers @275 - group_peername @276 - group_sendaction @277 - group_sendmessage @278 - haar1 @279 - handle_groupchatpacket @280 - handle_request @281 - host_to_net @282 - hysteresis_decision @283 - id_closest @284 - id_copy @285 - id_equal @286 - increment_nonce @287 - increment_nonce_number @288 - init_audio_decoder @289 - init_audio_encoder @290 - init_caps @291 - init_video_decoder @292 - init_video_encoder @293 - invite_friend @294 - invoke_callback @295 - ip_copy @296 - ip_equal @297 - ip_init @298 - ip_isset @299 - ip_ntoa @300 - ip_pack @301 - ip_reset @302 - ip_unpack @303 - ipport_copy @304 - ipport_equal @305 - ipport_isset @306 - ipport_pack @307 - ipport_unpack @308 - is_timeout @309 - isqrt32 @310 - join_groupchat @311 - kill_Assoc @312 - kill_DHT @313 - kill_TCP_connection @314 - kill_TCP_server @315 - kill_groupchat @316 - kill_messenger @317 - kill_net_crypto @318 - kill_networking @319 - kill_onion @320 - kill_onion_announce @321 - kill_onion_client @322 - kill_ping @323 - kill_sock @324 - load_keys @325 - load_state @326 - m_addfriend @327 - m_addfriend_norequest @328 - m_callback_action @329 - m_callback_connectionstatus @330 - m_callback_connectionstatus_internal_av @331 - m_callback_friendmessage @332 - m_callback_friendrequest @333 - m_callback_group_action @334 - m_callback_group_invite @335 - m_callback_group_message @336 - m_callback_group_namelistchange @337 - m_callback_msi_packet @338 - m_callback_namechange @339 - m_callback_read_receipt @340 - m_callback_statusmessage @341 - m_callback_typingchange @342 - m_callback_userstatus @343 - m_copy_self_statusmessage @344 - m_copy_statusmessage @345 - m_delfriend @346 - m_friend_exists @347 - m_get_friend_connectionstatus @348 - m_get_istyping @349 - m_get_last_online @350 - m_get_name_size @351 - m_get_self_name_size @352 - m_get_self_statusmessage_size @353 - m_get_self_userstatus @354 - m_get_statusmessage_size @355 - m_get_userstatus @356 - m_group_peername @357 - m_msi_packet @358 - m_sendaction @359 - m_sendaction_withid @360 - m_sendmessage @361 - m_sendmessage_withid @362 - m_set_sends_receipts @363 - m_set_statusmessage @364 - m_set_userstatus @365 - m_set_usertyping @366 - messenger_load @367 - messenger_run_interval @368 - messenger_save @369 - messenger_size @370 - mlp_process @371 - msg_parse @372 - msi_answer @373 - msi_cancel @374 - msi_change_csettings @375 - msi_hangup @376 - msi_init_session @377 - msi_invite @378 - msi_msg_get_csettings @379 - msi_msg_set_callid @380 - msi_msg_set_csettings @381 - msi_msg_set_reason @382 - msi_new_message @383 - msi_register_callback @384 - msi_reject @385 - msi_stopcall @386 - msi_terminate_session @387 - mutex_print @388 - mutex_print_set @389 - net @390 - networking_at_startup @391 - networking_poll @392 - networking_registerhandler @393 - new_Assoc @394 - new_Assoc_default @395 - new_DHT @396 - new_TCP_connection @397 - new_TCP_server @398 - new_connection_handler @399 - new_crypto_connection @400 - new_filesender @401 - new_groupchat @402 - new_keys @403 - new_messenger @404 - new_net_crypto @405 - new_networking @406 - new_nonce @407 - new_onion @408 - new_onion_announce @409 - new_onion_client @410 - new_ping @411 - new_symmetric_key @412 - normalise_bands @413 - onion_add_path_node @414 - onion_addfriend @415 - onion_backup_nodes @416 - onion_delfriend @417 - onion_friend_num @418 - onion_getfriend_DHT_pubkey @419 - onion_getfriendip @420 - onion_isconnected @421 - onion_response_handler @422 - onion_send_1 @423 - onion_set_friend_DHT_pubkey @424 - onion_set_friend_online @425 - oniondata_registerhandler @426 - oob_data_handler @427 - optimize_framesize @428 - opus_custom_decoder_ctl @429 - opus_custom_encoder_ctl @430 - opus_custom_mode_create @431 - opus_decode @432 - opus_decode_float @433 - opus_decode_native @434 - opus_decoder_create @435 - opus_decoder_ctl @436 - opus_decoder_destroy @437 - opus_decoder_get_nb_samples @438 - opus_decoder_get_size @439 - opus_decoder_init @440 - opus_encode @441 - opus_encode_float @442 - opus_encode_native @443 - opus_encoder_create @444 - opus_encoder_ctl @445 - opus_encoder_destroy @446 - opus_encoder_get_size @447 - opus_encoder_init @448 - opus_fft @449 - opus_get_version_string @450 - opus_ifft @451 - opus_multistream_packet_pad @452 - opus_multistream_packet_unpad @453 - opus_packet_get_bandwidth @454 - opus_packet_get_nb_channels @455 - opus_packet_get_nb_frames @456 - opus_packet_get_nb_samples @457 - opus_packet_get_samples_per_frame @458 - opus_packet_pad @459 - opus_packet_parse @460 - opus_packet_parse_impl @461 - opus_packet_unpad @462 - opus_pcm_soft_clip @463 - opus_repacketizer_cat @464 - opus_repacketizer_create @465 - opus_repacketizer_destroy @466 - opus_repacketizer_get_nb_frames @467 - opus_repacketizer_get_size @468 - opus_repacketizer_init @469 - opus_repacketizer_out @470 - opus_repacketizer_out_range @471 - opus_repacketizer_out_range_impl @472 - opus_strerror @473 - pack_nodes @474 - parse_recv @475 - parse_send @476 - patch_transient_decision @477 - ping_array_add @478 - ping_array_check @479 - ping_array_free_all @480 - ping_array_init @481 - pitch_downsample @482 - pitch_search @483 - pthread_attr_destroy @484 - pthread_attr_getdetachstate @485 - pthread_attr_getinheritsched @486 - pthread_attr_getscope @487 - pthread_attr_getstackaddr @488 - pthread_attr_getstacksize @489 - pthread_attr_init @490 - pthread_attr_setdetachstate @491 - pthread_attr_setinheritsched @492 - pthread_attr_setscope @493 - pthread_attr_setstackaddr @494 - pthread_attr_setstacksize @495 - pthread_cancel @496 - pthread_cond_broadcast @497 - pthread_cond_destroy @498 - pthread_cond_init @499 - pthread_cond_signal @500 - pthread_cond_timedwait @501 - pthread_cond_timedwait_relative @502 - pthread_cond_wait @503 - pthread_condattr_destroy @504 - pthread_condattr_getclock @505 - pthread_condattr_getpshared @506 - pthread_condattr_init @507 - pthread_condattr_setclock @508 - pthread_condattr_setpshared @509 - pthread_create @510 - pthread_create_wrapper @511 - pthread_delay_np @512 - pthread_delay_np_ms @513 - pthread_detach @514 - pthread_equal @515 - pthread_exit @516 - pthread_get_concurrency @517 - pthread_getclean @518 - pthread_getconcurrency @519 - pthread_getevent @520 - pthread_gethandle @521 - pthread_getspecific @522 - pthread_join @523 - pthread_key_create @524 - pthread_key_delete @525 - pthread_kill @526 - pthread_mutex_destroy @527 - pthread_mutex_init @528 - pthread_mutex_lock @529 - pthread_mutex_timedlock @530 - pthread_mutex_trylock @531 - pthread_mutex_unlock @532 - pthread_mutexattr_destroy @533 - pthread_mutexattr_getprioceiling @534 - pthread_mutexattr_getprotocol @535 - pthread_mutexattr_getpshared @536 - pthread_mutexattr_gettype @537 - pthread_mutexattr_init @538 - pthread_mutexattr_setprioceiling @539 - pthread_mutexattr_setprotocol @540 - pthread_mutexattr_setpshared @541 - pthread_mutexattr_settype @542 - pthread_num_processors_np @543 - pthread_once @544 - pthread_rwlock_destroy @545 - pthread_rwlock_init @546 - pthread_rwlock_rdlock @547 - pthread_rwlock_timedrdlock @548 - pthread_rwlock_timedwrlock @549 - pthread_rwlock_tryrdlock @550 - pthread_rwlock_trywrlock @551 - pthread_rwlock_unlock @552 - pthread_rwlock_wrlock @553 - pthread_rwlockattr_destroy @554 - pthread_rwlockattr_getpshared @555 - pthread_rwlockattr_init @556 - pthread_rwlockattr_setpshared @557 - pthread_self @558 - pthread_set_concurrency @559 - pthread_set_num_processors_np @560 - pthread_setcancelstate @561 - pthread_setcanceltype @562 - pthread_setconcurrency @563 - pthread_setspecific @564 - pthread_spin_destroy @565 - pthread_spin_init @566 - pthread_spin_lock @567 - pthread_spin_trylock @568 - pthread_spin_unlock @569 - pthread_testcancel @570 - pthread_timechange_handler_np @571 - pthread_tls_init @572 - public_key_valid @573 - quant_all_bands @574 - quant_coarse_energy @575 - quant_energy_finalise @576 - quant_fine_energy @577 - queue @578 - random_64b @579 - random_int @580 - random_node @581 - random_nodes_path @582 - random_nonce @583 - randombytes @584 - randombytes_buf @585 - randombytes_close @586 - randombytes_implementation_name @587 - randombytes_random @588 - randombytes_set_implementation @589 - randombytes_stir @590 - randombytes_sysrandom @591 - randombytes_sysrandom_buf @592 - randombytes_sysrandom_close @593 - randombytes_sysrandom_implementation @594 - randombytes_sysrandom_implementation_name @595 - randombytes_sysrandom_stir @596 - randombytes_sysrandom_uniform @597 - randombytes_uniform @598 - read_TCP_length @599 - read_TCP_packet @600 - read_packet_TCP_secure_connection @601 - realloc_friendlist @602 - reconfigure_video_encoder_bitrate @603 - reconfigure_video_encoder_resolution @604 - recv_tcp_relay_handler @605 - remove_doubling @606 - remove_request_received @607 - renormalise_vector @608 - resampling_factor @609 - route_packet @610 - route_tofriend @611 - routing_data_handler @612 - routing_response_handler @613 - routing_status_handler @614 - rtp_free_msg @615 - rtp_handle_packet @616 - rtp_init_session @617 - rtp_new_message @618 - rtp_send_msg @619 - rtp_terminate_session @620 - run_analysis @621 - rwl_print @622 - rwl_print_set @623 - save_keys @624 - send_LANdiscovery @625 - send_announce_request @626 - send_custom_lossless_packet @627 - send_custom_lossy_packet @628 - send_data @629 - send_data_request @630 - send_disconnect_request @631 - send_friendrequest @632 - send_lossy_cryptpacket @633 - send_onion_data @634 - send_onion_packet @635 - send_onion_request @636 - send_onion_response @637 - send_oob_packet @638 - send_ping_request @639 - send_reponse @640 - send_routing_request @641 - send_tcp_onion_request @642 - sendpacket @643 - set_callback_handle_recv_1 @644 - set_connection_dht_public_key @645 - set_direct_ip_port @646 - set_filter_function @647 - set_nick @648 - set_nospam @649 - set_socket_dualstack @650 - set_socket_nonblock @651 - set_socket_nosigpipe @652 - set_tcp_connection_number @653 - setfriendname @654 - setname @655 - silk_A2NLSF @656 - silk_A2NLSF_FLP @657 - silk_CB_lags_stage2 @658 - silk_CB_lags_stage2_10_ms @659 - silk_CB_lags_stage3 @660 - silk_CB_lags_stage3_10_ms @661 - silk_CNG @662 - silk_CNG_Reset @663 - silk_Decode @664 - silk_Encode @665 - silk_Get_Decoder_Size @666 - silk_Get_Encoder_Size @667 - silk_HP_variable_cutoff @668 - silk_InitDecoder @669 - silk_InitEncoder @670 - silk_LBRR_flags_iCDF_ptr @671 - silk_LPC_analysis_filter @672 - silk_LPC_analysis_filter_FLP @673 - silk_LPC_inverse_pred_gain @674 - silk_LPC_inverse_pred_gain_FLP @675 - silk_LP_variable_cutoff @676 - silk_LSFCosTab_FIX_Q12 @677 - silk_LTPScales_table_Q14 @678 - silk_LTP_analysis_filter_FLP @679 - silk_LTP_gain_BITS_Q5_ptrs @680 - silk_LTP_gain_iCDF_ptrs @681 - silk_LTP_gain_middle_avg_RD_Q14 @682 - silk_LTP_per_index_iCDF @683 - silk_LTP_scale_ctrl_FLP @684 - silk_LTP_vq_gain_ptrs_Q7 @685 - silk_LTP_vq_ptrs_Q7 @686 - silk_LTP_vq_sizes @687 - silk_LTPscale_iCDF @688 - silk_Lag_range_stage3 @689 - silk_Lag_range_stage3_10_ms @690 - silk_NLSF2A @691 - silk_NLSF2A_FLP @692 - silk_NLSF_CB_NB_MB @693 - silk_NLSF_CB_WB @694 - silk_NLSF_EXT_iCDF @695 - silk_NLSF_VQ @696 - silk_NLSF_VQ_weights_laroia @697 - silk_NLSF_decode @698 - silk_NLSF_del_dec_quant @699 - silk_NLSF_encode @700 - silk_NLSF_interpolation_factor_iCDF @701 - silk_NLSF_stabilize @702 - silk_NLSF_unpack @703 - silk_NSQ @704 - silk_NSQ_del_dec @705 - silk_NSQ_wrapper_FLP @706 - silk_PLC @707 - silk_PLC_Reset @708 - silk_PLC_glue_frames @709 - silk_Quantization_Offsets_Q10 @710 - silk_Resampler_1_2_COEFS @711 - silk_Resampler_1_3_COEFS @712 - silk_Resampler_1_4_COEFS @713 - silk_Resampler_1_6_COEFS @714 - silk_Resampler_2_3_COEFS @715 - silk_Resampler_2_3_COEFS_LQ @716 - silk_Resampler_3_4_COEFS @717 - silk_SNR_table_Q1 @718 - silk_TargetRate_table_MB @719 - silk_TargetRate_table_NB @720 - silk_TargetRate_table_WB @721 - silk_Transition_LP_A_Q28 @722 - silk_Transition_LP_B_Q28 @723 - silk_VAD_GetSA_Q8 @724 - silk_VAD_Init @725 - silk_VQ_WMat_EC @726 - silk_ana_filt_bank_1 @727 - silk_apply_sine_window_FLP @728 - silk_autocorrelation_FLP @729 - silk_biquad_alt @730 - silk_burg_modified_FLP @731 - silk_bwexpander @732 - silk_bwexpander_32 @733 - silk_bwexpander_FLP @734 - silk_control_SNR @735 - silk_control_audio_bandwidth @736 - silk_control_encoder @737 - silk_corrMatrix_FLP @738 - silk_corrVector_FLP @739 - silk_decode_core @740 - silk_decode_frame @741 - silk_decode_indices @742 - silk_decode_parameters @743 - silk_decode_pitch @744 - silk_decode_pulses @745 - silk_decode_signs @746 - silk_decoder_set_fs @747 - silk_delta_gain_iCDF @748 - silk_encode_do_VAD_FLP @749 - silk_encode_frame_FLP @750 - silk_encode_indices @751 - silk_encode_pulses @752 - silk_encode_signs @753 - silk_energy_FLP @754 - silk_find_LPC_FLP @755 - silk_find_LTP_FLP @756 - silk_find_pitch_lags_FLP @757 - silk_find_pred_coefs_FLP @758 - silk_gain_iCDF @759 - silk_gains_ID @760 - silk_gains_dequant @761 - silk_gains_quant @762 - silk_init_decoder @763 - silk_init_encoder @764 - silk_inner_prod_aligned_scale @765 - silk_inner_product_FLP @766 - silk_insertion_sort_decreasing_FLP @767 - silk_insertion_sort_increasing @768 - silk_insertion_sort_increasing_all_values_int16 @769 - silk_interpolate @770 - silk_k2a_FLP @771 - silk_levinsondurbin_FLP @772 - silk_lin2log @773 - silk_log2lin @774 - silk_lsb_iCDF @775 - silk_max_pulses_table @776 - silk_nb_cbk_searchs_stage3 @777 - silk_noise_shape_analysis_FLP @778 - silk_pitch_analysis_core_FLP @779 - silk_pitch_contour_10_ms_NB_iCDF @780 - silk_pitch_contour_10_ms_iCDF @781 - silk_pitch_contour_NB_iCDF @782 - silk_pitch_contour_iCDF @783 - silk_pitch_delta_iCDF @784 - silk_pitch_lag_iCDF @785 - silk_prefilter_FLP @786 - silk_process_NLSFs @787 - silk_process_NLSFs_FLP @788 - silk_process_gains_FLP @789 - silk_pulses_per_block_BITS_Q5 @790 - silk_pulses_per_block_iCDF @791 - silk_quant_LTP_gains @792 - silk_quant_LTP_gains_FLP @793 - silk_rate_levels_BITS_Q5 @794 - silk_rate_levels_iCDF @795 - silk_regularize_correlations_FLP @796 - silk_resampler @797 - silk_resampler_down2 @798 - silk_resampler_down2_3 @799 - silk_resampler_frac_FIR_12 @800 - silk_resampler_init @801 - silk_resampler_private_AR2 @802 - silk_resampler_private_IIR_FIR @803 - silk_resampler_private_down_FIR @804 - silk_resampler_private_up2_HQ @805 - silk_resampler_private_up2_HQ_wrapper @806 - silk_residual_energy_FLP @807 - silk_residual_energy_covar_FLP @808 - silk_scale_copy_vector_FLP @809 - silk_scale_vector_FLP @810 - silk_schur_FLP @811 - silk_shell_code_table0 @812 - silk_shell_code_table1 @813 - silk_shell_code_table2 @814 - silk_shell_code_table3 @815 - silk_shell_code_table_offsets @816 - silk_shell_decoder @817 - silk_shell_encoder @818 - silk_sigm_Q15 @819 - silk_sign_iCDF @820 - silk_solve_LDL_FLP @821 - silk_stereo_LR_to_MS @822 - silk_stereo_MS_to_LR @823 - silk_stereo_decode_mid_only @824 - silk_stereo_decode_pred @825 - silk_stereo_encode_mid_only @826 - silk_stereo_encode_pred @827 - silk_stereo_find_predictor @828 - silk_stereo_only_code_mid_iCDF @829 - silk_stereo_pred_joint_iCDF @830 - silk_stereo_pred_quant_Q13 @831 - silk_stereo_quant_pred @832 - silk_sum_sqr_shift @833 - silk_type_offset_VAD_iCDF @834 - silk_type_offset_no_VAD_iCDF @835 - silk_uniform3_iCDF @836 - silk_uniform4_iCDF @837 - silk_uniform5_iCDF @838 - silk_uniform6_iCDF @839 - silk_uniform8_iCDF @840 - silk_warped_autocorrelation_FLP @841 - sock_valid @842 - sodium_bin2hex @843 - sodium_hex2bin @844 - sodium_init @845 - sodium_memcmp @846 - sodium_memzero @847 - sodium_mlock @848 - sodium_munlock @849 - sodium_runtime_get_cpu_features @850 - sodium_runtime_has_neon @851 - sodium_runtime_has_sse2 @852 - sodium_runtime_has_sse3 @853 - spreading_decision @854 - stereo_itheta @855 - tcp_onion_response_handler @856 - terminate_queue @857 - tf_select_table @858 - thread_print @859 - thread_print_set @860 - to_host_family @861 - to_net_family @862 - tonality_analysis @863 - tonality_get_info @864 - tox_add_friend @865 - tox_add_friend_norequest @866 - tox_add_groupchat @867 - tox_bootstrap_from_address @868 - tox_callback_connection_status @869 - tox_callback_file_control @870 - tox_callback_file_data @871 - tox_callback_file_send_request @872 - tox_callback_friend_action @873 - tox_callback_friend_message @874 - tox_callback_friend_request @875 - tox_callback_group_action @876 - tox_callback_group_invite @877 - tox_callback_group_message @878 - tox_callback_group_namelist_change @879 - tox_callback_name_change @880 - tox_callback_read_receipt @881 - tox_callback_status_message @882 - tox_callback_typing_change @883 - tox_callback_user_status @884 - tox_count_chatlist @885 - tox_count_friendlist @886 - tox_decrypt_dns3_TXT @887 - tox_del_friend @888 - tox_del_groupchat @889 - tox_dns3_kill @890 - tox_dns3_new @891 - tox_do @892 - tox_do_interval @893 - tox_file_data_remaining @894 - tox_file_data_size @895 - tox_file_send_control @896 - tox_file_send_data @897 - tox_friend_exists @898 - tox_generate_dns3_string @899 - tox_get_address @900 - tox_get_chatlist @901 - tox_get_client_id @902 - tox_get_friend_connection_status @903 - tox_get_friend_number @904 - tox_get_friendlist @905 - tox_get_is_typing @906 - tox_get_keys @907 - tox_get_last_online @908 - tox_get_name @909 - tox_get_name_size @910 - tox_get_nospam @911 - tox_get_num_online_friends @912 - tox_get_self_name @913 - tox_get_self_name_size @914 - tox_get_self_status_message @915 - tox_get_self_status_message_size @916 - tox_get_self_user_status @917 - tox_get_status_message @918 - tox_get_status_message_size @919 - tox_get_user_status @920 - tox_group_action_send @921 - tox_group_get_names @922 - tox_group_message_send @923 - tox_group_number_peers @924 - tox_group_peername @925 - tox_invite_friend @926 - tox_isconnected @927 - tox_join_groupchat @928 - tox_kill @929 - tox_load @930 - tox_new @931 - tox_new_file_sender @932 - tox_save @933 - tox_send_action @934 - tox_send_action_withid @935 - tox_send_message @936 - tox_send_message_withid @937 - tox_set_name @938 - tox_set_nospam @939 - tox_set_status_message @940 - tox_set_user_is_typing @941 - tox_set_user_status @942 - tox_size @943 - toxav_answer @944 - toxav_call @945 - toxav_cancel @946 - toxav_capability_supported @947 - toxav_change_settings @948 - toxav_get_call_state @949 - toxav_get_peer_csettings @950 - toxav_get_peer_id @951 - toxav_get_tox @952 - toxav_handle_packet @953 - toxav_hangup @954 - toxav_has_activity @955 - toxav_kill @956 - toxav_kill_transmission @957 - toxav_new @958 - toxav_prepare_audio_frame @959 - toxav_prepare_transmission @960 - toxav_prepare_video_frame @961 - toxav_register_audio_recv_callback @962 - toxav_register_callstate_callback @963 - toxav_register_video_recv_callback @964 - toxav_reject @965 - toxav_send_audio @966 - toxav_send_video @967 - toxav_stop_call @968 - unix_time @969 - unix_time_update @970 - unpack_nodes @971 - unquant_coarse_energy @972 - unquant_energy_finalise @973 - unquant_fine_energy @974 - vp8_ac2quant @975 - vp8_ac_uv_quant @976 - vp8_ac_yquant @977 - vp8_activity_masking @978 - vp8_adjust_key_frame_context @979 - vp8_alloc_compressor_data @980 - vp8_alloc_frame_buffers @981 - vp8_auto_select_speed @982 - vp8_bilinear_filters @983 - vp8_bilinear_filters_x86_4 @984 - vp8_bilinear_filters_x86_8 @985 - vp8_bilinear_predict16x16 @986 - vp8_bilinear_predict16x16_c @987 - vp8_bilinear_predict16x16_mmx @988 - vp8_bilinear_predict16x16_sse2 @989 - vp8_bilinear_predict16x16_ssse3 @990 - vp8_bilinear_predict4x4 @991 - vp8_bilinear_predict4x4_c @992 - vp8_bilinear_predict4x4_mmx @993 - vp8_bilinear_predict8x4 @994 - vp8_bilinear_predict8x4_c @995 - vp8_bilinear_predict8x4_mmx @996 - vp8_bilinear_predict8x8 @997 - vp8_bilinear_predict8x8_c @998 - vp8_bilinear_predict8x8_mmx @999 - vp8_bilinear_predict8x8_sse2 @1000 - vp8_bilinear_predict8x8_ssse3 @1001 - vp8_bits_per_mb @1002 - vp8_blend_b_c @1003 - vp8_blend_mb_inner_c @1004 - vp8_blend_mb_outer_c @1005 - vp8_block2above @1006 - vp8_block2left @1007 - vp8_block_error @1008 - vp8_block_error_c @1009 - vp8_block_error_mmx @1010 - vp8_block_error_xmm @1011 - vp8_bmode_encodings @1012 - vp8_bmode_prob @1013 - vp8_bmode_tree @1014 - vp8_build_block_doffsets @1015 - vp8_build_block_offsets @1016 - vp8_build_component_cost_table @1017 - vp8_build_inter16x16_predictors_mb @1018 - vp8_build_inter16x16_predictors_mbuv @1019 - vp8_build_inter16x16_predictors_mby @1020 - vp8_build_inter4x4_predictors_mbuv @1021 - vp8_build_inter_predictors_b @1022 - vp8_build_inter_predictors_mb @1023 - vp8_build_intra_predictors_mbuv_s @1024 - vp8_build_intra_predictors_mbuv_s_c @1025 - vp8_build_intra_predictors_mbuv_s_sse2 @1026 - vp8_build_intra_predictors_mbuv_s_ssse3 @1027 - vp8_build_intra_predictors_mby_s @1028 - vp8_build_intra_predictors_mby_s_c @1029 - vp8_build_intra_predictors_mby_s_sse2 @1030 - vp8_build_intra_predictors_mby_s_ssse3 @1031 - vp8_cal_sad @1032 - vp8_calc_ref_frame_costs @1033 - vp8_calc_ss_err @1034 - vp8_change_config @1035 - vp8_clear_system_state @1036 - vp8_clear_system_state_c @1037 - vp8_coef_bands @1038 - vp8_coef_encodings @1039 - vp8_coef_tree @1040 - vp8_coef_update_probs @1041 - vp8_compute_frame_size_bounds @1042 - vp8_convert_rfct_to_prob @1043 - vp8_copy32xn @1044 - vp8_copy32xn_c @1045 - vp8_copy32xn_sse2 @1046 - vp8_copy32xn_sse3 @1047 - vp8_copy_and_extend_frame @1048 - vp8_copy_and_extend_frame_with_rect @1049 - vp8_copy_mem16x16 @1050 - vp8_copy_mem16x16_c @1051 - vp8_copy_mem16x16_mmx @1052 - vp8_copy_mem16x16_sse2 @1053 - vp8_copy_mem8x4 @1054 - vp8_copy_mem8x4_c @1055 - vp8_copy_mem8x4_mmx @1056 - vp8_copy_mem8x8 @1057 - vp8_copy_mem8x8_c @1058 - vp8_copy_mem8x8_mmx @1059 - vp8_cost_mv_ref @1060 - vp8_cost_tokens @1061 - vp8_cost_tokens2 @1062 - vp8_create_common @1063 - vp8_create_compressor @1064 - vp8_create_decoder_instances @1065 - vp8_ctf_maps @1066 - vp8_dc2quant @1067 - vp8_dc_only_idct_add @1068 - vp8_dc_only_idct_add_c @1069 - vp8_dc_only_idct_add_mmx @1070 - vp8_dc_quant @1071 - vp8_dc_uv_quant @1072 - vp8_dct_value_cost_ptr @1073 - vp8_dct_value_tokens_ptr @1074 - vp8_de_alloc_frame_buffers @1075 - vp8_deblock @1076 - vp8_decode_frame @1077 - vp8_decode_mb_tokens @1078 - vp8_decode_mode_mvs @1079 - vp8_decoder_create_threads @1080 - vp8_decoder_remove_threads @1081 - vp8_default_bmode_probs @1082 - vp8_default_coef_probs @1083 - vp8_default_inv_zig_zag @1084 - vp8_default_mv_context @1085 - vp8_default_zig_zag1d @1086 - vp8_default_zig_zag_mask @1087 - vp8_denoiser_allocate @1088 - vp8_denoiser_denoise_mb @1089 - vp8_denoiser_filter @1090 - vp8_denoiser_filter_c @1091 - vp8_denoiser_filter_sse2 @1092 - vp8_denoiser_free @1093 - vp8_dequant_idct_add @1094 - vp8_dequant_idct_add_c @1095 - vp8_dequant_idct_add_mmx @1096 - vp8_dequant_idct_add_uv_block @1097 - vp8_dequant_idct_add_uv_block_c @1098 - vp8_dequant_idct_add_uv_block_mmx @1099 - vp8_dequant_idct_add_uv_block_sse2 @1100 - vp8_dequant_idct_add_y_block @1101 - vp8_dequant_idct_add_y_block_c @1102 - vp8_dequant_idct_add_y_block_mmx @1103 - vp8_dequant_idct_add_y_block_sse2 @1104 - vp8_dequantize_b @1105 - vp8_dequantize_b_c @1106 - vp8_dequantize_b_impl_mmx @1107 - vp8_dequantize_b_mmx @1108 - vp8_diamond_search_sad @1109 - vp8_diamond_search_sad_c @1110 - vp8_diamond_search_sadx4 @1111 - vp8_encode_frame @1112 - vp8_encode_inter16x16 @1113 - vp8_encode_inter16x16y @1114 - vp8_encode_intra @1115 - vp8_encode_intra16x16mbuv @1116 - vp8_encode_intra16x16mby @1117 - vp8_encode_intra4x4block @1118 - vp8_encode_intra4x4mby @1119 - vp8_encode_motion_vector @1120 - vp8_encode_value @1121 - vp8_end_first_pass @1122 - vp8_end_second_pass @1123 - vp8_estimate_entropy_savings @1124 - vp8_extend_mb_row @1125 - vp8_extra_bits @1126 - vp8_fast_quantize_b @1127 - vp8_fast_quantize_b_c @1128 - vp8_fast_quantize_b_impl_mmx @1129 - vp8_fast_quantize_b_mmx @1130 - vp8_fast_quantize_b_pair_c @1131 - vp8_fast_quantize_b_sse2 @1132 - vp8_fast_quantize_b_ssse3 @1133 - vp8_filter_block1d16_h6_only_sse2 @1134 - vp8_filter_block1d16_h6_sse2 @1135 - vp8_filter_block1d16_h6_ssse3 @1136 - vp8_filter_block1d16_v6_sse2 @1137 - vp8_filter_block1d16_v6_ssse3 @1138 - vp8_filter_block1d4_h6_ssse3 @1139 - vp8_filter_block1d4_v6_ssse3 @1140 - vp8_filter_block1d8_h6_only_sse2 @1141 - vp8_filter_block1d8_h6_sse2 @1142 - vp8_filter_block1d8_h6_ssse3 @1143 - vp8_filter_block1d8_v6_only_sse2 @1144 - vp8_filter_block1d8_v6_sse2 @1145 - vp8_filter_block1d8_v6_ssse3 @1146 - vp8_filter_block1d_h6_mmx @1147 - vp8_filter_block1dc_v6_mmx @1148 - vp8_filter_block2d_bil4x4_var_mmx @1149 - vp8_filter_block2d_bil_var_mmx @1150 - vp8_filter_block2d_bil_var_sse2 @1151 - vp8_filter_block2d_bil_var_ssse3 @1152 - vp8_filter_by_weight16x16 @1153 - vp8_filter_by_weight16x16_c @1154 - vp8_filter_by_weight16x16_sse2 @1155 - vp8_filter_by_weight4x4_c @1156 - vp8_filter_by_weight8x8 @1157 - vp8_filter_by_weight8x8_c @1158 - vp8_filter_by_weight8x8_sse2 @1159 - vp8_find_best_half_pixel_step @1160 - vp8_find_best_sub_pixel_step @1161 - vp8_find_best_sub_pixel_step_iteratively @1162 - vp8_find_near_mvs @1163 - vp8_find_near_mvs_bias @1164 - vp8_first_pass @1165 - vp8_fix_contexts @1166 - vp8_full_search_sad @1167 - vp8_full_search_sad_c @1168 - vp8_full_search_sadx3 @1169 - vp8_full_search_sadx8 @1170 - vp8_gaussian @1171 - vp8_get16x16var_sse2 @1172 - vp8_get4x4sse_cs @1173 - vp8_get4x4sse_cs_c @1174 - vp8_get4x4sse_cs_mmx @1175 - vp8_get4x4var_mmx @1176 - vp8_get8x8var_mmx @1177 - vp8_get8x8var_sse2 @1178 - vp8_get_compressed_data @1179 - vp8_get_inter_mbpred_error @1180 - vp8_get_mb_ss @1181 - vp8_get_mb_ss_c @1182 - vp8_get_mb_ss_mmx @1183 - vp8_get_mb_ss_sse2 @1184 - vp8_get_preview_raw_frame @1185 - vp8_get_quantizer @1186 - vp8_get_reference @1187 - vp8_gf_boost_qadjustment @1188 - vp8_half_horiz_variance16x_h_sse2 @1189 - vp8_half_horiz_variance8x_h_sse2 @1190 - vp8_half_horiz_vert_variance16x_h_sse2 @1191 - vp8_half_horiz_vert_variance8x_h_sse2 @1192 - vp8_half_vert_variance16x_h_sse2 @1193 - vp8_half_vert_variance8x_h_sse2 @1194 - vp8_hex_search @1195 - vp8_horizontal_line_2_1_scale_c @1196 - vp8_horizontal_line_5_3_scale_c @1197 - vp8_horizontal_line_5_4_scale_c @1198 - vp8_idct_dequant_0_2x_sse2 @1199 - vp8_idct_dequant_dc_0_2x_sse2 @1200 - vp8_idct_dequant_dc_full_2x_sse2 @1201 - vp8_idct_dequant_full_2x_sse2 @1202 - vp8_init3smotion_compensation @1203 - vp8_init_dsmotion_compensation @1204 - vp8_init_first_pass @1205 - vp8_init_mbmode_probs @1206 - vp8_init_mode_costs @1207 - vp8_init_second_pass @1208 - vp8_initialize_rd_consts @1209 - vp8_intra4x4_predict_c @1210 - vp8_intra_pred_uv_dc128_mmx @1211 - vp8_intra_pred_uv_dc_mmx2 @1212 - vp8_intra_pred_uv_dcleft_mmx2 @1213 - vp8_intra_pred_uv_dctop_mmx2 @1214 - vp8_intra_pred_uv_ho_mmx2 @1215 - vp8_intra_pred_uv_ho_ssse3 @1216 - vp8_intra_pred_uv_tm_sse2 @1217 - vp8_intra_pred_uv_tm_ssse3 @1218 - vp8_intra_pred_uv_ve_mmx @1219 - vp8_intra_pred_y_dc128_sse2 @1220 - vp8_intra_pred_y_dc_sse2 @1221 - vp8_intra_pred_y_dcleft_sse2 @1222 - vp8_intra_pred_y_dctop_sse2 @1223 - vp8_intra_pred_y_ho_sse2 @1224 - vp8_intra_pred_y_tm_sse2 @1225 - vp8_intra_pred_y_tm_ssse3 @1226 - vp8_intra_pred_y_ve_sse2 @1227 - vp8_kf_bmode_prob @1228 - vp8_kf_uv_mode_prob @1229 - vp8_kf_ymode_encodings @1230 - vp8_kf_ymode_prob @1231 - vp8_kf_ymode_tree @1232 - vp8_lookahead_depth @1233 - vp8_lookahead_destroy @1234 - vp8_lookahead_init @1235 - vp8_lookahead_peek @1236 - vp8_lookahead_pop @1237 - vp8_lookahead_push @1238 - vp8_loop_filter_bh @1239 - vp8_loop_filter_bh_c @1240 - vp8_loop_filter_bh_mmx @1241 - vp8_loop_filter_bh_sse2 @1242 - vp8_loop_filter_bhs_c @1243 - vp8_loop_filter_bhs_mmx @1244 - vp8_loop_filter_bhs_sse2 @1245 - vp8_loop_filter_bv @1246 - vp8_loop_filter_bv_c @1247 - vp8_loop_filter_bv_mmx @1248 - vp8_loop_filter_bv_sse2 @1249 - vp8_loop_filter_bvs_c @1250 - vp8_loop_filter_bvs_mmx @1251 - vp8_loop_filter_bvs_sse2 @1252 - vp8_loop_filter_frame @1253 - vp8_loop_filter_frame_init @1254 - vp8_loop_filter_frame_yonly @1255 - vp8_loop_filter_horizontal_edge_c @1256 - vp8_loop_filter_horizontal_edge_mmx @1257 - vp8_loop_filter_horizontal_edge_sse2 @1258 - vp8_loop_filter_horizontal_edge_uv_sse2 @1259 - vp8_loop_filter_init @1260 - vp8_loop_filter_mbh @1261 - vp8_loop_filter_mbh_c @1262 - vp8_loop_filter_mbh_mmx @1263 - vp8_loop_filter_mbh_sse2 @1264 - vp8_loop_filter_mbv @1265 - vp8_loop_filter_mbv_c @1266 - vp8_loop_filter_mbv_mmx @1267 - vp8_loop_filter_mbv_sse2 @1268 - vp8_loop_filter_partial_frame @1269 - vp8_loop_filter_row_normal @1270 - vp8_loop_filter_row_simple @1271 - vp8_loop_filter_simple_bh @1272 - vp8_loop_filter_simple_bv @1273 - vp8_loop_filter_simple_horizontal_edge_c @1274 - vp8_loop_filter_simple_horizontal_edge_mmx @1275 - vp8_loop_filter_simple_horizontal_edge_sse2 @1276 - vp8_loop_filter_simple_mbh @1277 - vp8_loop_filter_simple_mbv @1278 - vp8_loop_filter_simple_vertical_edge_c @1279 - vp8_loop_filter_simple_vertical_edge_mmx @1280 - vp8_loop_filter_simple_vertical_edge_sse2 @1281 - vp8_loop_filter_update_sharpness @1282 - vp8_loop_filter_vertical_edge_c @1283 - vp8_loop_filter_vertical_edge_mmx @1284 - vp8_loop_filter_vertical_edge_sse2 @1285 - vp8_loop_filter_vertical_edge_uv_sse2 @1286 - vp8_loopfilter_frame @1287 - vp8_machine_specific_config @1288 - vp8_mb_feature_data_bits @1289 - vp8_mb_init_dequantizer @1290 - vp8_mbblock_error @1291 - vp8_mbblock_error_c @1292 - vp8_mbblock_error_mmx @1293 - vp8_mbblock_error_mmx_impl @1294 - vp8_mbblock_error_xmm @1295 - vp8_mbblock_error_xmm_impl @1296 - vp8_mbloop_filter_horizontal_edge_c @1297 - vp8_mbloop_filter_horizontal_edge_mmx @1298 - vp8_mbloop_filter_horizontal_edge_sse2 @1299 - vp8_mbloop_filter_horizontal_edge_uv_sse2 @1300 - vp8_mbloop_filter_vertical_edge_c @1301 - vp8_mbloop_filter_vertical_edge_mmx @1302 - vp8_mbloop_filter_vertical_edge_sse2 @1303 - vp8_mbloop_filter_vertical_edge_uv_sse2 @1304 - vp8_mbpost_proc_across_ip @1305 - vp8_mbpost_proc_across_ip_c @1306 - vp8_mbpost_proc_across_ip_xmm @1307 - vp8_mbpost_proc_down @1308 - vp8_mbpost_proc_down_c @1309 - vp8_mbpost_proc_down_mmx @1310 - vp8_mbpost_proc_down_xmm @1311 - vp8_mbsplit_count @1312 - vp8_mbsplit_encodings @1313 - vp8_mbsplit_offset @1314 - vp8_mbsplit_probs @1315 - vp8_mbsplit_tree @1316 - vp8_mbsplits @1317 - vp8_mbuverror @1318 - vp8_mbuverror_c @1319 - vp8_mbuverror_mmx @1320 - vp8_mbuverror_mmx_impl @1321 - vp8_mbuverror_xmm @1322 - vp8_mbuverror_xmm_impl @1323 - vp8_mode_contexts @1324 - vp8_mode_order @1325 - vp8_mse16x16 @1326 - vp8_mse16x16_c @1327 - vp8_mse16x16_mmx @1328 - vp8_mse16x16_wmt @1329 - vp8_mse2psnr @1330 - vp8_multiframe_quality_enhance @1331 - vp8_mv_bit_cost @1332 - vp8_mv_cont @1333 - vp8_mv_pred @1334 - vp8_mv_ref_encoding_array @1335 - vp8_mv_ref_probs @1336 - vp8_mv_ref_tree @1337 - vp8_mv_update_probs @1338 - vp8_new_framerate @1339 - vp8_norm @1340 - vp8_optimize_mbuv @1341 - vp8_optimize_mby @1342 - vp8_pack_bitstream @1343 - vp8_pack_tokens_c @1344 - vp8_pick_frame_size @1345 - vp8_pick_inter_mode @1346 - vp8_pick_intra_mode @1347 - vp8_plane_add_noise @1348 - vp8_plane_add_noise_c @1349 - vp8_plane_add_noise_mmx @1350 - vp8_plane_add_noise_wmt @1351 - vp8_post_proc_down_and_across_mb_row @1352 - vp8_post_proc_down_and_across_mb_row_c @1353 - vp8_post_proc_down_and_across_mb_row_sse2 @1354 - vp8_post_proc_frame @1355 - vp8_prev_token_class @1356 - vp8_prob_cost @1357 - vp8_quantize_mb_c @1358 - vp8_quantize_mbuv_c @1359 - vp8_quantize_mby_c @1360 - vp8_rd_pick_inter_mode @1361 - vp8_rd_pick_intra_mode @1362 - vp8_receive_raw_frame @1363 - vp8_ref_frame_order @1364 - vp8_refining_search_sad @1365 - vp8_refining_search_sad_c @1366 - vp8_refining_search_sadx4 @1367 - vp8_regular_quantize_b @1368 - vp8_regular_quantize_b_c @1369 - vp8_regular_quantize_b_pair_c @1370 - vp8_regular_quantize_b_sse2 @1371 - vp8_regulate_q @1372 - vp8_remove_common @1373 - vp8_remove_compressor @1374 - vp8_remove_decoder_instances @1375 - vp8_reset_mb_tokens_context @1376 - vp8_restore_coding_context @1377 - vp8_reverse_trans @1378 - vp8_rtcd @1379 - vp8_rv @1380 - vp8_sad16x16 @1381 - vp8_sad16x16_c @1382 - vp8_sad16x16_mmx @1383 - vp8_sad16x16_sse3 @1384 - vp8_sad16x16_wmt @1385 - vp8_sad16x16x3 @1386 - vp8_sad16x16x3_c @1387 - vp8_sad16x16x3_sse3 @1388 - vp8_sad16x16x3_ssse3 @1389 - vp8_sad16x16x4d @1390 - vp8_sad16x16x4d_c @1391 - vp8_sad16x16x4d_sse3 @1392 - vp8_sad16x16x8 @1393 - vp8_sad16x16x8_c @1394 - vp8_sad16x16x8_sse4 @1395 - vp8_sad16x8 @1396 - vp8_sad16x8_c @1397 - vp8_sad16x8_mmx @1398 - vp8_sad16x8_wmt @1399 - vp8_sad16x8x3 @1400 - vp8_sad16x8x3_c @1401 - vp8_sad16x8x3_sse3 @1402 - vp8_sad16x8x3_ssse3 @1403 - vp8_sad16x8x4d @1404 - vp8_sad16x8x4d_c @1405 - vp8_sad16x8x4d_sse3 @1406 - vp8_sad16x8x8 @1407 - vp8_sad16x8x8_c @1408 - vp8_sad16x8x8_sse4 @1409 - vp8_sad4x4 @1410 - vp8_sad4x4_c @1411 - vp8_sad4x4_mmx @1412 - vp8_sad4x4_wmt @1413 - vp8_sad4x4x3 @1414 - vp8_sad4x4x3_c @1415 - vp8_sad4x4x3_sse3 @1416 - vp8_sad4x4x4d @1417 - vp8_sad4x4x4d_c @1418 - vp8_sad4x4x4d_sse3 @1419 - vp8_sad4x4x8 @1420 - vp8_sad4x4x8_c @1421 - vp8_sad4x4x8_sse4 @1422 - vp8_sad8x16 @1423 - vp8_sad8x16_c @1424 - vp8_sad8x16_mmx @1425 - vp8_sad8x16_wmt @1426 - vp8_sad8x16x3 @1427 - vp8_sad8x16x3_c @1428 - vp8_sad8x16x3_sse3 @1429 - vp8_sad8x16x4d @1430 - vp8_sad8x16x4d_c @1431 - vp8_sad8x16x4d_sse3 @1432 - vp8_sad8x16x8 @1433 - vp8_sad8x16x8_c @1434 - vp8_sad8x16x8_sse4 @1435 - vp8_sad8x8 @1436 - vp8_sad8x8_c @1437 - vp8_sad8x8_mmx @1438 - vp8_sad8x8_wmt @1439 - vp8_sad8x8x3 @1440 - vp8_sad8x8x3_c @1441 - vp8_sad8x8x3_sse3 @1442 - vp8_sad8x8x4d @1443 - vp8_sad8x8x4d_c @1444 - vp8_sad8x8x4d_sse3 @1445 - vp8_sad8x8x8 @1446 - vp8_sad8x8x8_c @1447 - vp8_sad8x8x8_sse4 @1448 - vp8_save_coding_context @1449 - vp8_second_pass @1450 - vp8_set_active_map @1451 - vp8_set_internal_size @1452 - vp8_set_mbmode_and_mvs @1453 - vp8_set_quantizer @1454 - vp8_set_reference @1455 - vp8_set_roimap @1456 - vp8_set_speed_features @1457 - vp8_setup_block_dptrs @1458 - vp8_setup_block_ptrs @1459 - vp8_setup_intra_recon @1460 - vp8_setup_intra_recon_top_line @1461 - vp8_setup_key_frame @1462 - vp8_setup_version @1463 - vp8_short_fdct4x4 @1464 - vp8_short_fdct4x4_c @1465 - vp8_short_fdct4x4_mmx @1466 - vp8_short_fdct4x4_sse2 @1467 - vp8_short_fdct8x4 @1468 - vp8_short_fdct8x4_c @1469 - vp8_short_fdct8x4_mmx @1470 - vp8_short_fdct8x4_sse2 @1471 - vp8_short_idct4x4llm @1472 - vp8_short_idct4x4llm_c @1473 - vp8_short_idct4x4llm_mmx @1474 - vp8_short_inv_walsh4x4 @1475 - vp8_short_inv_walsh4x4_1_c @1476 - vp8_short_inv_walsh4x4_c @1477 - vp8_short_inv_walsh4x4_mmx @1478 - vp8_short_inv_walsh4x4_sse2 @1479 - vp8_short_walsh4x4 @1480 - vp8_short_walsh4x4_c @1481 - vp8_short_walsh4x4_sse2 @1482 - vp8_six_tap_mmx @1483 - vp8_sixtap_predict16x16 @1484 - vp8_sixtap_predict16x16_c @1485 - vp8_sixtap_predict16x16_mmx @1486 - vp8_sixtap_predict16x16_sse2 @1487 - vp8_sixtap_predict16x16_ssse3 @1488 - vp8_sixtap_predict4x4 @1489 - vp8_sixtap_predict4x4_c @1490 - vp8_sixtap_predict4x4_mmx @1491 - vp8_sixtap_predict4x4_ssse3 @1492 - vp8_sixtap_predict8x4 @1493 - vp8_sixtap_predict8x4_c @1494 - vp8_sixtap_predict8x4_mmx @1495 - vp8_sixtap_predict8x4_sse2 @1496 - vp8_sixtap_predict8x4_ssse3 @1497 - vp8_sixtap_predict8x8 @1498 - vp8_sixtap_predict8x8_c @1499 - vp8_sixtap_predict8x8_mmx @1500 - vp8_sixtap_predict8x8_sse2 @1501 - vp8_sixtap_predict8x8_ssse3 @1502 - vp8_skip_fractional_mv_step @1503 - vp8_small_mvencodings @1504 - vp8_small_mvtree @1505 - vp8_start_encode @1506 - vp8_stop_encode @1507 - vp8_strict_quantize_b_c @1508 - vp8_stuff_mb @1509 - vp8_sub_mv_ref_encoding_array @1510 - vp8_sub_mv_ref_prob2 @1511 - vp8_sub_mv_ref_prob3 @1512 - vp8_sub_mv_ref_tree @1513 - vp8_sub_pel_filters @1514 - vp8_sub_pixel_mse16x16 @1515 - vp8_sub_pixel_mse16x16_c @1516 - vp8_sub_pixel_mse16x16_mmx @1517 - vp8_sub_pixel_mse16x16_wmt @1518 - vp8_sub_pixel_variance16x16 @1519 - vp8_sub_pixel_variance16x16_c @1520 - vp8_sub_pixel_variance16x16_mmx @1521 - vp8_sub_pixel_variance16x16_ssse3 @1522 - vp8_sub_pixel_variance16x16_wmt @1523 - vp8_sub_pixel_variance16x8 @1524 - vp8_sub_pixel_variance16x8_c @1525 - vp8_sub_pixel_variance16x8_mmx @1526 - vp8_sub_pixel_variance16x8_ssse3 @1527 - vp8_sub_pixel_variance16x8_wmt @1528 - vp8_sub_pixel_variance4x4 @1529 - vp8_sub_pixel_variance4x4_c @1530 - vp8_sub_pixel_variance4x4_mmx @1531 - vp8_sub_pixel_variance4x4_wmt @1532 - vp8_sub_pixel_variance8x16 @1533 - vp8_sub_pixel_variance8x16_c @1534 - vp8_sub_pixel_variance8x16_mmx @1535 - vp8_sub_pixel_variance8x16_wmt @1536 - vp8_sub_pixel_variance8x8 @1537 - vp8_sub_pixel_variance8x8_c @1538 - vp8_sub_pixel_variance8x8_mmx @1539 - vp8_sub_pixel_variance8x8_wmt @1540 - vp8_subtract_b @1541 - vp8_subtract_b_c @1542 - vp8_subtract_b_mmx @1543 - vp8_subtract_b_mmx_impl @1544 - vp8_subtract_b_sse2 @1545 - vp8_subtract_b_sse2_impl @1546 - vp8_subtract_mbuv @1547 - vp8_subtract_mbuv_c @1548 - vp8_subtract_mbuv_mmx @1549 - vp8_subtract_mbuv_sse2 @1550 - vp8_subtract_mby @1551 - vp8_subtract_mby_c @1552 - vp8_subtract_mby_mmx @1553 - vp8_subtract_mby_sse2 @1554 - vp8_swap_yv12_buffer @1555 - vp8_temporal_filter_apply @1556 - vp8_temporal_filter_apply_c @1557 - vp8_temporal_filter_apply_sse2 @1558 - vp8_temporal_filter_prepare_c @1559 - vp8_tokenize_mb @1560 - vp8_tokens_from_tree @1561 - vp8_tokens_from_tree_offset @1562 - vp8_transform_intra_mby @1563 - vp8_transform_mbuv @1564 - vp8_tree_probs_from_distribution @1565 - vp8_unpack_block1d16_h6_sse2 @1566 - vp8_update_coef_probs @1567 - vp8_update_entropy @1568 - vp8_update_gf_useage_maps @1569 - vp8_update_rate_correction_factors @1570 - vp8_update_reference @1571 - vp8_update_zbin_extra @1572 - vp8_use_as_reference @1573 - vp8_uv_mode_encodings @1574 - vp8_uv_mode_prob @1575 - vp8_uv_mode_tree @1576 - vp8_variance16x16 @1577 - vp8_variance16x16_c @1578 - vp8_variance16x16_mmx @1579 - vp8_variance16x16_wmt @1580 - vp8_variance16x8 @1581 - vp8_variance16x8_c @1582 - vp8_variance16x8_mmx @1583 - vp8_variance16x8_wmt @1584 - vp8_variance4x4 @1585 - vp8_variance4x4_c @1586 - vp8_variance4x4_mmx @1587 - vp8_variance4x4_wmt @1588 - vp8_variance8x16 @1589 - vp8_variance8x16_c @1590 - vp8_variance8x16_mmx @1591 - vp8_variance8x16_wmt @1592 - vp8_variance8x8 @1593 - vp8_variance8x8_c @1594 - vp8_variance8x8_mmx @1595 - vp8_variance8x8_wmt @1596 - vp8_variance_and_sad_16x16_sse2 @1597 - vp8_variance_halfpixvar16x16_h @1598 - vp8_variance_halfpixvar16x16_h_c @1599 - vp8_variance_halfpixvar16x16_h_mmx @1600 - vp8_variance_halfpixvar16x16_h_wmt @1601 - vp8_variance_halfpixvar16x16_hv @1602 - vp8_variance_halfpixvar16x16_hv_c @1603 - vp8_variance_halfpixvar16x16_hv_mmx @1604 - vp8_variance_halfpixvar16x16_hv_wmt @1605 - vp8_variance_halfpixvar16x16_v @1606 - vp8_variance_halfpixvar16x16_v_c @1607 - vp8_variance_halfpixvar16x16_v_mmx @1608 - vp8_variance_halfpixvar16x16_v_wmt @1609 - vp8_vertical_band_2_1_scale_c @1610 - vp8_vertical_band_2_1_scale_i_c @1611 - vp8_vertical_band_5_3_scale_c @1612 - vp8_vertical_band_5_4_scale_c @1613 - vp8_write_mvprobs @1614 - vp8_ymode_encodings @1615 - vp8_ymode_prob @1616 - vp8_ymode_tree @1617 - vp8_yv12_alloc_frame_buffer @1618 - vp8_yv12_copy_frame_c @1619 - vp8_yv12_copy_partial_frame_c @1620 - vp8_yv12_de_alloc_frame_buffer @1621 - vp8_yv12_extend_frame_borders_c @1622 - vp8_yv12_realloc_frame_buffer @1623 - vp8cx_base_skip_false_prob @1624 - vp8cx_create_encoder_threads @1625 - vp8cx_encode_inter_macroblock @1626 - vp8cx_encode_intra_macroblock @1627 - vp8cx_frame_init_quantizer @1628 - vp8cx_init_de_quantizer @1629 - vp8cx_init_mbrthread_data @1630 - vp8cx_init_quantizer @1631 - vp8cx_initialize_me_consts @1632 - vp8cx_mb_init_quantizer @1633 - vp8cx_pick_filter_level @1634 - vp8cx_pick_filter_level_fast @1635 - vp8cx_remove_encoder_threads @1636 - vp8cx_set_alt_lf_level @1637 - vp8dx_bool_decoder_fill @1638 - vp8dx_get_raw_frame @1639 - vp8dx_get_reference @1640 - vp8dx_receive_compressed_data @1641 - vp8dx_references_buffer @1642 - vp8dx_set_reference @1643 - vp8dx_start_decode @1644 - vp8mt_alloc_temp_buffers @1645 - vp8mt_de_alloc_temp_buffers @1646 - vp8mt_decode_mb_rows @1647 - vp9_alloc_frame_buffer @1648 - vp9_extend_frame_borders_c @1649 - vp9_extend_frame_inner_borders_c @1650 - vp9_free_frame_buffer @1651 - vp9_realloc_frame_buffer @1652 - vpx_calloc @1653 - vpx_codec_control_ @1654 - vpx_codec_dec_init_ver @1655 - vpx_codec_decode @1656 - vpx_codec_destroy @1657 - vpx_codec_enc_config_default @1658 - vpx_codec_enc_config_set @1659 - vpx_codec_enc_init_multi_ver @1660 - vpx_codec_enc_init_ver @1661 - vpx_codec_encode @1662 - vpx_codec_err_to_string @1663 - vpx_codec_error @1664 - vpx_codec_error_detail @1665 - vpx_codec_get_caps @1666 - vpx_codec_get_cx_data @1667 - vpx_codec_get_frame @1668 - vpx_codec_get_global_headers @1669 - vpx_codec_get_mem_map @1670 - vpx_codec_get_preview_frame @1671 - vpx_codec_get_stream_info @1672 - vpx_codec_iface_name @1673 - vpx_codec_peek_stream_info @1674 - vpx_codec_pkt_list_add @1675 - vpx_codec_pkt_list_get @1676 - vpx_codec_register_put_frame_cb @1677 - vpx_codec_register_put_slice_cb @1678 - vpx_codec_set_cx_data_buf @1679 - vpx_codec_set_mem_map @1680 - vpx_codec_version @1681 - vpx_codec_version_extra_str @1682 - vpx_codec_version_str @1683 - vpx_codec_vp8_cx @1684 - vpx_codec_vp8_cx_algo @1685 - vpx_codec_vp8_dx @1686 - vpx_codec_vp8_dx_algo @1687 - vpx_free @1688 - vpx_malloc @1689 - vpx_mem_get_version @1690 - vpx_mem_set_functions @1691 - vpx_mem_set_heap_size @1692 - vpx_mem_unset_functions @1693 - vpx_memalign @1694 - vpx_memcpy @1695 - vpx_memmove @1696 - vpx_memset @1697 - vpx_mmap_alloc @1698 - vpx_mmap_dtor @1699 - vpx_realloc @1700 - vpx_reset_mmx_state @1701 - vpx_scale_frame @1702 - vpx_scale_rtcd @1703 - vpx_validate_mmaps @1704 - vpx_yv12_copy_y_c @1705 - write_cryptpacket @1706 diff --git a/protocols/Tox/lib/x86/libtox.exp b/protocols/Tox/lib/x86/libtox.exp deleted file mode 100644 index b9b3285af6..0000000000 Binary files a/protocols/Tox/lib/x86/libtox.exp and /dev/null differ diff --git a/protocols/Tox/lib/x86/libtox.lib b/protocols/Tox/lib/x86/libtox.lib deleted file mode 100644 index e796ec22e0..0000000000 Binary files a/protocols/Tox/lib/x86/libtox.lib and /dev/null differ diff --git a/protocols/Tox/res/resource.aps b/protocols/Tox/res/resource.aps new file mode 100644 index 0000000000..1bf17c7ce1 Binary files /dev/null and b/protocols/Tox/res/resource.aps differ diff --git a/protocols/Tox/src/common.h b/protocols/Tox/src/common.h index bb417850ca..e7fd4ce733 100644 --- a/protocols/Tox/src/common.h +++ b/protocols/Tox/src/common.h @@ -29,12 +29,11 @@ #include #include -#include "tox\tox.h" +#include #include "version.h" #include "resource.h" #include "tox_proto.h" -#include "file_transfer.h" extern HINSTANCE g_hInstance; diff --git a/protocols/Tox/src/file_transfer.h b/protocols/Tox/src/file_transfer.h deleted file mode 100644 index 6f30b90241..0000000000 --- a/protocols/Tox/src/file_transfer.h +++ /dev/null @@ -1,197 +0,0 @@ -#ifndef _FILE_TRANSFER_H_ -#define _FILE_TRANSFER_H_ - -class CFileTransfer; - -class CFile -{ -private: - int number; - char *name; - const TCHAR *path; - size_t size; - - const CFileTransfer *transfer; - -public: - CFile(const CFileTransfer *fileTransfer, const TCHAR *filePath, size_t fileSize) : - number(-1) - { - transfer = fileTransfer; - - path = filePath; - name = strrchr(ptrA(mir_utf8encodeT(path)), '\\'); - size = fileSize; - } - - CFile(int number) : number(number), name(NULL) { } - - ~CFile() - { - number = -1; - if (name != NULL) - { - mir_free(name); - } - } - - const CFileTransfer *GetTransfer() const - { - return this->transfer; - } - - void SetNumber(int fileNumber) - { - number = fileNumber; - } - - const TCHAR* GetPath() const - { - return path; - } - - const char* GetName() const - { - return name; - } - - size_t GetSize() const - { - return size; - } -}; - -class CFileTransfer -{ -private: - ULONG number; - - HANDLE hWait; - LIST files; - PROTOFILETRANSFERSTATUS pfts; - const PROTO_INTERFACE *proto; - -public: - CFileTransfer(const PROTO_INTERFACE *proto, MCONTACT hContact, ULONG transferNumber, DWORD flags) : - files(1, NumericKeySortT) - { - this->proto = proto; - - pfts.cbSize = sizeof(pfts); - pfts.flags = PFTS_TCHAR | flags; - pfts.hContact = hContact; - pfts.currentFileNumber = 0; - pfts.currentFileProgress = 0; - pfts.currentFileSize = 0; - pfts.totalBytes = 0; - pfts.totalFiles = 0; - pfts.totalProgress = 0; - pfts.pszFiles = NULL; - pfts.tszWorkingDir = NULL; - pfts.tszCurrentFile = NULL; - - number = transferNumber; - } - - ~CFileTransfer() - { - if (pfts.tszWorkingDir) - mir_free(pfts.tszWorkingDir); - if (pfts.ptszFiles) - { - for (int i = 0; pfts.ptszFiles[i]; i++) - { - if (pfts.ptszFiles[i]) mir_free(pfts.ptszFiles[i]); - } - mir_free(pfts.ptszFiles); - } - } - - void ProcessTransferedFiles(TCHAR** ppszFiles) - { - for (pfts.totalFiles = 0; ppszFiles[pfts.totalFiles]; pfts.totalFiles++); - pfts.ptszFiles = (TCHAR**)mir_alloc(sizeof(TCHAR*)*(pfts.totalFiles + 1)); - pfts.ptszFiles[pfts.totalFiles] = NULL; - for (int i = 0; ppszFiles[i]; i++) - { - if (!pfts.tszWorkingDir) - { - wchar_t *path = ppszFiles[i]; - int length = wcsrchr(path, '\\') - path; - pfts.tszWorkingDir = (TCHAR*)mir_alloc(sizeof(TCHAR)*(length + 1)); - lstrcpyn(pfts.tszWorkingDir, ppszFiles[i], length + 1); - pfts.tszWorkingDir[length] = '\0'; - } - - pfts.ptszFiles[i] = mir_tstrdup(ppszFiles[i]); - - size_t fileSize = 0; - FILE *file = _tfopen(ppszFiles[i], _T("rb")); - if (file != NULL) - { - fseek(file, 0, SEEK_END); - pfts.totalBytes += fileSize = ftell(file); - fseek(file, 0, SEEK_SET); - fclose(file); - } - - files.insert(new CFile(this, ppszFiles[i], fileSize)); - } - } - - const PROTO_INTERFACE *GetProtoInstance() const - { - return proto; - } - - ULONG GetTransferNumber() const - { - return number; - } - - MCONTACT GetContactHandle() const - { - return pfts.hContact; - } - - int GetFileCount() const - { - return pfts.totalFiles; - } - - CFile *GetFileAt(int idx) const - { - return files[idx]; - } - - CFile *GetFileByNumber(int number) const - { - CFile *search = new CFile(number); - CFile *file = files.find(search); - delete search; - - return file; - } - - bool HasFile(int number) const - { - const CFile *file = GetFileByNumber(number); - - return file != NULL; - } - - void Wait() - { - WaitForSingleObject(hWait, INFINITE); - } -}; - -class CFileSendTransfer : public CFileTransfer -{ -public: - CFileSendTransfer(MCONTACT hContact, ULONG hProcess) : CFileTransfer(NULL, hContact, hProcess, PFTS_SENDING) - { - } -}; - -#endif //_FILE_TRANSFER_H_ \ No newline at end of file diff --git a/protocols/Tox/src/main.cpp b/protocols/Tox/src/main.cpp index f9322d7f3e..dcf36ddbb6 100644 --- a/protocols/Tox/src/main.cpp +++ b/protocols/Tox/src/main.cpp @@ -39,8 +39,8 @@ extern "C" int __declspec(dllexport) Load(void) PROTOCOLDESCRIPTOR pd = { sizeof(pd) }; pd.szName = "TOX"; pd.type = PROTOTYPE_PROTOCOL; - pd.fnInit = (pfnInitProto)CToxProto::InitProtoInstance; - pd.fnUninit = (pfnUninitProto)CToxProto::UninitProtoInstance; + pd.fnInit = (pfnInitProto)CToxProto::InitAccount; + pd.fnUninit = (pfnUninitProto)CToxProto::UninitAccount; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); return 0; diff --git a/protocols/Tox/src/stdafx.cpp b/protocols/Tox/src/stdafx.cpp deleted file mode 100644 index 7d92b0fd29..0000000000 --- a/protocols/Tox/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (c) 2013-14 Miranda NG project (http://miranda-ng.org) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation version 2 -of the License. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "common.h" diff --git a/protocols/Tox/src/tox/tox.h b/protocols/Tox/src/tox/tox.h deleted file mode 100644 index 5810c1289c..0000000000 --- a/protocols/Tox/src/tox/tox.h +++ /dev/null @@ -1,683 +0,0 @@ -/* tox.h - * - * The Tox public API. - * - * Copyright (C) 2013 Tox project All Rights Reserved. - * - * This file is part of Tox. - * - * Tox is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tox 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tox. If not, see . - * - */ - -#ifndef TOX_H -#define TOX_H - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -#define TOX_MAX_NAME_LENGTH 128 - -/* Maximum length of single messages after which they should be split. */ -#define TOX_MAX_MESSAGE_LENGTH 1368 -#define TOX_MAX_STATUSMESSAGE_LENGTH 1007 -#define TOX_CLIENT_ID_SIZE 32 - -#define TOX_FRIEND_ADDRESS_SIZE (TOX_CLIENT_ID_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) - -#define TOX_ENABLE_IPV6_DEFAULT 1 - -/* Errors for m_addfriend - * FAERR - Friend Add Error - */ -enum { - TOX_FAERR_TOOLONG = -1, - TOX_FAERR_NOMESSAGE = -2, - TOX_FAERR_OWNKEY = -3, - TOX_FAERR_ALREADYSENT = -4, - TOX_FAERR_UNKNOWN = -5, - TOX_FAERR_BADCHECKSUM = -6, - TOX_FAERR_SETNEWNOSPAM = -7, - TOX_FAERR_NOMEM = -8 -}; - -/* USERSTATUS - - * Represents userstatuses someone can have. - */ -typedef enum { - TOX_USERSTATUS_NONE, - TOX_USERSTATUS_AWAY, - TOX_USERSTATUS_BUSY, - TOX_USERSTATUS_INVALID -} -TOX_USERSTATUS; - -#ifndef __TOX_DEFINED__ -#define __TOX_DEFINED__ -typedef struct Tox Tox; -#endif - -/* NOTE: Strings in Tox are all UTF-8, (This means that there is no terminating NULL character.) - * - * The exact buffer you send will be received at the other end without modification. - * - * Do not treat Tox strings as C strings. - */ - -/* return TOX_FRIEND_ADDRESS_SIZE byte address to give to others. - * format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)] - */ -void tox_get_address(const Tox *tox, uint8_t *address); - -/* Add a friend. - * Set the data that will be sent along with friend request. - * address is the address of the friend (returned by getaddress of the friend you wish to add) it must be TOX_FRIEND_ADDRESS_SIZE bytes. TODO: add checksum. - * data is the data and length is the length. - * - * return the friend number if success. - * return TOX_FAERR_TOOLONG if message length is too long. - * return TOX_FAERR_NOMESSAGE if no message (message length must be >= 1 byte). - * return TOX_FAERR_OWNKEY if user's own key. - * return TOX_FAERR_ALREADYSENT if friend request already sent or already a friend. - * return TOX_FAERR_UNKNOWN for unknown error. - * return TOX_FAERR_BADCHECKSUM if bad checksum in address. - * return TOX_FAERR_SETNEWNOSPAM if the friend was already there but the nospam was different. - * (the nospam for that friend was set to the new one). - * return TOX_FAERR_NOMEM if increasing the friend list size fails. - */ -int32_t tox_add_friend(Tox *tox, const uint8_t *address, const uint8_t *data, uint16_t length); - - -/* Add a friend without sending a friendrequest. - * return the friend number if success. - * return -1 if failure. - */ -int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id); - -/* return the friend number associated to that client id. - return -1 if no such friend */ -int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id); - -/* Copies the public key associated to that friend id into client_id buffer. - * Make sure that client_id is of size CLIENT_ID_SIZE. - * return 0 if success. - * return -1 if failure. - */ -int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id); - -/* Remove a friend. - * - * return 0 if success. - * return -1 if failure. - */ -int tox_del_friend(Tox *tox, int32_t friendnumber); - -/* Checks friend's connecting status. - * - * return 1 if friend is connected to us (Online). - * return 0 if friend is not connected to us (Offline). - * return -1 on failure. - */ -int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber); - -/* Checks if there exists a friend with given friendnumber. - * - * return 1 if friend exists. - * return 0 if friend doesn't exist. - */ -int tox_friend_exists(const Tox *tox, int32_t friendnumber); - -/* Send a text chat message to an online friend. - * - * return the message id if packet was successfully put into the send queue. - * return 0 if it was not. - * - * maximum length of messages is TOX_MAX_MESSAGE_LENGTH, your client must split larger messages - * or else sending them will not work. No the core will not split messages for you because that - * requires me to parse UTF-8. - * - * You will want to retain the return value, it will be passed to your read_receipt callback - * if one is received. - * m_sendmessage_withid will send a message with the id of your choosing, - * however we can generate an id for you by calling plain m_sendmessage. - */ -uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length); -uint32_t tox_send_message_withid(Tox *tox, int32_t friendnumber, uint32_t theid, const uint8_t *message, - uint32_t length); - -/* Send an action to an online friend. - * - * return the message id if packet was successfully put into the send queue. - * return 0 if it was not. - * - * maximum length of actions is TOX_MAX_MESSAGE_LENGTH, your client must split larger actions - * or else sending them will not work. No the core will not split actions for you because that - * requires me to parse UTF-8. - * - * You will want to retain the return value, it will be passed to your read_receipt callback - * if one is received. - * m_sendaction_withid will send an action message with the id of your choosing, - * however we can generate an id for you by calling plain m_sendaction. - */ -uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length); -uint32_t tox_send_action_withid(Tox *tox, int32_t friendnumber, uint32_t theid, const uint8_t *action, uint32_t length); - -/* Set our nickname. - * name must be a string of maximum MAX_NAME_LENGTH length. - * length must be at least 1 byte. - * length is the length of name with the NULL terminator. - * - * return 0 if success. - * return -1 if failure. - */ -int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length); - -/* - * Get your nickname. - * m - The messenger context to use. - * name - needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. - * - * return length of name. - * return 0 on error. - */ -uint16_t tox_get_self_name(const Tox *tox, uint8_t *name); - -/* Get name of friendnumber and put it in name. - * name needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. - * - * return length of name if success. - * return -1 if failure. - */ -int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name); - -/* returns the length of name on success. - * returns -1 on failure. - */ -int tox_get_name_size(const Tox *tox, int32_t friendnumber); -int tox_get_self_name_size(const Tox *tox); - -/* Set our user status. - * - * userstatus must be one of TOX_USERSTATUS values. - * max length of the status is TOX_MAX_STATUSMESSAGE_LENGTH. - * - * returns 0 on success. - * returns -1 on failure. - */ -int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length); -int tox_set_user_status(Tox *tox, uint8_t userstatus); - -/* returns the length of status message on success. - * returns -1 on failure. - */ -int tox_get_status_message_size(const Tox *tox, int32_t friendnumber); -int tox_get_self_status_message_size(const Tox *tox); - -/* Copy friendnumber's status message into buf, truncating if size is over maxlen. - * Get the size you need to allocate from m_get_statusmessage_size. - * The self variant will copy our own status message. - * - * returns the length of the copied data on success - * retruns -1 on failure. - */ -int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen); -int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen); - -/* return one of TOX_USERSTATUS values. - * Values unknown to your application should be represented as TOX_USERSTATUS_NONE. - * As above, the self variant will return our own TOX_USERSTATUS. - * If friendnumber is invalid, this shall return TOX_USERSTATUS_INVALID. - */ -uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber); -uint8_t tox_get_self_user_status(const Tox *tox); - - -/* returns timestamp of last time friendnumber was seen online, or 0 if never seen. - * returns -1 on error. - */ -uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber); - -/* Set our typing status for a friend. - * You are responsible for turning it on or off. - * - * returns 0 on success. - * returns -1 on failure. - */ -int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing); - -/* Get the typing status of a friend. - * - * returns 0 if friend is not typing. - * returns 1 if friend is typing. - */ -uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber); - -/* Return the number of friends in the instance m. - * You should use this to determine how much memory to allocate - * for copy_friendlist. */ -uint32_t tox_count_friendlist(const Tox *tox); - -/* Return the number of online friends in the instance m. */ -uint32_t tox_get_num_online_friends(const Tox *tox); - -/* Copy a list of valid friend IDs into the array out_list. - * If out_list is NULL, returns 0. - * Otherwise, returns the number of elements copied. - * If the array was too small, the contents - * of out_list will be truncated to list_size. */ -uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size); - -/* Set the function that will be executed when a friend request is received. - * Function format is function(Tox *tox, uint8_t * public_key, uint8_t * data, uint16_t length, void *userdata) - */ -void tox_callback_friend_request(Tox *tox, void (*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, - void *), void *userdata); - -/* Set the function that will be executed when a message from a friend is received. - * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * message, uint16_t length, void *userdata) - */ -void tox_callback_friend_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the function that will be executed when an action from a friend is received. - * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * action, uint16_t length, void *userdata) - */ -void tox_callback_friend_action(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for name changes. - * function(Tox *tox, int32_t friendnumber, uint8_t *newname, uint16_t length, void *userdata) - * You are not responsible for freeing newname - */ -void tox_callback_name_change(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for status message changes. - * function(Tox *tox, int32_t friendnumber, uint8_t *newstatus, uint16_t length, void *userdata) - * You are not responsible for freeing newstatus. - */ -void tox_callback_status_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for status type changes. - * function(Tox *tox, int32_t friendnumber, uint8_t TOX_USERSTATUS, void *userdata) - */ -void tox_callback_user_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - -/* Set the callback for typing changes. - * function (Tox *tox, int32_t friendnumber, uint8_t is_typing, void *userdata) - */ -void tox_callback_typing_change(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - -/* Set the callback for read receipts. - * function(Tox *tox, int32_t friendnumber, uint32_t receipt, void *userdata) - * - * If you are keeping a record of returns from m_sendmessage; - * receipt might be one of those values, meaning the message - * has been received on the other side. - * Since core doesn't track ids for you, receipt may not correspond to any message. - * In that case, you should discard it. - */ -void tox_callback_read_receipt(Tox *tox, void (*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata); - -/* Set the callback for connection status changes. - * function(Tox *tox, int32_t friendnumber, uint8_t status, void *userdata) - * - * Status: - * 0 -- friend went offline after being previously online - * 1 -- friend went online - * - * NOTE: This callback is not called when adding friends, thus the "after - * being previously online" part. it's assumed that when adding friends, - * their connection status is offline. - */ -void tox_callback_connection_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - - -/**********ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) ************/ - -/* Functions to get/set the nospam part of the id. - */ -uint32_t tox_get_nospam(const Tox *tox); -void tox_set_nospam(Tox *tox, uint32_t nospam); - -/* Copy the public and secret key from the Tox object. - public_key and secret_key must be 32 bytes big. - if the pointer is NULL, no data will be copied to it.*/ -void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key); - -/**********GROUP CHAT FUNCTIONS: WARNING Group chats will be rewritten so this might change ************/ - -/* Set the callback for group invites. - * - * Function(Tox *tox, int friendnumber, uint8_t *group_public_key, void *userdata) - */ -void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, void *), void *userdata); - -/* Set the callback for group messages. - * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata) - */ -void tox_callback_group_message(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for group actions. - * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * action, uint16_t length, void *userdata) - */ -void tox_callback_group_action(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set callback function for peer name list changes. - * - * It gets called every time the name list changes(new peer/name, deleted peer) - * Function(Tox *tox, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) - */ -typedef enum { - TOX_CHAT_CHANGE_PEER_ADD, - TOX_CHAT_CHANGE_PEER_DEL, - TOX_CHAT_CHANGE_PEER_NAME, -} TOX_CHAT_CHANGE; - -void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), - void *userdata); - -/* Creates a new groupchat and puts it in the chats array. - * - * return group number on success. - * return -1 on failure. - */ -int tox_add_groupchat(Tox *tox); - -/* Delete a groupchat from the chats array. - * - * return 0 on success. - * return -1 if failure. - */ -int tox_del_groupchat(Tox *tox, int groupnumber); - -/* Copy the name of peernumber who is in groupnumber to name. - * name must be at least TOX_MAX_NAME_LENGTH long. - * - * return length of name if success - * return -1 if failure - */ -int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name); - -/* invite friendnumber to groupnumber - * return 0 on success - * return -1 on failure - */ -int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber); - -/* Join a group (you need to have been invited first.) - * - * returns group number on success - * returns -1 on failure. - */ -int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *friend_group_public_key); - -/* send a group message - * return 0 on success - * return -1 on failure - */ -int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint32_t length); - -/* send a group action - * return 0 on success - * return -1 on failure - */ -int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint32_t length); - -/* Return the number of peers in the group chat on success. - * return -1 on failure - */ -int tox_group_number_peers(const Tox *tox, int groupnumber); - -/* List all the peers in the group chat. - * - * Copies the names of the peers to the name[length][TOX_MAX_NAME_LENGTH] array. - * - * Copies the lengths of the names to lengths[length] - * - * returns the number of peers on success. - * - * return -1 on failure. - */ -int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], - uint16_t length); - -/* Return the number of chats in the instance m. - * You should use this to determine how much memory to allocate - * for copy_chatlist. */ -uint32_t tox_count_chatlist(const Tox *tox); - -/* Copy a list of valid chat IDs into the array out_list. - * If out_list is NULL, returns 0. - * Otherwise, returns the number of elements copied. - * If the array was too small, the contents - * of out_list will be truncated to list_size. */ -uint32_t tox_get_chatlist(const Tox *tox, int *out_list, uint32_t list_size); - - -/****************FILE SENDING FUNCTIONS*****************/ -/* NOTE: This how to will be updated. - * - * HOW TO SEND FILES CORRECTLY: - * 1. Use tox_new_file_sender(...) to create a new file sender. - * 2. Wait for the callback set with tox_callback_file_control(...) to be called with receive_send == 1 and control_type == TOX_FILECONTROL_ACCEPT - * 3. Send the data with tox_file_send_data(...) with chunk size tox_file_data_size(...) - * 4. When sending is done, send a tox_file_send_control(...) with send_receive = 0 and message_id = TOX_FILECONTROL_FINISHED - * 5. when the callback set with tox_callback_file_control(...) is called with receive_send == 1 and control_type == TOX_FILECONTROL_FINISHED - * the other person has received the file correctly. - * - * HOW TO RECEIVE FILES CORRECTLY: - * 1. wait for the callback set with tox_callback_file_send_request(...) - * 2. accept or refuse the connection with tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_ACCEPT or TOX_FILECONTROL_KILL - * 3. save all the data received with the callback set with tox_callback_file_data(...) to a file. - * 4. when the callback set with tox_callback_file_control(...) is called with receive_send == 0 and control_type == TOX_FILECONTROL_FINISHED - * the file is done transferring. - * 5. send a tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_FINISHED to confirm that we did receive the file. - * - * tox_file_data_remaining(...) can be used to know how many bytes are left to send/receive. - * - * If the connection breaks during file sending (The other person goes offline without pausing the sending and then comes back) - * the receiver must send a control packet with send_receive == 1 message_id = TOX_FILECONTROL_RESUME_BROKEN and the data being - * a uint64_t (in host byte order) containing the number of bytes received. - * - * If the sender receives this packet, he must send a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT - * then he must start sending file data from the position (data , uint64_t in host byte order) received in the TOX_FILECONTROL_RESUME_BROKEN packet. - * - * To pause a file transfer send a control packet with control_type == TOX_FILECONTROL_PAUSE. - * To unpause a file transfer send a control packet with control_type == TOX_FILECONTROL_ACCEPT. - * - * If you receive a control packet with receive_send == 1 and control_type == TOX_FILECONTROL_PAUSE, you must stop sending filenumber until the other - * person sends a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT with the filenumber being a paused filenumber. - * - * If you receive a control packet with receive_send == 0 and control_type == TOX_FILECONTROL_PAUSE, it means the sender of filenumber has paused the - * transfer and will resume it later with a control packet with send_receive == 1 and control_type == TOX_FILECONTROL_ACCEPT for that file number. - * - * More to come... - */ - -enum { - TOX_FILECONTROL_ACCEPT, - TOX_FILECONTROL_PAUSE, - TOX_FILECONTROL_KILL, - TOX_FILECONTROL_FINISHED, - TOX_FILECONTROL_RESUME_BROKEN -}; -/* Set the callback for file send requests. - * - * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *filename, uint16_t filename_length, void *userdata) - */ -void tox_callback_file_send_request(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint64_t, const uint8_t *, - uint16_t, void *), void *userdata); - -/* Set the callback for file control requests. - * - * receive_send is 1 if the message is for a slot on which we are currently sending a file and 0 if the message - * is for a slot on which we are receiving the file - * - * Function(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, uint8_t *data, uint16_t length, void *userdata) - * - */ -void tox_callback_file_control(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t *, - uint16_t, void *), void *userdata); - -/* Set the callback for file data. - * - * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata) - * - */ -void tox_callback_file_data(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, const uint8_t *, uint16_t length, - void *), void *userdata); - - -/* Send a file send request. - * Maximum filename length is 255 bytes. - * return file number on success - * return -1 on failure - */ -int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, - uint16_t filename_length); - -/* Send a file control request. - * - * send_receive is 0 if we want the control packet to target a file we are currently sending, - * 1 if it targets a file we are currently receiving. - * - * return 0 on success - * return -1 on failure - */ -int tox_file_send_control(Tox *tox, int32_t friendnumber, uint8_t send_receive, uint8_t filenumber, uint8_t message_id, - const uint8_t *data, uint16_t length); - -/* Send file data. - * - * return 0 on success - * return -1 on failure - */ -int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length); - -/* Returns the recommended/maximum size of the filedata you send with tox_file_send_data() - * - * return size on success - * return -1 on failure (currently will never return -1) - */ -int tox_file_data_size(const Tox *tox, int32_t friendnumber); - -/* Give the number of bytes left to be sent/received. - * - * send_receive is 0 if we want the sending files, 1 if we want the receiving. - * - * return number of bytes remaining to be sent/received on success - * return 0 on failure - */ -uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive); - -/***************END OF FILE SENDING FUNCTIONS******************/ - -/* - * Use this function to bootstrap the client. - */ - -/* Resolves address into an IP address. If successful, sends a "get nodes" - * request to the given node with ip, port (in host byte order). - * and public_key to setup connections - * - * address can be a hostname or an IP address (IPv4 or IPv6). - * - * returns 1 if the address could be converted into an IP address - * returns 0 otherwise - */ -int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); - -/* return 0 if we are not connected to the DHT. - * return 1 if we are. - */ -int tox_isconnected(const Tox *tox); - -typedef struct { - /* - * The type of UDP socket created depends on ipv6enabled: - * If set to 0 (zero), creates an IPv4 socket which subsequently only allows - * IPv4 communication - * If set to anything else (default), creates an IPv6 socket which allows both IPv4 AND - * IPv6 communication - */ - uint8_t ipv6enabled; - - /* Set to 1 to disable udp support. (default: 0) - This will force Tox to use TCP only which may slow things down. - Disabling udp support is necessary when using anonymous proxies or Tor.*/ - uint8_t udp_disabled; - - /* Enable proxy support. (only basic TCP socks5 proxy currently supported.) (default: 0 (disabled))*/ - uint8_t proxy_enabled; - char proxy_address[256]; /* Proxy ip or domain in NULL terminated string format. */ - uint16_t proxy_port; /* Proxy port: in host byte order. */ -} Tox_Options; - -/* - * Run this function at startup. - * - * Options are some options that can be passed to the Tox instance (see above struct). - * - * If options is NULL, tox_new() will use default settings. - * - * Initializes a tox structure - * return allocated instance of tox on success. - * return NULL on failure. - */ -Tox *tox_new(Tox_Options *options); - -/* Run this before closing shop. - * Free all datastructures. */ -void tox_kill(Tox *tox); - -/* Return the time in milliseconds before tox_do() should be called again - * for optimal performance. - * - * returns time (in ms) before the next tox_do() needs to be run on success. - */ -uint32_t tox_do_interval(Tox *tox); - -/* The main loop that needs to be run in intervals of tox_do_interval() ms. */ -void tox_do(Tox *tox); - -/* SAVING AND LOADING FUNCTIONS: */ - -/* return size of messenger data (for saving). */ -uint32_t tox_size(const Tox *tox); - -/* Save the messenger in data (must be allocated memory of size Messenger_size()). */ -void tox_save(const Tox *tox, uint8_t *data); - -/* Load the messenger from data of size length. - * - * returns 0 on success - * returns -1 on failure - */ -int tox_load(Tox *tox, const uint8_t *data, uint32_t length); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/Tox/src/tox/toxav.h b/protocols/Tox/src/tox/toxav.h deleted file mode 100644 index e31c7aad1f..0000000000 --- a/protocols/Tox/src/tox/toxav.h +++ /dev/null @@ -1,389 +0,0 @@ -/** toxav.h - * - * Copyright (C) 2013 Tox project All Rights Reserved. - * - * This file is part of Tox. - * - * Tox is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tox 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tox. If not, see . - * - */ - - -#ifndef __TOXAV -#define __TOXAV -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* vpx_image_t */ -#include - -typedef void ( *ToxAVCallback ) ( void *agent, int32_t call_idx, void *arg ); -typedef struct _ToxAv ToxAv; - -#ifndef __TOX_DEFINED__ -#define __TOX_DEFINED__ -typedef struct Tox Tox; -#endif - -#define RTP_PAYLOAD_SIZE 65535 - - -/** - * @brief Callbacks ids that handle the call states. - */ -typedef enum { - /* Requests */ - av_OnInvite, - av_OnStart, - av_OnCancel, - av_OnReject, - av_OnEnd, - - /* Responses */ - av_OnRinging, - av_OnStarting, - av_OnEnding, - - /* Protocol */ - av_OnRequestTimeout, - av_OnPeerTimeout, - av_OnMediaChange -} ToxAvCallbackID; - - -/** - * @brief Call type identifier. - */ -typedef enum { - TypeAudio = 192, - TypeVideo -} ToxAvCallType; - - -typedef enum { - av_CallNonExistant = -1, - av_CallInviting, /* when sending call invite */ - av_CallStarting, /* when getting call invite */ - av_CallActive, - av_CallHold, - av_CallHanged_up -} ToxAvCallState; - -/** - * @brief Error indicators. - */ -typedef enum { - ErrorNone = 0, - ErrorInternal = -1, /* Internal error */ - ErrorAlreadyInCall = -2, /* Already has an active call */ - ErrorNoCall = -3, /* Trying to perform call action while not in a call */ - ErrorInvalidState = -4, /* Trying to perform call action while in invalid state*/ - ErrorNoRtpSession = -5, /* Trying to perform rtp action on invalid session */ - ErrorAudioPacketLost = -6, /* Indicating packet loss */ - ErrorStartingAudioRtp = -7, /* Error in toxav_prepare_transmission() */ - ErrorStartingVideoRtp = -8 , /* Error in toxav_prepare_transmission() */ - ErrorTerminatingAudioRtp = -9, /* Returned in toxav_kill_transmission() */ - ErrorTerminatingVideoRtp = -10, /* Returned in toxav_kill_transmission() */ - ErrorPacketTooLarge = -11, /* Buffer exceeds size while encoding */ - ErrorInvalidCodecState = -12, /* Codec state not initialized */ - -} ToxAvError; - - -/** - * @brief Locally supported capabilities. - */ -typedef enum { - AudioEncoding = 1 << 0, - AudioDecoding = 1 << 1, - VideoEncoding = 1 << 2, - VideoDecoding = 1 << 3 -} ToxAvCapabilities; - - -/** - * @brief Encoding settings. - */ -typedef struct _ToxAvCodecSettings { - ToxAvCallType call_type; - - uint32_t video_bitrate; /* In kbits/s */ - uint16_t max_video_width; /* In px */ - uint16_t max_video_height; /* In px */ - - uint32_t audio_bitrate; /* In bits/s */ - uint16_t audio_frame_duration; /* In ms */ - uint32_t audio_sample_rate; /* In Hz */ - uint32_t audio_channels; -} ToxAvCSettings; - -extern const ToxAvCSettings av_DefaultSettings; -extern const uint32_t av_jbufdc; /* Jitter buffer default capacity */ -extern const uint32_t av_VADd; /* VAD default treshold */ - -/** - * @brief Start new A/V session. There can only be one session at the time. If you register more - * it will result in undefined behaviour. - * - * @param messenger The messenger handle. - * @param userdata The agent handling A/V session (i.e. phone). - * @param video_width Width of video frame. - * @param video_height Height of video frame. - * @return ToxAv* - * @retval NULL On error. - */ -ToxAv *toxav_new(Tox *messenger, int32_t max_calls); - -/** - * @brief Remove A/V session. - * - * @param av Handler. - * @return void - */ -void toxav_kill(ToxAv *av); - -/** - * @brief Register callback for call state. - * - * @param av Handler. - * @param callback The callback - * @param id One of the ToxAvCallbackID values - * @return void - */ -void toxav_register_callstate_callback (ToxAv *av, ToxAVCallback callback, ToxAvCallbackID id, void *userdata); - -/** - * @brief Register callback for recieving audio data - * - * @param av Handler. - * @param callback The callback - * @return void - */ -void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int, void *), - void *user_data); - -/** - * @brief Register callback for recieving video data - * - * @param av Handler. - * @param callback The callback - * @return void - */ -void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *, void *), - void *user_data); - -/** - * @brief Call user. Use its friend_id. - * - * @param av Handler. - * @param user The user. - * @param call_type Call type. - * @param ringing_seconds Ringing timeout. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_call(ToxAv *av, int32_t *call_index, int user, const ToxAvCSettings *csettings, int ringing_seconds); - -/** - * @brief Hangup active call. - * - * @param av Handler. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_hangup(ToxAv *av, int32_t call_index); - -/** - * @brief Answer incomming call. - * - * @param av Handler. - * @param call_type Answer with... - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_answer(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings ); - -/** - * @brief Reject incomming call. - * - * @param av Handler. - * @param reason Optional reason. Set NULL if none. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_reject(ToxAv *av, int32_t call_index, const char *reason); - -/** - * @brief Cancel outgoing request. - * - * @param av Handler. - * @param reason Optional reason. - * @param peer_id peer friend_id - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_cancel(ToxAv *av, int32_t call_index, int peer_id, const char *reason); - -/** - * @brief Notify peer that we are changing call settings - * - * @param av Handler. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_change_settings(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings); - -/** - * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer. - * - * @param av Handler. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_stop_call(ToxAv *av, int32_t call_index); - -/** - * @brief Must be call before any RTP transmission occurs. - * - * @param av Handler. - * @param support_video Is video supported ? 1 : 0 - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_prepare_transmission(ToxAv *av, int32_t call_index, uint32_t jbuf_size, uint32_t VAD_treshold, - int support_video); - -/** - * @brief Call this at the end of the transmission. - * - * @param av Handler. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_kill_transmission(ToxAv *av, int32_t call_index); - -/** - * @brief Encode and send video packet. - * - * @param av Handler. - * @param frame The encoded frame. - * @param frame_size The size of the encoded frame. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int frame_size); - -/** - * @brief Send audio frame. - * - * @param av Handler. - * @param data The audio data encoded with toxav_prepare_audio_frame(). - * @param size Its size in number of bytes. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int size); - -/** - * @brief Encode video frame - * - * @param av Handler - * @param dest Where to - * @param dest_max Max size - * @param input What to encode - * @return int - * @retval ToxAvError On error. - * @retval >0 On success - */ -int toxav_prepare_video_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, vpx_image_t *input ); - -/** - * @brief Encode audio frame - * - * @param av Handler - * @param dest dest - * @param dest_max Max dest size - * @param frame The frame - * @param frame_size The frame size - * @return int - * @retval ToxAvError On error. - * @retval >0 On success - */ -int toxav_prepare_audio_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, const int16_t *frame, - int frame_size); - -/** - * @brief Get peer transmission type. It can either be audio or video. - * - * @param av Handler. - * @param peer The peer - * @return int - * @retval ToxAvCallType On success. - * @retval ToxAvError On error. - */ -int toxav_get_peer_csettings ( ToxAv *av, int32_t call_index, int peer, ToxAvCSettings *dest ); - -/** - * @brief Get id of peer participating in conversation - * - * @param av Handler - * @param peer peer index - * @return int - * @retval ToxAvError No peer id - */ -int toxav_get_peer_id ( ToxAv *av, int32_t call_index, int peer ); - -/** - * @brief Get current call state - * - * @param av Handler - * @param call_index What call - * @return int - * @retval ToxAvCallState State id - */ -ToxAvCallState toxav_get_call_state ( ToxAv *av, int32_t call_index ); -/** - * @brief Is certain capability supported - * - * @param av Handler - * @return int - * @retval 1 Yes. - * @retval 0 No. - */ -int toxav_capability_supported ( ToxAv *av, int32_t call_index, ToxAvCapabilities capability ); - - -Tox *toxav_get_tox(ToxAv *av); - -int toxav_has_activity ( ToxAv *av, int32_t call_index, int16_t *PCM, uint16_t frame_size, float ref_energy ); - -#ifdef __cplusplus -} -#endif - -#endif /* __TOXAV */ diff --git a/protocols/Tox/src/tox/toxdns.h b/protocols/Tox/src/tox/toxdns.h deleted file mode 100644 index a0cc323b43..0000000000 --- a/protocols/Tox/src/tox/toxdns.h +++ /dev/null @@ -1,85 +0,0 @@ -/* toxdns.h - * - * Tox secure username DNS toxid resolving functions. - * - * Copyright (C) 2014 Tox project All Rights Reserved. - * - * This file is part of Tox. - * - * Tox is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tox 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tox. If not, see . - * - */ - -#ifndef TOXDNS_H -#define TOXDNS_H - -#include - -/* How to use this api to make secure tox dns3 requests: - * - * 1. Get the public key of a server that supports tox dns3. - * 2. use tox_dns3_new() to create a new object to create DNS requests - * and handle responses for that server. - * 3. Use tox_generate_dns3_string() to generate a string based on the name we want to query and a request_id - * that must be stored somewhere for when we want to decrypt the response. - * 4. take the string and use it for your DNS request like this: - * _4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc._tox.utox.org - * 5. The TXT in the DNS you receive should look like this: - * v=tox3;id=2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp - * 6. Take the id string and use it with tox_decrypt_dns3_TXT() and the request_id corresponding to the - * request we stored earlier to get the Tox id returned by the DNS server. - */ - -/* Create a new tox_dns3 object for server with server_public_key of size TOX_CLIENT_ID_SIZE. - * - * return Null on failure. - * return pointer object on success. - */ -void *tox_dns3_new(uint8_t *server_public_key); - -/* Destroy the tox dns3 object. - */ -void tox_dns3_kill(void *dns3_object); - -/* Generate a dns3 string of string_max_len used to query the dns server referred to by to - * dns3_object for a tox id registered to user with name of name_len. - * - * the uint32_t pointed by request_id will be set to the request id which must be passed to - * tox_decrypt_dns3_TXT() to correctly decode the response. - * - * This is what the string returned looks like: - * 4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc - * - * returns length of string on sucess. - * returns -1 on failure. - */ -int tox_generate_dns3_string(void *dns3_object, uint8_t *string, uint16_t string_max_len, uint32_t *request_id, - uint8_t *name, uint8_t name_len); - -/* Decode and decrypt the id_record returned of length id_record_len into - * tox_id (needs to be at least TOX_FRIEND_ADDRESS_SIZE). - * - * request_id is the request id given by tox_generate_dns3_string() when creating the request. - * - * the id_record passed to this function should look somewhat like this: - * 2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp - * - * returns -1 on failure. - * returns 0 on success. - * - */ -int tox_decrypt_dns3_TXT(void *dns3_object, uint8_t *tox_id, uint8_t *id_record, uint32_t id_record_len, - uint32_t request_id); - -#endif diff --git a/protocols/Tox/src/tox_account.cpp b/protocols/Tox/src/tox_account.cpp index 886bf70f7b..3648bb4dbf 100644 --- a/protocols/Tox/src/tox_account.cpp +++ b/protocols/Tox/src/tox_account.cpp @@ -1,16 +1,33 @@ #include "common.h" #include "tox_bootstrap.h" +bool CToxProto::IsOnline() +{ + return isConnected && m_iStatus > ID_STATUS_OFFLINE; +} + +int CToxProto::OnAccountLoaded(WPARAM, LPARAM) +{ + HookProtoEvent(ME_OPT_INITIALISE, &CToxProto::OnOptionsInit); + HookProtoEvent(ME_PROTO_ACCLISTCHANGED, &CToxProto::OnAccountListChanged); + HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CToxProto::OnSettingsChanged); + HookProtoEvent(ME_MSG_PRECREATEEVENT, &CToxProto::OnPreCreateMessage); + + InitNetlib(); + + return 0; +} + void CToxProto::InitToxCore() { Tox_Options options = { 0 }; options.udp_disabled = getByte("DisableUDP", 0); options.ipv6enabled = !getByte("DisableIPv6", 0); - if (hNetlibUser) + if (hNetlib) { NETLIBUSERSETTINGS nlus = { sizeof(NETLIBUSERSETTINGS) }; - CallService(MS_NETLIB_GETUSERSETTINGS, (WPARAM)hNetlibUser, (LPARAM)&nlus); + CallService(MS_NETLIB_GETUSERSETTINGS, (WPARAM)hNetlib, (LPARAM)&nlus); if (nlus.useProxy) { @@ -58,11 +75,6 @@ void CToxProto::UninitToxCore() tox_kill(tox); } -bool CToxProto::IsOnline() -{ - return isConnected && m_iStatus > ID_STATUS_OFFLINE; -} - void CToxProto::DoBootstrap() { static int j = 0; @@ -77,13 +89,10 @@ void CToxProto::DoBootstrap() void CToxProto::DoTox() { - uint32_t interval = 50; - { - mir_cs(tox_lock); + mir_cslock((CRITICAL_SECTION&)toxLock); - tox_do(tox); - interval = tox_do_interval(tox); - } + tox_do(tox); + uint32_t interval = tox_do_interval(tox); Sleep(interval); } @@ -105,7 +114,7 @@ void CToxProto::PollingThread(void*) isConnected = true; debugLogA("CToxProto::PollingThread: successfuly connected to DHT"); - LoadContactList(); + LoadFriendList(); debugLogA("CToxProto::PollingThread: changing status from %i to %i", ID_STATUS_CONNECTING, m_iDesiredStatus); m_iStatus = m_iDesiredStatus; @@ -116,6 +125,14 @@ void CToxProto::PollingThread(void*) DoBootstrap(); } } + else + { + if (!tox_isconnected(tox)) + { + debugLogA("CToxProto::PollingThread: disconnected from DHT"); + SetStatus(ID_STATUS_OFFLINE); + } + } } isConnected = false; diff --git a/protocols/Tox/src/tox_accounts.cpp b/protocols/Tox/src/tox_accounts.cpp new file mode 100644 index 0000000000..147c328656 --- /dev/null +++ b/protocols/Tox/src/tox_accounts.cpp @@ -0,0 +1,43 @@ +#include "common.h" + +LIST CToxProto::accounts(1, CToxProto::CompareAccounts); + +int CToxProto::CompareAccounts(const CToxProto *p1, const CToxProto *p2) +{ + return _tcscmp(p1->m_tszUserName, p2->m_tszUserName); +} + +CToxProto* CToxProto::InitAccount(const char* protoName, const wchar_t* userName) +{ + CToxProto *ppro = new CToxProto(protoName, userName); + accounts.insert(ppro); + + return ppro; +} + +int CToxProto::UninitAccount(CToxProto* ppro) +{ + accounts.remove(ppro); + delete ppro; + + return 0; +} + +int CToxProto::OnAccountListChanged(WPARAM wParam, LPARAM lParam) +{ + PROTOACCOUNT* account = (PROTOACCOUNT*)lParam; + + if (wParam == PRAC_ADDED && !strcmp(account->szModuleName, m_szModuleName)) + { + UninitToxCore(); + DialogBoxParam( + g_hInstance, + MAKEINTRESOURCE(IDD_PROFILE_MANAGER), + account->hwndAccMgrUI, + CToxProto::ToxProfileManagerProc, + (LPARAM)this); + InitToxCore(); + } + + return 0; +} \ No newline at end of file diff --git a/protocols/Tox/src/tox_contacts.cpp b/protocols/Tox/src/tox_contacts.cpp index e9e3622da9..b696c6b70c 100644 --- a/protocols/Tox/src/tox_contacts.cpp +++ b/protocols/Tox/src/tox_contacts.cpp @@ -46,18 +46,9 @@ MCONTACT CToxProto::GetContactFromAuthEvent(HANDLE hEvent) return DbGetAuthEventContact(&dbei); } - -bool CToxProto::IsProtoContact(MCONTACT hContact) -{ - return lstrcmpiA(GetContactProto(hContact), m_szModuleName) == 0; -} - MCONTACT CToxProto::FindContact(const std::string &id) { MCONTACT hContact = NULL; - - //mir_cs(contact_search_lock); - for (hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) { std::string contactId = ToxAddressToId(getStringA(hContact, TOX_SETTINGS_ID)); @@ -66,7 +57,6 @@ MCONTACT CToxProto::FindContact(const std::string &id) break; } } - return hContact; } @@ -105,7 +95,7 @@ MCONTACT CToxProto::AddContact(const std::string &id, bool isTemporary) return hContact; } -void CToxProto::LoadContactList() +void CToxProto::LoadFriendList() { uint32_t count = tox_count_friendlist(tox); if (count > 0) @@ -142,58 +132,100 @@ void CToxProto::LoadContactList() } } -void CToxProto::SearchByIdAsync(void*) +int CToxProto::OnContactDeleted(MCONTACT hContact, LPARAM lParam) { - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HWND)1, 0); + if (hContact) + { + std::string toxId(getStringA(hContact, TOX_SETTINGS_ID)); + std::vector clientId = HexStringToData(toxId); + + uint32_t number = tox_get_friend_number(tox, clientId.data()); + if (tox_del_friend(tox, number) == 0) + { + SaveToxData(); + + return 0; + } + } + + return 1; } -void CToxProto::SearchByNameAsync(void* arg) +void CToxProto::OnFriendRequest(Tox *tox, const uint8_t *address, const uint8_t *message, const uint16_t messageSize, void *arg) { - NETLIBHTTPREQUEST request = { sizeof(NETLIBHTTPREQUEST) }; - request.requestType = REQUEST_POST; - request.szUrl = "https://toxme.se/api"; - request.flags = NLHRF_HTTP11 | NLHRF_SSL | NLHRF_NODUMP; + CToxProto *proto = (CToxProto*)arg; - request.headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER)* 2); - request.headers[0].szName = "Content-Type"; - request.headers[0].szValue = "text/plain; charset=utf-8"; - request.headersCount = 1; + // trim tox address to tox id + std::vector clientId(address, address + TOX_CLIENT_ID_SIZE); + std::string id = proto->DataToHexString(clientId); - std::string query = "{\"action\":3,\"name\":\""; - query += (char*)arg; - query += "\"}"; + MCONTACT hContact = proto->AddContact(id, true); - request.dataLength = query.length(); - request.pData = (char*)query.c_str(); + PROTORECVEVENT pre = { 0 }; + pre.flags = PREF_UTF; + pre.timestamp = time(NULL); + pre.lParam = (DWORD)(sizeof(DWORD)* 2 + id.length() + messageSize + 5); - NETLIBHTTPREQUEST* response = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlibUser, (LPARAM)&request); + /*blob is: 0(DWORD), hContact(DWORD), nick(ASCIIZ), firstName(ASCIIZ), lastName(ASCIIZ), sid(ASCIIZ), reason(ASCIIZ)*/ + PBYTE pBlob, pCurBlob; + pCurBlob = pBlob = (PBYTE)mir_calloc(pre.lParam); - if (response) - { - std::smatch match; - std::regex regex("\"public_key\": \"(.+?)\""); + *((PDWORD)pCurBlob) = 0; + pCurBlob += sizeof(DWORD); + *((PDWORD)pCurBlob) = (DWORD)hContact; + pCurBlob += sizeof(DWORD); + pCurBlob += 3; + strcpy((char *)pCurBlob, id.c_str()); + pCurBlob += id.length() + 1; + strcpy((char *)pCurBlob, (char*)message); - const std::string content = response->pData; + ProtoChainRecv(hContact, PSR_AUTH, 0, (LPARAM)&pre); +} - if (std::regex_search(content, match, regex)) - { - std::string toxId = match[1]; +void CToxProto::OnFriendNameChange(Tox *tox, const int number, const uint8_t *name, const uint16_t nameSize, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; - PROTOSEARCHRESULT psr = { sizeof(PROTOSEARCHRESULT) }; - psr.flags = PSR_TCHAR; - psr.id = mir_a2t(toxId.c_str()); + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + proto->setString(hContact, "Nick", (char*)name); + } +} - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, (HANDLE)1, (LPARAM)&psr); - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0); +void CToxProto::OnStatusMessageChanged(Tox *tox, const int number, const uint8_t* message, const uint16_t messageSize, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); - return; - } + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + ptrW statusMessage(mir_utf8decodeW((char*)message)); + db_set_ws(hContact, "CList", "StatusMsg", statusMessage); } +} - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); - mir_free(request.headers); +void CToxProto::OnUserStatusChanged(Tox *tox, int32_t number, uint8_t usertatus, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HANDLE)1, 0); - mir_free(arg); + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + TOX_USERSTATUS userstatus = (TOX_USERSTATUS)usertatus; + int status = proto->ToxToMirandaStatus(userstatus); + proto->SetContactStatus(hContact, status); + } +} + +void CToxProto::OnConnectionStatusChanged(Tox *tox, const int number, const uint8_t status, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + int newStatus = status ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; + proto->SetContactStatus(hContact, newStatus); + } } \ No newline at end of file diff --git a/protocols/Tox/src/tox_events.cpp b/protocols/Tox/src/tox_events.cpp index 1a27e498ef..8a803d8144 100644 --- a/protocols/Tox/src/tox_events.cpp +++ b/protocols/Tox/src/tox_events.cpp @@ -1,17 +1,5 @@ #include "common.h" -int CToxProto::OnAccountLoaded(WPARAM, LPARAM) -{ - HookProtoEvent(ME_OPT_INITIALISE, &CToxProto::OnOptionsInit); - HookProtoEvent(ME_PROTO_ACCLISTCHANGED, &CToxProto::OnAccountListChanged); - HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CToxProto::OnSettingsChanged); - HookProtoEvent(ME_MSG_PRECREATEEVENT, &CToxProto::OnPreCreateMessage); - - InitNetlib(); - - return 0; -} - int CToxProto::OnPreShutdown(WPARAM, LPARAM) { UninitNetlib(); @@ -29,25 +17,6 @@ INT_PTR CToxProto::OnAccountManagerInit(WPARAM, LPARAM lParam) (LPARAM)this); } -int CToxProto::OnAccountListChanged(WPARAM wParam, LPARAM lParam) -{ - PROTOACCOUNT* account = (PROTOACCOUNT*)lParam; - - if (wParam == PRAC_ADDED && !strcmp(account->szModuleName, m_szModuleName)) - { - UninitToxCore(); - DialogBoxParam( - g_hInstance, - MAKEINTRESOURCE(IDD_PROFILE_MANAGER), - account->hwndAccMgrUI, - CToxProto::ToxProfileManagerProc, - (LPARAM)this); - InitToxCore(); - } - - return 0; -} - int CToxProto::OnOptionsInit(WPARAM wParam, LPARAM) { char *title = mir_t2a(m_tszUserName); @@ -69,25 +38,6 @@ int CToxProto::OnOptionsInit(WPARAM wParam, LPARAM) return 0; } -int CToxProto::OnContactDeleted(MCONTACT hContact, LPARAM lParam) -{ - if (hContact) - { - std::string toxId(getStringA(hContact, TOX_SETTINGS_ID)); - std::vector clientId = HexStringToData(toxId); - - uint32_t number = tox_get_friend_number(tox, clientId.data()); - if (tox_del_friend(tox, number) == 0) - { - SaveToxData(); - - return 0; - } - } - - return 1; -} - int CToxProto::OnSettingsChanged(WPARAM hContact, LPARAM lParam) { DBCONTACTWRITESETTING* dbcws = (DBCONTACTWRITESETTING*)lParam; @@ -111,228 +61,4 @@ int CToxProto::OnSettingsChanged(WPARAM hContact, LPARAM lParam) } return 0; -} - -int CToxProto::OnPreCreateMessage(WPARAM wParam, LPARAM lParam) -{ - MessageWindowEvent *evt = (MessageWindowEvent *)lParam; - if (strcmp(GetContactProto(evt->hContact), m_szModuleName)) - { - return 0; - } - - char *message = (char*)evt->dbei->pBlob; - if (strncmp(message, "/me ", 4) == 0) - { - BYTE *action = (BYTE*)mir_alloc(sizeof(BYTE)* (evt->dbei->cbBlob - 4)); - memcpy(action, (char*)&evt->dbei->pBlob[4], evt->dbei->cbBlob - 4); - mir_free(evt->dbei->pBlob); - evt->dbei->pBlob = action; - evt->dbei->cbBlob -= 4; - - evt->dbei->eventType = TOX_DB_EVENT_TYPE_ACTION; - } - - return 1; -} - -void CToxProto::OnFriendRequest(Tox *tox, const uint8_t *address, const uint8_t *message, const uint16_t messageSize, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - // trim tox address to tox id - std::vector clientId(address, address + TOX_CLIENT_ID_SIZE); - std::string id = proto->DataToHexString(clientId); - - proto->RaiseAuthRequestEvent(time(NULL), id.c_str(), (char*)message); - - proto->SaveToxData(); -} - -void CToxProto::OnFriendMessage(Tox *tox, const int number, const uint8_t *message, const uint16_t messageSize, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - PROTORECVEVENT recv = { 0 }; - recv.flags = PREF_UTF; - recv.timestamp = time(NULL); - recv.szMessage = (char*)message; - - ProtoChainRecvMsg(hContact, &recv); - } -} - -void CToxProto::OnFriendAction(Tox *tox, const int number, const uint8_t *action, const uint16_t actionSize, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - proto->AddDbEvent( - hContact, - TOX_DB_EVENT_TYPE_ACTION, - time(NULL), - DBEF_UTF, - actionSize, - (BYTE*)action); - } -} - -void CToxProto::OnTypingChanged(Tox *tox, const int number, uint8_t isTyping, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - CallService(MS_PROTO_CONTACTISTYPING, hContact, (LPARAM)isTyping); - } -} - -void CToxProto::OnFriendNameChange(Tox *tox, const int number, const uint8_t *name, const uint16_t nameSize, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - proto->setString(hContact, "Nick", (char*)name); - } -} - -void CToxProto::OnStatusMessageChanged(Tox *tox, const int number, const uint8_t* message, const uint16_t messageSize, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - ptrW statusMessage(mir_utf8decodeW((char*)message)); - db_set_ws(hContact, "CList", "StatusMsg", statusMessage); - } -} - -void CToxProto::OnUserStatusChanged(Tox *tox, int32_t number, uint8_t usertatus, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - TOX_USERSTATUS userstatus = (TOX_USERSTATUS)usertatus; - int status = proto->ToxToMirandaStatus(userstatus); - proto->SetContactStatus(hContact, status); - } -} - -void CToxProto::OnConnectionStatusChanged(Tox *tox, const int number, const uint8_t status, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - int newStatus = status ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; - proto->SetContactStatus(hContact, newStatus); - } -} - -void CToxProto::OnReadReceipt(Tox *tox, int32_t number, uint32_t receipt, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - proto->ProtoBroadcastAck( - hContact, - ACKTYPE_MESSAGE, - ACKRESULT_SUCCESS, - (HANDLE)receipt, 0); - } -} - -void CToxProto::OnFriendFile(Tox *tox, int32_t number, uint8_t fileNumber, uint64_t fileSize, const uint8_t *fileName, uint16_t length, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - FileTransferParam *transfer = new FileTransferParam(fileNumber, ptrT(mir_utf8decodeT((const char*)fileName)), fileSize); - transfer->pfts.hContact = hContact; - transfer->pfts.flags |= PFTS_RECEIVING; - proto->transfers[fileNumber] = transfer; - - PROTORECVFILET pre = { 0 }; - pre.flags = PREF_TCHAR; - pre.fileCount = 1; - pre.timestamp = time(NULL); - pre.tszDescription = _T(""); - pre.ptszFiles = (TCHAR**)mir_alloc(sizeof(TCHAR*)* 2); - pre.ptszFiles[0] = mir_utf8decodeT((char*)fileName); - pre.ptszFiles[1] = NULL; - pre.lParam = (LPARAM)fileNumber; - ProtoChainRecvFile(hContact, &pre); - } -} - -void CToxProto::OnFileData(Tox *tox, int32_t number, uint8_t fileNumber, const uint8_t *data, uint16_t size, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - FileTransferParam *transfer = proto->transfers.at(fileNumber); - - TCHAR filePath[MAX_PATH]; - mir_sntprintf(filePath, SIZEOF(filePath), _T("%s%s"), transfer->pfts.tszWorkingDir, transfer->pfts.tszCurrentFile); - - FILE *hFile = NULL; - if (transfer->pfts.currentFileProgress == 0) - { - hFile = _tfopen(filePath, _T("wb")); - proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)fileNumber, 0); - } - else - { - hFile = _tfopen(filePath, _T("ab")); - } - if (hFile != NULL) - { - if (fwrite(data, sizeof(uint8_t), size, hFile) == size) - { - transfer->pfts.totalProgress = transfer->pfts.currentFileProgress += size; - proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)fileNumber, (LPARAM)&transfer->pfts); - } - fclose(hFile); - } - } -} - -void CToxProto::OnFileRequest(Tox *tox, int32_t number, uint8_t isSend, uint8_t fileNumber, uint8_t type, const uint8_t *data, uint16_t length, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - MCONTACT hContact = proto->FindContact(number); - if (hContact) - { - FileTransferParam *transfer = proto->transfers.at(fileNumber); - - switch (type) - { - case TOX_FILECONTROL_ACCEPT: - break; - - case TOX_FILECONTROL_FINISHED: - tox_file_send_control(proto->tox, number, 1, fileNumber, TOX_FILECONTROL_FINISHED, NULL, 0); - proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, (HANDLE)fileNumber, 0); - break; - } - } } \ No newline at end of file diff --git a/protocols/Tox/src/tox_instances.cpp b/protocols/Tox/src/tox_instances.cpp deleted file mode 100644 index 414cd7b767..0000000000 --- a/protocols/Tox/src/tox_instances.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "common.h" - -LIST CToxProto::instanceList(1, CToxProto::CompareProtos); - -int CToxProto::CompareProtos(const CToxProto *p1, const CToxProto *p2) -{ - return wcscmp(p1->m_tszUserName, p2->m_tszUserName); -} - -CToxProto* CToxProto::InitProtoInstance(const char* protoName, const wchar_t* userName) -{ - CToxProto *ppro = new CToxProto(protoName, userName); - instanceList.insert(ppro); - - return ppro; -} - -int CToxProto::UninitProtoInstance(CToxProto* ppro) -{ - instanceList.remove(ppro); - - delete ppro; - - return 0; -} - -void CToxProto::UninitInstances() -{ - instanceList.destroy(); -} - -CToxProto* CToxProto::GetContactInstance(MCONTACT hContact) -{ - char *proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); - - if (proto == NULL) - return NULL; - - for (int i = 0; i < instanceList.getCount(); i++) - if ( !::strcmp(proto, instanceList[i]->m_szModuleName)) - return instanceList[i]; - - return NULL; -} \ No newline at end of file diff --git a/protocols/Tox/src/tox_messages.cpp b/protocols/Tox/src/tox_messages.cpp new file mode 100644 index 0000000000..0c57fbf68d --- /dev/null +++ b/protocols/Tox/src/tox_messages.cpp @@ -0,0 +1,83 @@ +#include "common.h" + +void CToxProto::OnFriendMessage(Tox *tox, const int number, const uint8_t *message, const uint16_t messageSize, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + PROTORECVEVENT recv = { 0 }; + recv.flags = PREF_UTF; + recv.timestamp = time(NULL); + recv.szMessage = (char*)message; + + ProtoChainRecvMsg(hContact, &recv); + } +} + +void CToxProto::OnFriendAction(Tox *tox, const int number, const uint8_t *action, const uint16_t actionSize, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + proto->AddDbEvent( + hContact, + TOX_DB_EVENT_TYPE_ACTION, + time(NULL), + DBEF_UTF, + actionSize, + (BYTE*)action); + } +} + +void CToxProto::OnTypingChanged(Tox *tox, const int number, uint8_t isTyping, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + CallService(MS_PROTO_CONTACTISTYPING, hContact, (LPARAM)isTyping); + } +} + +void CToxProto::OnReadReceipt(Tox *tox, int32_t number, uint32_t receipt, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + proto->ProtoBroadcastAck( + hContact, + ACKTYPE_MESSAGE, + ACKRESULT_SUCCESS, + (HANDLE)receipt, 0); + } +} + +int CToxProto::OnPreCreateMessage(WPARAM wParam, LPARAM lParam) +{ + MessageWindowEvent *evt = (MessageWindowEvent *)lParam; + if (strcmp(GetContactProto(evt->hContact), m_szModuleName)) + { + return 0; + } + + char *message = (char*)evt->dbei->pBlob; + if (strncmp(message, "/me ", 4) == 0) + { + BYTE *action = (BYTE*)mir_alloc(sizeof(BYTE)* (evt->dbei->cbBlob - 4)); + memcpy(action, (char*)&evt->dbei->pBlob[4], evt->dbei->cbBlob - 4); + mir_free(evt->dbei->pBlob); + evt->dbei->pBlob = action; + evt->dbei->cbBlob -= 4; + + evt->dbei->eventType = TOX_DB_EVENT_TYPE_ACTION; + } + + return 1; +} \ No newline at end of file diff --git a/protocols/Tox/src/tox_netlib.cpp b/protocols/Tox/src/tox_netlib.cpp index a2fea7a615..7ebddc66b2 100644 --- a/protocols/Tox/src/tox_netlib.cpp +++ b/protocols/Tox/src/tox_netlib.cpp @@ -10,13 +10,13 @@ void CToxProto::InitNetlib() nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE; nlu.ptszDescriptiveName = name; nlu.szSettingsModule = m_szModuleName; - hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); + hNetlib = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); debugLogA("Setting protocol/module name to '%s'", m_szModuleName); } void CToxProto::UninitNetlib() { - Netlib_CloseHandle(hNetlibUser); - hNetlibUser = NULL; + Netlib_CloseHandle(hNetlib); + hNetlib = NULL; } diff --git a/protocols/Tox/src/tox_options.cpp b/protocols/Tox/src/tox_options.cpp index 2c920f95b2..7df550d585 100644 --- a/protocols/Tox/src/tox_options.cpp +++ b/protocols/Tox/src/tox_options.cpp @@ -1,27 +1,5 @@ #include "common.h" -INT_PTR CToxProto::SearchDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA); - - switch (uMsg) - { - case WM_INITDIALOG: - TranslateDialogDefault(hwnd); - { - proto = (CToxProto*)lParam; - SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); - - //ShowWindow(GetDlgItem(GetParent(hwnd), 1408/*IDC_BYCUSTOM*/), SW_HIDE); - //ShowWindow(GetDlgItem(GetParent(hwnd), 1402/*IDC_ADVANCEDGROUP*/), SW_HIDE); - SetDlgItemText(GetParent(hwnd), 1408/*IDC_BYCUSTOM*/, TranslateT("Query")); - } - return TRUE; - } - - return FALSE; -} - INT_PTR CToxProto::MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA); @@ -121,83 +99,5 @@ INT_PTR CToxProto::MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l break; } - return FALSE; -} - -INT_PTR CToxProto::ToxProfileManagerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA); - TCHAR *profilePath = (TCHAR*)GetWindowLongPtr(hwnd, DWLP_USER); - - switch (uMsg) - { - case WM_INITDIALOG: - TranslateDialogDefault(hwnd); - { - proto = (CToxProto*)lParam; - SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); - - profilePath = (TCHAR*)mir_calloc(sizeof(TCHAR)* MAX_PATH); - SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)profilePath); - - CheckDlgButton(hwnd, IDC_CREATE_NEW, TRUE); - } - return TRUE; - - case WM_CLOSE: - EndDialog(hwnd, 0); - break; - - case WM_DESTROY: - mir_free(profilePath); - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_USE_EXISTING: - EnableWindow(GetDlgItem(hwnd, IDC_PROFILE_PATH), IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)); - EnableWindow(GetDlgItem(hwnd, IDC_BROWSE_PROFILE), IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)); - break; - - case IDC_BROWSE_PROFILE: - { - TCHAR filter[MAX_PATH] = { 0 }; - mir_sntprintf(filter, MAX_PATH, _T("%s\0*.*"), TranslateT("All files (*.*)")); - - OPENFILENAME ofn = { sizeof(ofn) }; - ofn.hwndOwner = hwnd; - ofn.lpstrFilter = filter; - ofn.nFilterIndex = 1; - ofn.lpstrFile = profilePath; - ofn.lpstrTitle = TranslateT("Select tox profile"); - ofn.nMaxFile = MAX_PATH; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_EXPLORER; - - if (GetOpenFileName(&ofn) && profilePath) - { - SetDlgItemText(hwnd, IDC_PROFILE_PATH, profilePath); - } - } - break; - - case IDOK: - { - if (IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)) - { - if (profilePath != NULL) - { - std::tstring toxProfilePath = proto->GetToxProfilePath(); - CopyFile(profilePath, toxProfilePath.c_str(), FALSE); - } - } - EndDialog(hwnd, 1); - } - break; - - } - break; - } - return FALSE; } \ No newline at end of file diff --git a/protocols/Tox/src/tox_profile.cpp b/protocols/Tox/src/tox_profile.cpp new file mode 100644 index 0000000000..145b839f0c --- /dev/null +++ b/protocols/Tox/src/tox_profile.cpp @@ -0,0 +1,79 @@ +#include "common.h" + +INT_PTR CToxProto::ToxProfileManagerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + TCHAR *profilePath = (TCHAR*)GetWindowLongPtr(hwnd, DWLP_USER); + + switch (uMsg) + { + case WM_INITDIALOG: + TranslateDialogDefault(hwnd); + { + proto = (CToxProto*)lParam; + SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); + + profilePath = (TCHAR*)mir_calloc(sizeof(TCHAR)* MAX_PATH); + SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)profilePath); + + CheckDlgButton(hwnd, IDC_CREATE_NEW, TRUE); + } + return TRUE; + + case WM_CLOSE: + EndDialog(hwnd, 0); + break; + + case WM_DESTROY: + mir_free(profilePath); + break; + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_USE_EXISTING: + EnableWindow(GetDlgItem(hwnd, IDC_PROFILE_PATH), IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)); + EnableWindow(GetDlgItem(hwnd, IDC_BROWSE_PROFILE), IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)); + break; + + case IDC_BROWSE_PROFILE: + { + TCHAR filter[MAX_PATH] = { 0 }; + mir_sntprintf(filter, MAX_PATH, _T("%s\0*.*"), TranslateT("All files (*.*)")); + + OPENFILENAME ofn = { sizeof(ofn) }; + ofn.hwndOwner = hwnd; + ofn.lpstrFilter = filter; + ofn.nFilterIndex = 1; + ofn.lpstrFile = profilePath; + ofn.lpstrTitle = TranslateT("Select tox profile"); + ofn.nMaxFile = MAX_PATH; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_EXPLORER; + + if (GetOpenFileName(&ofn) && profilePath) + { + SetDlgItemText(hwnd, IDC_PROFILE_PATH, profilePath); + } + } + break; + + case IDOK: + { + if (IsDlgButtonChecked(hwnd, IDC_USE_EXISTING)) + { + if (profilePath != NULL) + { + std::tstring toxProfilePath = proto->GetToxProfilePath(); + CopyFile(profilePath, toxProfilePath.c_str(), FALSE); + } + } + EndDialog(hwnd, 1); + } + break; + + } + break; + } + + return FALSE; +} \ No newline at end of file diff --git a/protocols/Tox/src/tox_proto.cpp b/protocols/Tox/src/tox_proto.cpp index 5734700a99..7d9a5150a4 100644 --- a/protocols/Tox/src/tox_proto.cpp +++ b/protocols/Tox/src/tox_proto.cpp @@ -1,9 +1,7 @@ #include "common.h" CToxProto::CToxProto(const char* protoName, const TCHAR* userName) : - PROTO(protoName, userName), - fileTransfers(1, NumericKeySortT), - hFileProcess(0) +PROTO(protoName, userName) { InitToxCore(); @@ -51,7 +49,7 @@ DWORD_PTR __cdecl CToxProto::GetCaps(int type, MCONTACT hContact) switch (type) { case PFLAGNUM_1: - return PF1_IM | PF1_FILERECV | PF1_AUTHREQ | PF1_EXTSEARCH; + return PF1_IM | PF1_FILE | PF1_AUTHREQ | PF1_EXTSEARCH; case PFLAGNUM_2: return PF2_ONLINE | PF2_SHORTAWAY | PF2_LIGHTDND; case PFLAGNUM_4: @@ -108,7 +106,12 @@ int __cdecl CToxProto::Authorize(HANDLE hDbEvent) } int __cdecl CToxProto::AuthDeny(HANDLE hDbEvent, const PROTOCHAR* szReason) { return 0; } -int __cdecl CToxProto::AuthRecv(MCONTACT hContact, PROTORECVEVENT*) { return 0; } + +int __cdecl CToxProto::AuthRecv(MCONTACT, PROTORECVEVENT* pre) +{ + return Proto_AuthRecv(m_szModuleName, pre); + // return 0; +} int __cdecl CToxProto::AuthRequest(MCONTACT hContact, const PROTOCHAR* szMessage) { @@ -117,8 +120,8 @@ int __cdecl CToxProto::AuthRequest(MCONTACT hContact, const PROTOCHAR* szMessage ptrA reason(mir_utf8encodeW(szMessage)); - int32_t friendnumber = tox_add_friend(tox, &clientId[0], (uint8_t*)(char*)reason, (uint16_t)strlen(reason)); - if (friendnumber >= 0) + int32_t number = tox_add_friend(tox, &clientId[0], (uint8_t*)(char*)reason, (uint16_t)strlen(reason)); + if (number >= 0) { SaveToxData(); @@ -130,7 +133,7 @@ int __cdecl CToxProto::AuthRequest(MCONTACT hContact, const PROTOCHAR* szMessage delSetting(hContact, "Auth"); std::vector username(TOX_MAX_NAME_LENGTH); - tox_get_name(tox, friendnumber, &username[0]); + tox_get_name(tox, number, &username[0]); std::string nick(username.begin(), username.end()); setString(hContact, "Nick", nick.c_str()); @@ -150,9 +153,13 @@ HANDLE __cdecl CToxProto::FileAllow(MCONTACT hContact, HANDLE hTransfer, const P uint32_t number = tox_get_friend_number(tox, clientId.data()); uint8_t fileNumber = (uint8_t)hTransfer; - transfers.at(fileNumber)->pfts.tszWorkingDir = mir_tstrdup(tszPath); + FileTransferParam *transfer = transfers.at(fileNumber); + transfer->pfts.tszWorkingDir = mir_tstrdup(tszPath); - tox_file_send_control(tox, number, 1, fileNumber, TOX_FILECONTROL_ACCEPT, NULL, 0); + //if (!ProtoBroadcastAck(hContact, ACKTYPE_FILE, ACKRESULT_FILERESUME, (HANDLE)fileNumber, (LPARAM)&transfer->pfts)) + { + tox_file_send_control(tox, number, 1, fileNumber, TOX_FILECONTROL_ACCEPT, NULL, 0); + } return hTransfer; } @@ -177,7 +184,31 @@ int __cdecl CToxProto::FileDeny(MCONTACT hContact, HANDLE hTransfer, const PROTO return FileCancel(hContact, hTransfer); } -int __cdecl CToxProto::FileResume(HANDLE hTransfer, int* action, const PROTOCHAR** szFilename) { return 0; } +int __cdecl CToxProto::FileResume(HANDLE hTransfer, int* action, const PROTOCHAR** szFilename) +{ + uint8_t fileNumber = (uint8_t)hTransfer; + FileTransferParam *transfer = transfers.at(fileNumber); + + switch (*action) + { + case FILERESUME_SKIP: + /*if (ft->p2p_appID != 0) + p2p_sendStatus(ft, 603); + else + msnftp_sendAcceptReject (ft, false);*/ + break; + + case FILERESUME_RESUME: + //replaceStrT(ft->std.tszCurrentFile, *szFilename); + break; + + case FILERESUME_RENAME: + replaceStrT(transfer->pfts.tszCurrentFile, *szFilename); + break; + } + + return 0; +} int __cdecl CToxProto::GetInfo(MCONTACT hContact, int infoType) { return 0; } @@ -265,12 +296,41 @@ int __cdecl CToxProto::SendContacts(MCONTACT hContact, int flags, int nContacts, HANDLE __cdecl CToxProto::SendFile(MCONTACT hContact, const PROTOCHAR* szDescription, PROTOCHAR** ppszFiles) { - CFileTransfer *transfer = new CFileSendTransfer(hContact, InterlockedIncrement(&hFileProcess)); - transfer->ProcessTransferedFiles(ppszFiles); + std::string toxId(getStringA(hContact, TOX_SETTINGS_ID)); + std::vector clientId = HexStringToData(toxId); + + uint32_t number = tox_get_friend_number(tox, clientId.data()); + + TCHAR *fileName = _tcsrchr(ppszFiles[0], '\\') + 1; + + size_t fileDirLength = fileName - ppszFiles[0]; + TCHAR *fileDir = (TCHAR*)mir_alloc(sizeof(TCHAR)*fileDirLength); + _tcsncpy(fileDir, ppszFiles[0], fileDirLength); + fileDir[fileDirLength] = '\0'; + + size_t fileSize = 0; + FILE *file = _tfopen(ppszFiles[0], _T("rb")); + if (file != NULL) + { + fseek(file, 0, SEEK_END); + fileSize = ftell(file); + fseek(file, 0, SEEK_SET); + fclose(file); + } + + int fileNumber = tox_new_file_sender(tox, number, fileSize, (uint8_t*)(char*)ptrA(mir_utf8encodeT(fileName)), _tcslen(fileName)); + if (fileNumber < 0) + { + debugLogA("CToxProto::SendFilesAsync: cannot send file"); + } - ForkThread(&CToxProto::SendFilesAsync, transfer); + FileTransferParam *transfer = new FileTransferParam(fileNumber, fileName, fileSize); + transfer->pfts.hContact = hContact; + transfer->pfts.flags |= PFTS_RECEIVING; + transfer->pfts.tszWorkingDir = fileDir; + transfers[fileNumber] = transfer; - return (HANDLE)transfer->GetTransferNumber(); + return (HANDLE)fileNumber; } int __cdecl CToxProto::SendMsg(MCONTACT hContact, int flags, const char* msg) diff --git a/protocols/Tox/src/tox_proto.h b/protocols/Tox/src/tox_proto.h index 81d03f952c..4718ac7c3f 100644 --- a/protocols/Tox/src/tox_proto.h +++ b/protocols/Tox/src/tox_proto.h @@ -1,16 +1,16 @@ #ifndef _TOX_PROTO_H_ #define _TOX_PROTO_H_ -class CFileTransfer; - struct FileTransferParam { PROTOFILETRANSFERSTATUS pfts; - uint8_t number; + int number; - FileTransferParam(uint8_t number, const TCHAR* fileName, size_t fileSize) + FileTransferParam(int fileNumber, const TCHAR* fileName, size_t fileSize) { - pfts = { sizeof(PROTOFILETRANSFERSTATUS) }; + number = fileNumber; + + pfts.cbSize = sizeof(PROTOFILETRANSFERSTATUS); pfts.flags = PFTS_TCHAR; pfts.totalFiles = 1; pfts.ptszFiles = (TCHAR**)mir_alloc(sizeof(TCHAR*)*(pfts.totalFiles + 1)); @@ -93,30 +93,34 @@ public: virtual int __cdecl OnEvent(PROTOEVENTTYPE iEventType, WPARAM wParam, LPARAM lParam); // instances - static CToxProto* InitProtoInstance(const char* protoName, const wchar_t* userName); - static int UninitProtoInstance(CToxProto* ppro); - - static CToxProto* GetContactInstance(MCONTACT hContact); - static void UninitInstances(); + static CToxProto* InitAccount(const char* protoName, const wchar_t* userName); + static int UninitAccount(CToxProto* ppro); private: Tox *tox; - mir_cs tox_lock; - HANDLE hPollingThread; - bool isTerminated; - bool isConnected; - HANDLE hNetlibUser; - ULONG hFileProcess; - LIST fileTransfers; + mir_cs toxLock; + HANDLE hNetlib, hPollingThread; + bool isTerminated, isConnected; std::map transfers; // tox void InitToxCore(); void UninitToxCore(); - // instances - static LIST instanceList; - static int CompareProtos(const CToxProto *p1, const CToxProto *p2); + // ??? + void DoBootstrap(); + void DoTox(); + + void __cdecl PollingThread(void*); + + // tox profile + static INT_PTR CALLBACK ToxProfileManagerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + + // accounts + static LIST accounts; + static int CompareAccounts(const CToxProto *p1, const CToxProto *p2); + + int __cdecl OnAccountListChanged(WPARAM wParam, LPARAM lParam); // netlib void InitNetlib(); @@ -124,61 +128,62 @@ private: // account bool IsOnline(); + int __cdecl OnAccountLoaded(WPARAM, LPARAM); - void DoBootstrap(); - void DoTox(); - void __cdecl PollingThread(void*); - - //events - int __cdecl OnAccountLoaded(WPARAM, LPARAM); - int __cdecl OnContactDeleted(MCONTACT, LPARAM); + // events int __cdecl OnPreShutdown(WPARAM, LPARAM); + int __cdecl OnSettingsChanged(WPARAM wParam, LPARAM lParam); + // options + static INT_PTR CALLBACK MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int __cdecl OnOptionsInit(WPARAM wParam, LPARAM lParam); - int __cdecl OnSettingsChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnAccountListChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnPreCreateMessage(WPARAM wParam, LPARAM lParam); INT_PTR __cdecl OnAccountManagerInit(WPARAM, LPARAM); - static void OnFriendRequest(Tox *tox, const uint8_t *address, const uint8_t *message, const uint16_t messageSize, void *arg); - static void OnFriendMessage(Tox *tox, const int number, const uint8_t *message, const uint16_t messageSize, void *arg); - static void OnFriendAction(Tox *tox, const int number, const uint8_t *action, const uint16_t actionSize, void *arg); - static void OnTypingChanged(Tox *tox, const int number, uint8_t isTyping, void *arg); - static void OnFriendNameChange(Tox *tox, const int number, const uint8_t *name, const uint16_t nameSize, void *arg); - static void OnStatusMessageChanged(Tox *tox, const int number, const uint8_t* message, const uint16_t messageSize, void *arg); - static void OnUserStatusChanged(Tox *tox, int32_t number, uint8_t usertatus, void *arg); - static void OnConnectionStatusChanged(Tox *tox, const int number, const uint8_t status, void *arg); - static void OnReadReceipt(Tox *tox, int32_t number, uint32_t receipt, void *arg); - - //static void OnFileControlCallback(Tox *tox, int32_t number, uint8_t hFile, uint64_t fileSize, uint8_t *name, uint16_t nameSize, void *arg); - static void OnFileRequest(Tox *tox, int32_t number, uint8_t isSend, uint8_t fileNumber, uint8_t type, const uint8_t *data, uint16_t length, void *arg); - static void OnFriendFile(Tox *tox, int32_t number, uint8_t fileNumber, uint64_t fileSize, const uint8_t *fileName, uint16_t length, void *arg); - static void OnFileData(Tox *tox, int32_t number, uint8_t fileNumber, const uint8_t *data, uint16_t length, void *arg); - // contacts WORD GetContactStatus(MCONTACT hContact); bool IsContactOnline(MCONTACT hContact); void SetContactStatus(MCONTACT hContact, WORD status); void SetAllContactsStatus(WORD status); - bool IsProtoContact(MCONTACT hContact); + MCONTACT FindContact(const std::string &id); MCONTACT FindContact(const int friendNumber); MCONTACT AddContact(const std::string &id, bool isTemporary = false); MCONTACT GetContactFromAuthEvent(HANDLE hEvent); - void LoadContactList(); + void LoadFriendList(); + int __cdecl OnContactDeleted(MCONTACT, LPARAM); + + static void OnFriendRequest(Tox *tox, const uint8_t *address, const uint8_t *message, const uint16_t messageSize, void *arg); + static void OnFriendNameChange(Tox *tox, const int number, const uint8_t *name, const uint16_t nameSize, void *arg); + static void OnStatusMessageChanged(Tox *tox, const int number, const uint8_t* message, const uint16_t messageSize, void *arg); + static void OnUserStatusChanged(Tox *tox, int32_t number, uint8_t usertatus, void *arg); + static void OnConnectionStatusChanged(Tox *tox, const int number, const uint8_t status, void *arg); + + // contacts search void __cdecl SearchByIdAsync(void* arg); void __cdecl SearchByNameAsync(void* arg); - // file transfer + static INT_PTR CALLBACK SearchDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + + // messages + static void OnFriendMessage(Tox *tox, const int number, const uint8_t *message, const uint16_t messageSize, void *arg); + static void OnFriendAction(Tox *tox, const int number, const uint8_t *action, const uint16_t actionSize, void *arg); + static void OnTypingChanged(Tox *tox, const int number, uint8_t isTyping, void *arg); + static void OnReadReceipt(Tox *tox, int32_t number, uint32_t receipt, void *arg); + + int __cdecl OnPreCreateMessage(WPARAM wParam, LPARAM lParam); + + // transfer void __cdecl SendFileAsync(void* arg); - void __cdecl SendFilesAsync(void* arg); - CFileTransfer *GetFileTransferByFileNumber(int fileNumber); + //static void OnFileControlCallback(Tox *tox, int32_t number, uint8_t hFile, uint64_t fileSize, uint8_t *name, uint16_t nameSize, void *arg); + static void OnFileRequest(Tox *tox, int32_t number, uint8_t isSend, uint8_t fileNumber, uint8_t type, const uint8_t *data, uint16_t length, void *arg); + static void OnFriendFile(Tox *tox, int32_t number, uint8_t fileNumber, uint64_t fileSize, const uint8_t *fileName, uint16_t length, void *arg); + static void OnFileData(Tox *tox, int32_t number, uint8_t fileNumber, const uint8_t *data, uint16_t length, void *arg); // utils TOX_USERSTATUS MirandaToToxStatus(int status); @@ -188,7 +193,6 @@ private: static void ShowNotification(const wchar_t *caption, const wchar_t *message, int flags = 0, MCONTACT hContact = NULL); HANDLE AddDbEvent(MCONTACT hContact, WORD type, DWORD timestamp, DWORD flags, DWORD cbBlob, PBYTE pBlob); - void RaiseAuthRequestEvent(DWORD timestamp, const char* toxId, const char* reason); std::vector HexStringToData(std::string hex); std::string DataToHexString(std::vector); @@ -201,11 +205,6 @@ private: void LoadToxData(); void SaveToxData(); - - // dialogs - static INT_PTR CALLBACK SearchDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK ToxProfileManagerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); }; #endif //_TOX_PROTO_H_ \ No newline at end of file diff --git a/protocols/Tox/src/tox_search.cpp b/protocols/Tox/src/tox_search.cpp new file mode 100644 index 0000000000..82dcbd5be7 --- /dev/null +++ b/protocols/Tox/src/tox_search.cpp @@ -0,0 +1,79 @@ +#include "common.h" + +void CToxProto::SearchByIdAsync(void*) +{ + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HWND)1, 0); +} + +void CToxProto::SearchByNameAsync(void* arg) +{ + NETLIBHTTPREQUEST request = { sizeof(NETLIBHTTPREQUEST) }; + request.requestType = REQUEST_POST; + request.szUrl = "https://toxme.se/api"; + request.flags = NLHRF_HTTP11 | NLHRF_SSL | NLHRF_NODUMP; + + request.headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER)* 2); + request.headers[0].szName = "Content-Type"; + request.headers[0].szValue = "text/plain; charset=utf-8"; + request.headersCount = 1; + + std::string query = "{\"action\":3,\"name\":\""; + query += (char*)arg; + query += "\"}"; + + request.dataLength = query.length(); + request.pData = (char*)query.c_str(); + + NETLIBHTTPREQUEST* response = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlib, (LPARAM)&request); + + if (response) + { + std::smatch match; + std::regex regex("\"public_key\": \"(.+?)\""); + + const std::string content = response->pData; + + if (std::regex_search(content, match, regex)) + { + std::string toxId = match[1]; + + PROTOSEARCHRESULT psr = { sizeof(PROTOSEARCHRESULT) }; + psr.flags = PSR_TCHAR; + psr.id = mir_a2t(toxId.c_str()); + + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, (HANDLE)1, (LPARAM)&psr); + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)1, 0); + + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + return; + } + } + + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + mir_free(request.headers); + + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HANDLE)1, 0); + mir_free(arg); +} + +INT_PTR CToxProto::SearchDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + + switch (uMsg) + { + case WM_INITDIALOG: + TranslateDialogDefault(hwnd); + { + proto = (CToxProto*)lParam; + SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); + + //ShowWindow(GetDlgItem(GetParent(hwnd), 1408/*IDC_BYCUSTOM*/), SW_HIDE); + //ShowWindow(GetDlgItem(GetParent(hwnd), 1402/*IDC_ADVANCEDGROUP*/), SW_HIDE); + SetDlgItemText(GetParent(hwnd), 1408/*IDC_BYCUSTOM*/, TranslateT("Query")); + } + return TRUE; + } + + return FALSE; +} \ No newline at end of file diff --git a/protocols/Tox/src/tox_services.cpp b/protocols/Tox/src/tox_services.cpp deleted file mode 100644 index e74c41ff98..0000000000 --- a/protocols/Tox/src/tox_services.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "common.h" - diff --git a/protocols/Tox/src/tox_transfer.cpp b/protocols/Tox/src/tox_transfer.cpp new file mode 100644 index 0000000000..d91d18ca7c --- /dev/null +++ b/protocols/Tox/src/tox_transfer.cpp @@ -0,0 +1,128 @@ +#include "common.h" + +void CToxProto::SendFileAsync(void* arg) +{ + FileTransferParam *transfer = (FileTransferParam*)arg; + + std::string toxId(getStringA(transfer->pfts.hContact, TOX_SETTINGS_ID)); + std::vector clientId = HexStringToData(toxId); + + uint32_t number = tox_get_friend_number(tox, clientId.data()); + if (number < 0) + { + return; + } + + size_t fileSize = transfer->pfts.currentFileSize; + size_t fileProgress = 0; + TCHAR filePath[MAX_PATH]; + mir_sntprintf(filePath, SIZEOF(filePath), _T("%s%s"), transfer->pfts.tszWorkingDir, transfer->pfts.tszCurrentFile); + + FILE *hFile = _wfopen(filePath, _T("rb")); + if (hFile != NULL) + { + size_t chunkSize = min(tox_file_data_size(tox, number), fileSize); + uint8_t *data = (uint8_t*)mir_alloc(chunkSize); + while (!feof(hFile) && fileProgress < fileSize) + { + size_t size = min(chunkSize, fileSize - fileProgress); + if (fread(data, sizeof(uint8_t), size, hFile) == size) + { + tox_file_send_data(tox, number, transfer->number, data, size); + transfer->pfts.totalProgress = transfer->pfts.currentFileProgress = fileProgress += size; + + ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)transfer->number, (LPARAM)&transfer->pfts); + } + } + mir_free(data); + tox_file_send_control(tox, number, 0, transfer->number, TOX_FILECONTROL_FINISHED, NULL, 0); + } + else + { + ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_FAILED, (HANDLE)transfer->number, 0); + } +} + +void CToxProto::OnFriendFile(Tox *tox, int32_t number, uint8_t fileNumber, uint64_t fileSize, const uint8_t *fileName, uint16_t length, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + FileTransferParam *transfer = new FileTransferParam(fileNumber, ptrT(mir_utf8decodeT((const char*)fileName)), fileSize); + transfer->pfts.hContact = hContact; + transfer->pfts.flags |= PFTS_RECEIVING; + proto->transfers[fileNumber] = transfer; + + PROTORECVFILET pre = { 0 }; + pre.flags = PREF_TCHAR; + pre.fileCount = 1; + pre.timestamp = time(NULL); + pre.tszDescription = _T(""); + pre.ptszFiles = (TCHAR**)mir_alloc(sizeof(TCHAR*)* 2); + pre.ptszFiles[0] = mir_utf8decodeT((char*)fileName); + pre.ptszFiles[1] = NULL; + pre.lParam = (LPARAM)fileNumber; + ProtoChainRecvFile(hContact, &pre); + } +} + +void CToxProto::OnFileData(Tox *tox, int32_t number, uint8_t fileNumber, const uint8_t *data, uint16_t size, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + FileTransferParam *transfer = proto->transfers.at(fileNumber); + + TCHAR filePath[MAX_PATH]; + mir_sntprintf(filePath, SIZEOF(filePath), _T("%s%s"), transfer->pfts.tszWorkingDir, transfer->pfts.tszCurrentFile); + + FILE *hFile = NULL; + if (transfer->pfts.currentFileProgress == 0) + { + hFile = _tfopen(filePath, _T("wb+")); + proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)fileNumber, 0); + } + else + { + hFile = _tfopen(filePath, _T("ab")); + } + if (hFile != NULL) + { + fseek(hFile, transfer->pfts.currentFileProgress + 1, SEEK_SET); + if (fwrite(data, sizeof(uint8_t), size, hFile) == size) + { + transfer->pfts.totalProgress = transfer->pfts.currentFileProgress += size; + proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)fileNumber, (LPARAM)&transfer->pfts); + } + fclose(hFile); + } + } +} + +void CToxProto::OnFileRequest(Tox *tox, int32_t number, uint8_t isSend, uint8_t fileNumber, uint8_t type, const uint8_t *data, uint16_t length, void *arg) +{ + CToxProto *proto = (CToxProto*)arg; + + MCONTACT hContact = proto->FindContact(number); + if (hContact) + { + FileTransferParam *transfer = proto->transfers.at(fileNumber); + + switch (type) + { + case TOX_FILECONTROL_ACCEPT: + proto->ForkThread(&CToxProto::SendFileAsync, transfer); + proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)fileNumber, 0); + break; + + case TOX_FILECONTROL_FINISHED: + tox_file_send_control(proto->tox, number, 1, fileNumber, TOX_FILECONTROL_FINISHED, NULL, 0); + proto->ProtoBroadcastAck(transfer->pfts.hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, (HANDLE)fileNumber, 0); + break; + } + } +} \ No newline at end of file diff --git a/protocols/Tox/src/tox_transfers.cpp b/protocols/Tox/src/tox_transfers.cpp deleted file mode 100644 index 51bab8aac3..0000000000 --- a/protocols/Tox/src/tox_transfers.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "common.h" - -void CToxProto::SendFileAsync(void* arg) -{ - CFile *file = (CFile*)arg; - const CFileTransfer *transfer = file->GetTransfer(); - CToxProto *proto = (CToxProto*)transfer->GetProtoInstance(); -} - -void CToxProto::SendFilesAsync(void* arg) -{ - CFileTransfer *transfer = (CFileTransfer*)arg; - - std::string toxId(getStringA(transfer->GetContactHandle(), TOX_SETTINGS_ID)); - std::vector clientId = HexStringToData(toxId); - - uint32_t number = tox_get_friend_number(tox, clientId.data()); - - for (int i = 0; transfer->GetFileCount(); i++) - { - CFile *file = transfer->GetFileAt(i); - - int hFile = tox_new_file_sender(tox, number, file->GetSize(), (uint8_t*)file->GetName(), strlen(file->GetName())); - if (hFile < 0) - { - debugLogA("CToxProto::SendFilesAsync: cannot send file"); - } - file->SetNumber(hFile); - - transfer->Wait(); - } -} - -CFileTransfer *CToxProto::GetFileTransferByFileNumber(int fileNumber) -{ - for (int i = 0; fileTransfers.getCount(); i++) - { - if (fileTransfers[i]->HasFile(fileNumber)) - { - return fileTransfers[i]; - } - } - return NULL; -} \ No newline at end of file diff --git a/protocols/Tox/src/tox_utils.cpp b/protocols/Tox/src/tox_utils.cpp index 5964177965..80d8cdd0e9 100644 --- a/protocols/Tox/src/tox_utils.cpp +++ b/protocols/Tox/src/tox_utils.cpp @@ -71,32 +71,6 @@ HANDLE CToxProto::AddDbEvent(MCONTACT hContact, WORD type, DWORD timestamp, DWOR return db_event_add(hContact, &dbei); } -void CToxProto::RaiseAuthRequestEvent(DWORD timestamp, const char* toxId, const char* reason) -{ - MCONTACT hContact = this->AddContact(toxId); - - /*blob is: 0(DWORD), hContact(DWORD), nick(ASCIIZ), firstName(ASCIIZ), lastName(ASCIIZ), sid(ASCIIZ), reason(ASCIIZ)*/ - DWORD cbBlob = (DWORD) - (sizeof(DWORD)* 2 + - strlen(toxId) + - strlen(reason) + - 5); - - PBYTE pBlob, pCurBlob; - pCurBlob = pBlob = (PBYTE)mir_calloc(cbBlob); - - *((PDWORD)pCurBlob) = 0; - pCurBlob += sizeof(DWORD); - *((PDWORD)pCurBlob) = (DWORD)hContact; - pCurBlob += sizeof(DWORD); - pCurBlob += 3; - strcpy((char *)pCurBlob, toxId); - pCurBlob += strlen(toxId) + 1; - strcpy((char *)pCurBlob, reason); - - AddDbEvent(hContact, EVENTTYPE_AUTHREQUEST, timestamp, DBEF_UTF, cbBlob, pBlob); -} - std::vector CToxProto::HexStringToData(std::string hex) { std::stringstream ss; diff --git a/protocols/Tox/src/version.h b/protocols/Tox/src/version.h index 2eee3dc6b1..15c8ad26d7 100644 --- a/protocols/Tox/src/version.h +++ b/protocols/Tox/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 #define __RELEASE_NUM 0 -#define __BUILD_NUM 2 +#define __BUILD_NUM 3 #include diff --git a/protocols/Tox/tox/README.md b/protocols/Tox/tox/README.md new file mode 100644 index 0000000000..0879158997 --- /dev/null +++ b/protocols/Tox/tox/README.md @@ -0,0 +1,18 @@ +Prerequisites +------------- + +You will need PowerShell for preparing the `.def` file. + +### Tox-Core + +Download Tox DLL from [the CI server](https://jenkins.libtoxcore.so/job/toxcore_win32_dll/). Put that DLL into `dll` directory, copy the `include` files. + +Now you need to prepare the `.def` file for the DLL. You have to prepare the corresponding `.lib` file for the DLL. To do it, start PowerShell and enter a Visual Studio command environment. Then execute the following script: + + PS> 'EXPORTS' | Out-File .\libtox.def -Encoding ascii; dumpbin.exe /exports .\libtox.dll | % { ($_ -split '\s+')[4] } | Out-File .\libtox.def -Append -Encoding ascii + +It prepares the `def` file for the next step - the `lib` tool: + + PS> lib /def:libtox.def /out:libtox.lib /machine:x86 + +You'll get the `libtox.lib` import library in the current directory. Copy it to `lib` project directory and you're ready! diff --git a/protocols/Tox/tox/deflibcreator/as.exe b/protocols/Tox/tox/deflibcreator/as.exe new file mode 100644 index 0000000000..e1b3143100 Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/as.exe differ diff --git a/protocols/Tox/tox/deflibcreator/as64.exe b/protocols/Tox/tox/deflibcreator/as64.exe new file mode 100644 index 0000000000..4f5095abf8 Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/as64.exe differ diff --git a/protocols/Tox/tox/deflibcreator/deflibcreator.exe b/protocols/Tox/tox/deflibcreator/deflibcreator.exe new file mode 100644 index 0000000000..5969f5d4c2 Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/deflibcreator.exe differ diff --git a/protocols/Tox/tox/deflibcreator/dlltool.exe b/protocols/Tox/tox/deflibcreator/dlltool.exe new file mode 100644 index 0000000000..7874bdd13e Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/dlltool.exe differ diff --git a/protocols/Tox/tox/deflibcreator/dlltool64.exe b/protocols/Tox/tox/deflibcreator/dlltool64.exe new file mode 100644 index 0000000000..6a41e5228c Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/dlltool64.exe differ diff --git a/protocols/Tox/tox/deflibcreator/link.exe b/protocols/Tox/tox/deflibcreator/link.exe new file mode 100644 index 0000000000..5215aecd5d Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/link.exe differ diff --git a/protocols/Tox/tox/deflibcreator/link.exe.manifest b/protocols/Tox/tox/deflibcreator/link.exe.manifest new file mode 100644 index 0000000000..2981431665 --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/link.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/protocols/Tox/tox/deflibcreator/mspdb80.dll b/protocols/Tox/tox/deflibcreator/mspdb80.dll new file mode 100644 index 0000000000..cbe888915c Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/mspdb80.dll differ diff --git a/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest b/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest new file mode 100644 index 0000000000..2981431665 --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/protocols/Tox/tox/deflibcreator/src/build.cmd b/protocols/Tox/tox/deflibcreator/src/build.cmd new file mode 100644 index 0000000000..abcf258d0a --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/src/build.cmd @@ -0,0 +1,5 @@ +@echo off +rc /d "_UNICODE" /d "UNICODE" /fo".\release\resource.res" resource.rc +cl /EHsc /DUNICODE /D_UNICODE /Ox /Oi /Ot /DWIN32 /DNDEBUG /nologo /GL /TP /GS /Gz /MD deflibcreator.cpp /link /LTCG /release /manifest:no /Machine:x86 .\release\resource.res /out:.\release\deflibcreator.exe +del deflibcreator.obj +del .\release\resource.res \ No newline at end of file diff --git a/protocols/Tox/tox/deflibcreator/src/deflib.manifest b/protocols/Tox/tox/deflibcreator/src/deflib.manifest new file mode 100644 index 0000000000..414433b643 --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/src/deflib.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp b/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp new file mode 100644 index 0000000000..6480fda7e3 --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp @@ -0,0 +1,310 @@ +#define WIN32_LEAN_AND_MEAN +#define _WIN32_WINNT 0x0501 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#pragma comment(lib, "dbghelp.lib") +#pragma comment(lib, "shlwapi.lib") +#pragma comment(lib, "shell32.lib") + +// ordinals to names +typedef std::map > ExportMap; + +void GetExports(PVOID pMapping, ExportMap& exports, WORD& imageType) +{ + ULONG size = 0; + PIMAGE_NT_HEADERS pHead = ImageNtHeader(pMapping); + PIMAGE_EXPORT_DIRECTORY pDir = static_cast(ImageDirectoryEntryToData(pMapping, FALSE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size)); + if(pHead && pDir) + { + imageType = pHead->FileHeader.Machine; + char* base = static_cast(pMapping); + DWORD rvaExportDir = reinterpret_cast(pDir) - base; + PIMAGE_SECTION_HEADER pSec = NULL; + PDWORD namesAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNames, &pSec)); + PWORD ordinalAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNameOrdinals, &pSec)); + DWORD numFuncs = pDir->NumberOfFunctions; + DWORD numNames = pDir->NumberOfNames; + DWORD baseOrd = pDir->Base; + + std::set ordinals; + DWORD lastOrd = baseOrd + numFuncs; + for(DWORD i = baseOrd; i < lastOrd; ++i) + { + ordinals.insert(i); + } + + for(DWORD i = 0; i < numNames; ++i) + { + WORD thisZeroBasedOrd = ordinalAddr[i]; + DWORD thisBasedOrd = thisZeroBasedOrd + baseOrd; + ordinals.erase(thisBasedOrd); + LPCSTR name = static_cast(ImageRvaToVa(pHead, pMapping, namesAddr[i], &pSec)); + exports[thisBasedOrd].push_back(name); + } + + for(std::set::const_iterator iter = ordinals.begin(), end = ordinals.end(); + iter != end; + ++iter + ) + { + exports.insert(std::make_pair(*iter, ExportMap::mapped_type())); + } + } +} + +PVOID MapFile(HANDLE hFile, DWORD fileMapPerm, DWORD mappedPerms) +{ + PVOID base = NULL; + HANDLE hMap = CreateFileMappingW( + hFile, + NULL, + fileMapPerm, + 0, + 0, + NULL + ); + if(hMap) + { + base = MapViewOfFile(hMap, mappedPerms, 0, 0, 0); + CloseHandle(hMap); + } + return base; +} + +PVOID MapFile(const wchar_t* fileName, DWORD filePerms, DWORD fileMapPerm, DWORD mappedPerms) +{ + PVOID base = NULL; + HANDLE hFile = CreateFileW( + fileName, + filePerms, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, + NULL + ); + if(hFile != INVALID_HANDLE_VALUE) + { + base = MapFile(hFile, fileMapPerm, mappedPerms); + CloseHandle(hFile); + } + return base; +} + +PVOID MapFileRO(const wchar_t* fileName, BOOL image) +{ + return MapFile(fileName, GENERIC_READ, PAGE_READONLY | (image ? SEC_IMAGE : 0), FILE_MAP_READ); +} + +std::wstring GetFileName(const wchar_t* pFilePath) +{ + const wchar_t* pAfterSlash = pFilePath, *pSlash = NULL; + while((pSlash = wcspbrk(pAfterSlash, L"\\/")) != NULL) + { + pAfterSlash = pSlash + 1; + } + const wchar_t* pDot = wcschr(pAfterSlash, L'.'); + if(pDot != NULL) + { + return std::wstring(pAfterSlash, pDot); + } + else return std::wstring(pAfterSlash); +} + +std::wstring MakeWString(const char* string) +{ + size_t reqd = mbstowcs(NULL, string, 0); + if(reqd != static_cast(-1)) + { + std::wstring str(reqd, 0); + mbstowcs(&str[0], string, reqd); + return str; + } + return std::wstring(string, string + strlen(string) + 1); +} + +void DoAndWaitForExecution(SHELLEXECUTEINFO& sei) +{ + if(!ShellExecuteEx(&sei)) + { + std::wcerr << L"Couldn't execute \"" << sei.lpFile << L'\n'; + } + else + { + WaitForSingleObject(sei.hProcess, INFINITE); + CloseHandle(sei.hProcess); + } +} + +void CreateLibs(const std::wstring& defFile, const std::wstring& baseName, const std::wstring& outDir, WORD machineType) +{ + std::wstring curDir(1000, 0); + curDir.resize(GetModuleFileName(GetModuleHandle(NULL), &curDir[0], curDir.length())); + curDir.resize(curDir.find_last_of(L"\\/") + 1); + SHELLEXECUTEINFO sei = {sizeof(sei), 0}; + sei.fMask = SEE_MASK_NOCLOSEPROCESS; + sei.hwnd = GetConsoleWindow(); + sei.lpVerb = L"open"; + sei.lpDirectory = outDir.c_str(); + + // 32-bit libs + if(machineType == IMAGE_FILE_MACHINE_I386) + { + std::wcout << L"Creating 32-bit libs...\n"; + // dlltool for mingw (x86) + std::wcout << L"\tCreating lib" << baseName << L".a...\n"; + std::wostringstream pstream; + pstream << L"-d \"" << defFile << L"\" -l lib" << baseName << L".a"; + + std::wstring binary = curDir + L"dlltool.exe"; + std::wstring parameters = pstream.str(); + + sei.lpFile = binary.c_str(); + sei.lpParameters = parameters.c_str(); + + DoAndWaitForExecution(sei); + + pstream.str(L""); + + // link for msvc (x86) + std::wcout << L"\tCreating " << baseName << L".lib...\n"; + pstream << L"/lib /nologo /machine:x86 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L".lib\""; + + binary = curDir + L"link.exe"; + parameters = pstream.str(); + sei.lpFile = binary.c_str(); + sei.lpParameters = parameters.c_str(); + DoAndWaitForExecution(sei); + } + else + { + std::wcout << L"Creating 64-bit libs...\n"; + // dlltool for mingw (x64) (my fail if running on 32-bit comp) + std::wcout << L"\tlib" << baseName << L"-x64.a...\n"; + + std::wstring binary = curDir + L"dlltool64.exe"; + std::wstring as64Pos = L"\""; + as64Pos += (curDir + L"as64.exe\""); + std::wostringstream pstream; + pstream << L"-d \"" << defFile << L"\" -S " << as64Pos << L" -l lib" << baseName << L"-x64.a"; + + std::wstring parameters = pstream.str(); + sei.lpFile = binary.c_str(); + sei.lpParameters = parameters.c_str(); + DoAndWaitForExecution(sei); + + pstream.str(L""); + + // link for msvc (x64) + std::wcout << L'\t' << baseName << L"-x64.lib...\n"; + binary = curDir + L"link.exe"; + pstream << L"/lib /nologo /machine:x64 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L"-x64.lib\""; + parameters = pstream.str(); + sei.lpFile = binary.c_str(); + sei.lpParameters = parameters.c_str(); + DoAndWaitForExecution(sei); + } +} + +BOOL CreateDef(LPCWSTR dllFile, const std::wstring& defFile, WORD& machineType) +{ + std::wcout << L"Creating " << defFile << L"...\n"; + // this is FALSE on purpose. If it's true, some dll's (mainly bcrypt.dll from Vista) + // fail to map as an image because of some funkyness with the certificate or + // something (STATUS_INVALID_IMAGE_HASH fyi). So this is just easier + PVOID pMapping = MapFileRO(dllFile, FALSE); + if(pMapping) + { + ExportMap exports; + GetExports(pMapping, exports, machineType); + if(!exports.empty()) + { + std::wofstream defFile(defFile.c_str()); + std::wostringstream expDetails; + defFile << L"LIBRARY \"" << GetFileName(dllFile) << L"\"\n\nEXPORTS\n"; + for(ExportMap::const_iterator iter = exports.begin(), end = exports.end(); + iter != end; + ++iter + ) + { + expDetails.str(L""); + expDetails.clear(); + expDetails << L'\t'; + const ExportMap::mapped_type& names = iter->second; + if(!names.empty()) + { + const std::wstring& initialName = MakeWString(*(names.begin())); + expDetails << initialName << L"\t@" << iter->first << L'\n'; + for(ExportMap::mapped_type::const_iterator namesIter = names.begin() + 1, namesEnd = names.end(); + namesIter != namesEnd; + ++namesIter + ) + { + expDetails << '\t' << MakeWString(*namesIter) << L'=' << initialName << L'\n'; + } + } + // unnamed export + else + { + expDetails << L"Ordinal" << iter->first << L" NONAME\t@" << iter->first << L'\n'; + } + defFile << expDetails.str(); + } + } + else + { + std::wcerr << dllFile << L" has no exports, nothing to do\n"; + return FALSE; + } + UnmapViewOfFile(pMapping); + } + return TRUE; +} + +int __cdecl wmain(int argc, wchar_t** argv) +{ + std::wcout << L"DefLibCreator v1.0 - Airesoft.co.uk\n\n"; + if(argc < 2) + { + puts("Usage: DefLibCreator dll [outDir]"); + return 1; + } + else + { + std::wstring baseFileName = PathFindFileName(argv[1]); + baseFileName.erase(baseFileName.find_last_of('.')); + int outDirArg = (argc >= 3) ? 2 : 1; + LPWSTR pFilePart = NULL; + std::wstring outDir(GetFullPathName(argv[outDirArg], 0, NULL, NULL), 0); + outDir.resize(GetFullPathName(argv[outDirArg], outDir.length(), &outDir[0], &pFilePart)); + // if the explicit output dir wasn't specified, we need to chop the dll filename off the end of outDir + if(outDirArg == 1) + { + outDir.resize(pFilePart - outDir.c_str()); + } + else + { + CreateDirectory(outDir.c_str(), NULL); + } + outDir.push_back(L'\\'); // ensure it ends with a slash + std::wstring defFile(outDir); + defFile += (baseFileName + L".def"); + WORD machineType = 0; + if(CreateDef(argv[1], defFile, machineType)) + { + CreateLibs(defFile, baseFileName, outDir, machineType); + } + } + return 0; +} diff --git a/protocols/Tox/tox/deflibcreator/src/dlc.ico b/protocols/Tox/tox/deflibcreator/src/dlc.ico new file mode 100644 index 0000000000..aa524c729c Binary files /dev/null and b/protocols/Tox/tox/deflibcreator/src/dlc.ico differ diff --git a/protocols/Tox/tox/deflibcreator/src/resource.rc b/protocols/Tox/tox/deflibcreator/src/resource.rc new file mode 100644 index 0000000000..503ec99a76 --- /dev/null +++ b/protocols/Tox/tox/deflibcreator/src/resource.rc @@ -0,0 +1,94 @@ +// Microsoft Visual C++ generated resource script. +// +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winresrc.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.K.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN +END + +2 TEXTINCLUDE +BEGIN + "#include ""winresrc.h""\r\0" +END + +3 TEXTINCLUDE +BEGIN +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +1 ICON "dlc.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904b0" + BEGIN + VALUE "CompanyName", "Airesoft" + VALUE "FileDescription", "DefLibCreator" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "DefLibCreator.exe" + VALUE "LegalCopyright", "Copyright (C) Airesoft 2012" + VALUE "OriginalFilename", "DefLibCreator.exe" + VALUE "ProductName", "DefLibCreator" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1200 + END +END + +#endif // English (U.K.) resources +///////////////////////////////////////////////////////////////////////////// + +/// Manifest +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST deflib.manifest \ No newline at end of file diff --git a/protocols/Tox/tox/dll/x64/libtox.dll b/protocols/Tox/tox/dll/x64/libtox.dll new file mode 100644 index 0000000000..832ff1d072 Binary files /dev/null and b/protocols/Tox/tox/dll/x64/libtox.dll differ diff --git a/protocols/Tox/tox/dll/x86/libtox.dll b/protocols/Tox/tox/dll/x86/libtox.dll new file mode 100644 index 0000000000..f892c75fb7 Binary files /dev/null and b/protocols/Tox/tox/dll/x86/libtox.dll differ diff --git a/protocols/Tox/tox/generate_libs.cmd b/protocols/Tox/tox/generate_libs.cmd new file mode 100644 index 0000000000..6111e156e1 --- /dev/null +++ b/protocols/Tox/tox/generate_libs.cmd @@ -0,0 +1,3 @@ +deflibcreator\deflibcreator dll\x86\libtox.dll lib\x86\ + +deflibcreator\deflibcreator dll\x64\libtox.dll lib\x64\ diff --git a/protocols/Tox/tox/include/tox.h b/protocols/Tox/tox/include/tox.h new file mode 100644 index 0000000000..5810c1289c --- /dev/null +++ b/protocols/Tox/tox/include/tox.h @@ -0,0 +1,683 @@ +/* tox.h + * + * The Tox public API. + * + * Copyright (C) 2013 Tox project All Rights Reserved. + * + * This file is part of Tox. + * + * Tox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tox 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tox. If not, see . + * + */ + +#ifndef TOX_H +#define TOX_H + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +#define TOX_MAX_NAME_LENGTH 128 + +/* Maximum length of single messages after which they should be split. */ +#define TOX_MAX_MESSAGE_LENGTH 1368 +#define TOX_MAX_STATUSMESSAGE_LENGTH 1007 +#define TOX_CLIENT_ID_SIZE 32 + +#define TOX_FRIEND_ADDRESS_SIZE (TOX_CLIENT_ID_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) + +#define TOX_ENABLE_IPV6_DEFAULT 1 + +/* Errors for m_addfriend + * FAERR - Friend Add Error + */ +enum { + TOX_FAERR_TOOLONG = -1, + TOX_FAERR_NOMESSAGE = -2, + TOX_FAERR_OWNKEY = -3, + TOX_FAERR_ALREADYSENT = -4, + TOX_FAERR_UNKNOWN = -5, + TOX_FAERR_BADCHECKSUM = -6, + TOX_FAERR_SETNEWNOSPAM = -7, + TOX_FAERR_NOMEM = -8 +}; + +/* USERSTATUS - + * Represents userstatuses someone can have. + */ +typedef enum { + TOX_USERSTATUS_NONE, + TOX_USERSTATUS_AWAY, + TOX_USERSTATUS_BUSY, + TOX_USERSTATUS_INVALID +} +TOX_USERSTATUS; + +#ifndef __TOX_DEFINED__ +#define __TOX_DEFINED__ +typedef struct Tox Tox; +#endif + +/* NOTE: Strings in Tox are all UTF-8, (This means that there is no terminating NULL character.) + * + * The exact buffer you send will be received at the other end without modification. + * + * Do not treat Tox strings as C strings. + */ + +/* return TOX_FRIEND_ADDRESS_SIZE byte address to give to others. + * format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)] + */ +void tox_get_address(const Tox *tox, uint8_t *address); + +/* Add a friend. + * Set the data that will be sent along with friend request. + * address is the address of the friend (returned by getaddress of the friend you wish to add) it must be TOX_FRIEND_ADDRESS_SIZE bytes. TODO: add checksum. + * data is the data and length is the length. + * + * return the friend number if success. + * return TOX_FAERR_TOOLONG if message length is too long. + * return TOX_FAERR_NOMESSAGE if no message (message length must be >= 1 byte). + * return TOX_FAERR_OWNKEY if user's own key. + * return TOX_FAERR_ALREADYSENT if friend request already sent or already a friend. + * return TOX_FAERR_UNKNOWN for unknown error. + * return TOX_FAERR_BADCHECKSUM if bad checksum in address. + * return TOX_FAERR_SETNEWNOSPAM if the friend was already there but the nospam was different. + * (the nospam for that friend was set to the new one). + * return TOX_FAERR_NOMEM if increasing the friend list size fails. + */ +int32_t tox_add_friend(Tox *tox, const uint8_t *address, const uint8_t *data, uint16_t length); + + +/* Add a friend without sending a friendrequest. + * return the friend number if success. + * return -1 if failure. + */ +int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id); + +/* return the friend number associated to that client id. + return -1 if no such friend */ +int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id); + +/* Copies the public key associated to that friend id into client_id buffer. + * Make sure that client_id is of size CLIENT_ID_SIZE. + * return 0 if success. + * return -1 if failure. + */ +int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id); + +/* Remove a friend. + * + * return 0 if success. + * return -1 if failure. + */ +int tox_del_friend(Tox *tox, int32_t friendnumber); + +/* Checks friend's connecting status. + * + * return 1 if friend is connected to us (Online). + * return 0 if friend is not connected to us (Offline). + * return -1 on failure. + */ +int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber); + +/* Checks if there exists a friend with given friendnumber. + * + * return 1 if friend exists. + * return 0 if friend doesn't exist. + */ +int tox_friend_exists(const Tox *tox, int32_t friendnumber); + +/* Send a text chat message to an online friend. + * + * return the message id if packet was successfully put into the send queue. + * return 0 if it was not. + * + * maximum length of messages is TOX_MAX_MESSAGE_LENGTH, your client must split larger messages + * or else sending them will not work. No the core will not split messages for you because that + * requires me to parse UTF-8. + * + * You will want to retain the return value, it will be passed to your read_receipt callback + * if one is received. + * m_sendmessage_withid will send a message with the id of your choosing, + * however we can generate an id for you by calling plain m_sendmessage. + */ +uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length); +uint32_t tox_send_message_withid(Tox *tox, int32_t friendnumber, uint32_t theid, const uint8_t *message, + uint32_t length); + +/* Send an action to an online friend. + * + * return the message id if packet was successfully put into the send queue. + * return 0 if it was not. + * + * maximum length of actions is TOX_MAX_MESSAGE_LENGTH, your client must split larger actions + * or else sending them will not work. No the core will not split actions for you because that + * requires me to parse UTF-8. + * + * You will want to retain the return value, it will be passed to your read_receipt callback + * if one is received. + * m_sendaction_withid will send an action message with the id of your choosing, + * however we can generate an id for you by calling plain m_sendaction. + */ +uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length); +uint32_t tox_send_action_withid(Tox *tox, int32_t friendnumber, uint32_t theid, const uint8_t *action, uint32_t length); + +/* Set our nickname. + * name must be a string of maximum MAX_NAME_LENGTH length. + * length must be at least 1 byte. + * length is the length of name with the NULL terminator. + * + * return 0 if success. + * return -1 if failure. + */ +int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length); + +/* + * Get your nickname. + * m - The messenger context to use. + * name - needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. + * + * return length of name. + * return 0 on error. + */ +uint16_t tox_get_self_name(const Tox *tox, uint8_t *name); + +/* Get name of friendnumber and put it in name. + * name needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. + * + * return length of name if success. + * return -1 if failure. + */ +int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name); + +/* returns the length of name on success. + * returns -1 on failure. + */ +int tox_get_name_size(const Tox *tox, int32_t friendnumber); +int tox_get_self_name_size(const Tox *tox); + +/* Set our user status. + * + * userstatus must be one of TOX_USERSTATUS values. + * max length of the status is TOX_MAX_STATUSMESSAGE_LENGTH. + * + * returns 0 on success. + * returns -1 on failure. + */ +int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length); +int tox_set_user_status(Tox *tox, uint8_t userstatus); + +/* returns the length of status message on success. + * returns -1 on failure. + */ +int tox_get_status_message_size(const Tox *tox, int32_t friendnumber); +int tox_get_self_status_message_size(const Tox *tox); + +/* Copy friendnumber's status message into buf, truncating if size is over maxlen. + * Get the size you need to allocate from m_get_statusmessage_size. + * The self variant will copy our own status message. + * + * returns the length of the copied data on success + * retruns -1 on failure. + */ +int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen); +int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen); + +/* return one of TOX_USERSTATUS values. + * Values unknown to your application should be represented as TOX_USERSTATUS_NONE. + * As above, the self variant will return our own TOX_USERSTATUS. + * If friendnumber is invalid, this shall return TOX_USERSTATUS_INVALID. + */ +uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber); +uint8_t tox_get_self_user_status(const Tox *tox); + + +/* returns timestamp of last time friendnumber was seen online, or 0 if never seen. + * returns -1 on error. + */ +uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber); + +/* Set our typing status for a friend. + * You are responsible for turning it on or off. + * + * returns 0 on success. + * returns -1 on failure. + */ +int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing); + +/* Get the typing status of a friend. + * + * returns 0 if friend is not typing. + * returns 1 if friend is typing. + */ +uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber); + +/* Return the number of friends in the instance m. + * You should use this to determine how much memory to allocate + * for copy_friendlist. */ +uint32_t tox_count_friendlist(const Tox *tox); + +/* Return the number of online friends in the instance m. */ +uint32_t tox_get_num_online_friends(const Tox *tox); + +/* Copy a list of valid friend IDs into the array out_list. + * If out_list is NULL, returns 0. + * Otherwise, returns the number of elements copied. + * If the array was too small, the contents + * of out_list will be truncated to list_size. */ +uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size); + +/* Set the function that will be executed when a friend request is received. + * Function format is function(Tox *tox, uint8_t * public_key, uint8_t * data, uint16_t length, void *userdata) + */ +void tox_callback_friend_request(Tox *tox, void (*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, + void *), void *userdata); + +/* Set the function that will be executed when a message from a friend is received. + * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * message, uint16_t length, void *userdata) + */ +void tox_callback_friend_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set the function that will be executed when an action from a friend is received. + * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * action, uint16_t length, void *userdata) + */ +void tox_callback_friend_action(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set the callback for name changes. + * function(Tox *tox, int32_t friendnumber, uint8_t *newname, uint16_t length, void *userdata) + * You are not responsible for freeing newname + */ +void tox_callback_name_change(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set the callback for status message changes. + * function(Tox *tox, int32_t friendnumber, uint8_t *newstatus, uint16_t length, void *userdata) + * You are not responsible for freeing newstatus. + */ +void tox_callback_status_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set the callback for status type changes. + * function(Tox *tox, int32_t friendnumber, uint8_t TOX_USERSTATUS, void *userdata) + */ +void tox_callback_user_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + +/* Set the callback for typing changes. + * function (Tox *tox, int32_t friendnumber, uint8_t is_typing, void *userdata) + */ +void tox_callback_typing_change(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + +/* Set the callback for read receipts. + * function(Tox *tox, int32_t friendnumber, uint32_t receipt, void *userdata) + * + * If you are keeping a record of returns from m_sendmessage; + * receipt might be one of those values, meaning the message + * has been received on the other side. + * Since core doesn't track ids for you, receipt may not correspond to any message. + * In that case, you should discard it. + */ +void tox_callback_read_receipt(Tox *tox, void (*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata); + +/* Set the callback for connection status changes. + * function(Tox *tox, int32_t friendnumber, uint8_t status, void *userdata) + * + * Status: + * 0 -- friend went offline after being previously online + * 1 -- friend went online + * + * NOTE: This callback is not called when adding friends, thus the "after + * being previously online" part. it's assumed that when adding friends, + * their connection status is offline. + */ +void tox_callback_connection_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + + +/**********ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) ************/ + +/* Functions to get/set the nospam part of the id. + */ +uint32_t tox_get_nospam(const Tox *tox); +void tox_set_nospam(Tox *tox, uint32_t nospam); + +/* Copy the public and secret key from the Tox object. + public_key and secret_key must be 32 bytes big. + if the pointer is NULL, no data will be copied to it.*/ +void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key); + +/**********GROUP CHAT FUNCTIONS: WARNING Group chats will be rewritten so this might change ************/ + +/* Set the callback for group invites. + * + * Function(Tox *tox, int friendnumber, uint8_t *group_public_key, void *userdata) + */ +void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, void *), void *userdata); + +/* Set the callback for group messages. + * + * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata) + */ +void tox_callback_group_message(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set the callback for group actions. + * + * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * action, uint16_t length, void *userdata) + */ +void tox_callback_group_action(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), + void *userdata); + +/* Set callback function for peer name list changes. + * + * It gets called every time the name list changes(new peer/name, deleted peer) + * Function(Tox *tox, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) + */ +typedef enum { + TOX_CHAT_CHANGE_PEER_ADD, + TOX_CHAT_CHANGE_PEER_DEL, + TOX_CHAT_CHANGE_PEER_NAME, +} TOX_CHAT_CHANGE; + +void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), + void *userdata); + +/* Creates a new groupchat and puts it in the chats array. + * + * return group number on success. + * return -1 on failure. + */ +int tox_add_groupchat(Tox *tox); + +/* Delete a groupchat from the chats array. + * + * return 0 on success. + * return -1 if failure. + */ +int tox_del_groupchat(Tox *tox, int groupnumber); + +/* Copy the name of peernumber who is in groupnumber to name. + * name must be at least TOX_MAX_NAME_LENGTH long. + * + * return length of name if success + * return -1 if failure + */ +int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name); + +/* invite friendnumber to groupnumber + * return 0 on success + * return -1 on failure + */ +int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber); + +/* Join a group (you need to have been invited first.) + * + * returns group number on success + * returns -1 on failure. + */ +int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *friend_group_public_key); + +/* send a group message + * return 0 on success + * return -1 on failure + */ +int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint32_t length); + +/* send a group action + * return 0 on success + * return -1 on failure + */ +int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint32_t length); + +/* Return the number of peers in the group chat on success. + * return -1 on failure + */ +int tox_group_number_peers(const Tox *tox, int groupnumber); + +/* List all the peers in the group chat. + * + * Copies the names of the peers to the name[length][TOX_MAX_NAME_LENGTH] array. + * + * Copies the lengths of the names to lengths[length] + * + * returns the number of peers on success. + * + * return -1 on failure. + */ +int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], + uint16_t length); + +/* Return the number of chats in the instance m. + * You should use this to determine how much memory to allocate + * for copy_chatlist. */ +uint32_t tox_count_chatlist(const Tox *tox); + +/* Copy a list of valid chat IDs into the array out_list. + * If out_list is NULL, returns 0. + * Otherwise, returns the number of elements copied. + * If the array was too small, the contents + * of out_list will be truncated to list_size. */ +uint32_t tox_get_chatlist(const Tox *tox, int *out_list, uint32_t list_size); + + +/****************FILE SENDING FUNCTIONS*****************/ +/* NOTE: This how to will be updated. + * + * HOW TO SEND FILES CORRECTLY: + * 1. Use tox_new_file_sender(...) to create a new file sender. + * 2. Wait for the callback set with tox_callback_file_control(...) to be called with receive_send == 1 and control_type == TOX_FILECONTROL_ACCEPT + * 3. Send the data with tox_file_send_data(...) with chunk size tox_file_data_size(...) + * 4. When sending is done, send a tox_file_send_control(...) with send_receive = 0 and message_id = TOX_FILECONTROL_FINISHED + * 5. when the callback set with tox_callback_file_control(...) is called with receive_send == 1 and control_type == TOX_FILECONTROL_FINISHED + * the other person has received the file correctly. + * + * HOW TO RECEIVE FILES CORRECTLY: + * 1. wait for the callback set with tox_callback_file_send_request(...) + * 2. accept or refuse the connection with tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_ACCEPT or TOX_FILECONTROL_KILL + * 3. save all the data received with the callback set with tox_callback_file_data(...) to a file. + * 4. when the callback set with tox_callback_file_control(...) is called with receive_send == 0 and control_type == TOX_FILECONTROL_FINISHED + * the file is done transferring. + * 5. send a tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_FINISHED to confirm that we did receive the file. + * + * tox_file_data_remaining(...) can be used to know how many bytes are left to send/receive. + * + * If the connection breaks during file sending (The other person goes offline without pausing the sending and then comes back) + * the receiver must send a control packet with send_receive == 1 message_id = TOX_FILECONTROL_RESUME_BROKEN and the data being + * a uint64_t (in host byte order) containing the number of bytes received. + * + * If the sender receives this packet, he must send a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT + * then he must start sending file data from the position (data , uint64_t in host byte order) received in the TOX_FILECONTROL_RESUME_BROKEN packet. + * + * To pause a file transfer send a control packet with control_type == TOX_FILECONTROL_PAUSE. + * To unpause a file transfer send a control packet with control_type == TOX_FILECONTROL_ACCEPT. + * + * If you receive a control packet with receive_send == 1 and control_type == TOX_FILECONTROL_PAUSE, you must stop sending filenumber until the other + * person sends a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT with the filenumber being a paused filenumber. + * + * If you receive a control packet with receive_send == 0 and control_type == TOX_FILECONTROL_PAUSE, it means the sender of filenumber has paused the + * transfer and will resume it later with a control packet with send_receive == 1 and control_type == TOX_FILECONTROL_ACCEPT for that file number. + * + * More to come... + */ + +enum { + TOX_FILECONTROL_ACCEPT, + TOX_FILECONTROL_PAUSE, + TOX_FILECONTROL_KILL, + TOX_FILECONTROL_FINISHED, + TOX_FILECONTROL_RESUME_BROKEN +}; +/* Set the callback for file send requests. + * + * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *filename, uint16_t filename_length, void *userdata) + */ +void tox_callback_file_send_request(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint64_t, const uint8_t *, + uint16_t, void *), void *userdata); + +/* Set the callback for file control requests. + * + * receive_send is 1 if the message is for a slot on which we are currently sending a file and 0 if the message + * is for a slot on which we are receiving the file + * + * Function(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, uint8_t *data, uint16_t length, void *userdata) + * + */ +void tox_callback_file_control(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t *, + uint16_t, void *), void *userdata); + +/* Set the callback for file data. + * + * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata) + * + */ +void tox_callback_file_data(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, const uint8_t *, uint16_t length, + void *), void *userdata); + + +/* Send a file send request. + * Maximum filename length is 255 bytes. + * return file number on success + * return -1 on failure + */ +int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, + uint16_t filename_length); + +/* Send a file control request. + * + * send_receive is 0 if we want the control packet to target a file we are currently sending, + * 1 if it targets a file we are currently receiving. + * + * return 0 on success + * return -1 on failure + */ +int tox_file_send_control(Tox *tox, int32_t friendnumber, uint8_t send_receive, uint8_t filenumber, uint8_t message_id, + const uint8_t *data, uint16_t length); + +/* Send file data. + * + * return 0 on success + * return -1 on failure + */ +int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length); + +/* Returns the recommended/maximum size of the filedata you send with tox_file_send_data() + * + * return size on success + * return -1 on failure (currently will never return -1) + */ +int tox_file_data_size(const Tox *tox, int32_t friendnumber); + +/* Give the number of bytes left to be sent/received. + * + * send_receive is 0 if we want the sending files, 1 if we want the receiving. + * + * return number of bytes remaining to be sent/received on success + * return 0 on failure + */ +uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive); + +/***************END OF FILE SENDING FUNCTIONS******************/ + +/* + * Use this function to bootstrap the client. + */ + +/* Resolves address into an IP address. If successful, sends a "get nodes" + * request to the given node with ip, port (in host byte order). + * and public_key to setup connections + * + * address can be a hostname or an IP address (IPv4 or IPv6). + * + * returns 1 if the address could be converted into an IP address + * returns 0 otherwise + */ +int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); + +/* return 0 if we are not connected to the DHT. + * return 1 if we are. + */ +int tox_isconnected(const Tox *tox); + +typedef struct { + /* + * The type of UDP socket created depends on ipv6enabled: + * If set to 0 (zero), creates an IPv4 socket which subsequently only allows + * IPv4 communication + * If set to anything else (default), creates an IPv6 socket which allows both IPv4 AND + * IPv6 communication + */ + uint8_t ipv6enabled; + + /* Set to 1 to disable udp support. (default: 0) + This will force Tox to use TCP only which may slow things down. + Disabling udp support is necessary when using anonymous proxies or Tor.*/ + uint8_t udp_disabled; + + /* Enable proxy support. (only basic TCP socks5 proxy currently supported.) (default: 0 (disabled))*/ + uint8_t proxy_enabled; + char proxy_address[256]; /* Proxy ip or domain in NULL terminated string format. */ + uint16_t proxy_port; /* Proxy port: in host byte order. */ +} Tox_Options; + +/* + * Run this function at startup. + * + * Options are some options that can be passed to the Tox instance (see above struct). + * + * If options is NULL, tox_new() will use default settings. + * + * Initializes a tox structure + * return allocated instance of tox on success. + * return NULL on failure. + */ +Tox *tox_new(Tox_Options *options); + +/* Run this before closing shop. + * Free all datastructures. */ +void tox_kill(Tox *tox); + +/* Return the time in milliseconds before tox_do() should be called again + * for optimal performance. + * + * returns time (in ms) before the next tox_do() needs to be run on success. + */ +uint32_t tox_do_interval(Tox *tox); + +/* The main loop that needs to be run in intervals of tox_do_interval() ms. */ +void tox_do(Tox *tox); + +/* SAVING AND LOADING FUNCTIONS: */ + +/* return size of messenger data (for saving). */ +uint32_t tox_size(const Tox *tox); + +/* Save the messenger in data (must be allocated memory of size Messenger_size()). */ +void tox_save(const Tox *tox, uint8_t *data); + +/* Load the messenger from data of size length. + * + * returns 0 on success + * returns -1 on failure + */ +int tox_load(Tox *tox, const uint8_t *data, uint32_t length); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/protocols/Tox/tox/include/toxav.h b/protocols/Tox/tox/include/toxav.h new file mode 100644 index 0000000000..e31c7aad1f --- /dev/null +++ b/protocols/Tox/tox/include/toxav.h @@ -0,0 +1,389 @@ +/** toxav.h + * + * Copyright (C) 2013 Tox project All Rights Reserved. + * + * This file is part of Tox. + * + * Tox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tox 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tox. If not, see . + * + */ + + +#ifndef __TOXAV +#define __TOXAV +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* vpx_image_t */ +#include + +typedef void ( *ToxAVCallback ) ( void *agent, int32_t call_idx, void *arg ); +typedef struct _ToxAv ToxAv; + +#ifndef __TOX_DEFINED__ +#define __TOX_DEFINED__ +typedef struct Tox Tox; +#endif + +#define RTP_PAYLOAD_SIZE 65535 + + +/** + * @brief Callbacks ids that handle the call states. + */ +typedef enum { + /* Requests */ + av_OnInvite, + av_OnStart, + av_OnCancel, + av_OnReject, + av_OnEnd, + + /* Responses */ + av_OnRinging, + av_OnStarting, + av_OnEnding, + + /* Protocol */ + av_OnRequestTimeout, + av_OnPeerTimeout, + av_OnMediaChange +} ToxAvCallbackID; + + +/** + * @brief Call type identifier. + */ +typedef enum { + TypeAudio = 192, + TypeVideo +} ToxAvCallType; + + +typedef enum { + av_CallNonExistant = -1, + av_CallInviting, /* when sending call invite */ + av_CallStarting, /* when getting call invite */ + av_CallActive, + av_CallHold, + av_CallHanged_up +} ToxAvCallState; + +/** + * @brief Error indicators. + */ +typedef enum { + ErrorNone = 0, + ErrorInternal = -1, /* Internal error */ + ErrorAlreadyInCall = -2, /* Already has an active call */ + ErrorNoCall = -3, /* Trying to perform call action while not in a call */ + ErrorInvalidState = -4, /* Trying to perform call action while in invalid state*/ + ErrorNoRtpSession = -5, /* Trying to perform rtp action on invalid session */ + ErrorAudioPacketLost = -6, /* Indicating packet loss */ + ErrorStartingAudioRtp = -7, /* Error in toxav_prepare_transmission() */ + ErrorStartingVideoRtp = -8 , /* Error in toxav_prepare_transmission() */ + ErrorTerminatingAudioRtp = -9, /* Returned in toxav_kill_transmission() */ + ErrorTerminatingVideoRtp = -10, /* Returned in toxav_kill_transmission() */ + ErrorPacketTooLarge = -11, /* Buffer exceeds size while encoding */ + ErrorInvalidCodecState = -12, /* Codec state not initialized */ + +} ToxAvError; + + +/** + * @brief Locally supported capabilities. + */ +typedef enum { + AudioEncoding = 1 << 0, + AudioDecoding = 1 << 1, + VideoEncoding = 1 << 2, + VideoDecoding = 1 << 3 +} ToxAvCapabilities; + + +/** + * @brief Encoding settings. + */ +typedef struct _ToxAvCodecSettings { + ToxAvCallType call_type; + + uint32_t video_bitrate; /* In kbits/s */ + uint16_t max_video_width; /* In px */ + uint16_t max_video_height; /* In px */ + + uint32_t audio_bitrate; /* In bits/s */ + uint16_t audio_frame_duration; /* In ms */ + uint32_t audio_sample_rate; /* In Hz */ + uint32_t audio_channels; +} ToxAvCSettings; + +extern const ToxAvCSettings av_DefaultSettings; +extern const uint32_t av_jbufdc; /* Jitter buffer default capacity */ +extern const uint32_t av_VADd; /* VAD default treshold */ + +/** + * @brief Start new A/V session. There can only be one session at the time. If you register more + * it will result in undefined behaviour. + * + * @param messenger The messenger handle. + * @param userdata The agent handling A/V session (i.e. phone). + * @param video_width Width of video frame. + * @param video_height Height of video frame. + * @return ToxAv* + * @retval NULL On error. + */ +ToxAv *toxav_new(Tox *messenger, int32_t max_calls); + +/** + * @brief Remove A/V session. + * + * @param av Handler. + * @return void + */ +void toxav_kill(ToxAv *av); + +/** + * @brief Register callback for call state. + * + * @param av Handler. + * @param callback The callback + * @param id One of the ToxAvCallbackID values + * @return void + */ +void toxav_register_callstate_callback (ToxAv *av, ToxAVCallback callback, ToxAvCallbackID id, void *userdata); + +/** + * @brief Register callback for recieving audio data + * + * @param av Handler. + * @param callback The callback + * @return void + */ +void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int, void *), + void *user_data); + +/** + * @brief Register callback for recieving video data + * + * @param av Handler. + * @param callback The callback + * @return void + */ +void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *, void *), + void *user_data); + +/** + * @brief Call user. Use its friend_id. + * + * @param av Handler. + * @param user The user. + * @param call_type Call type. + * @param ringing_seconds Ringing timeout. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_call(ToxAv *av, int32_t *call_index, int user, const ToxAvCSettings *csettings, int ringing_seconds); + +/** + * @brief Hangup active call. + * + * @param av Handler. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_hangup(ToxAv *av, int32_t call_index); + +/** + * @brief Answer incomming call. + * + * @param av Handler. + * @param call_type Answer with... + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_answer(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings ); + +/** + * @brief Reject incomming call. + * + * @param av Handler. + * @param reason Optional reason. Set NULL if none. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_reject(ToxAv *av, int32_t call_index, const char *reason); + +/** + * @brief Cancel outgoing request. + * + * @param av Handler. + * @param reason Optional reason. + * @param peer_id peer friend_id + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_cancel(ToxAv *av, int32_t call_index, int peer_id, const char *reason); + +/** + * @brief Notify peer that we are changing call settings + * + * @param av Handler. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_change_settings(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings); + +/** + * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer. + * + * @param av Handler. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_stop_call(ToxAv *av, int32_t call_index); + +/** + * @brief Must be call before any RTP transmission occurs. + * + * @param av Handler. + * @param support_video Is video supported ? 1 : 0 + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_prepare_transmission(ToxAv *av, int32_t call_index, uint32_t jbuf_size, uint32_t VAD_treshold, + int support_video); + +/** + * @brief Call this at the end of the transmission. + * + * @param av Handler. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_kill_transmission(ToxAv *av, int32_t call_index); + +/** + * @brief Encode and send video packet. + * + * @param av Handler. + * @param frame The encoded frame. + * @param frame_size The size of the encoded frame. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int frame_size); + +/** + * @brief Send audio frame. + * + * @param av Handler. + * @param data The audio data encoded with toxav_prepare_audio_frame(). + * @param size Its size in number of bytes. + * @return int + * @retval 0 Success. + * @retval ToxAvError On error. + */ +int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int size); + +/** + * @brief Encode video frame + * + * @param av Handler + * @param dest Where to + * @param dest_max Max size + * @param input What to encode + * @return int + * @retval ToxAvError On error. + * @retval >0 On success + */ +int toxav_prepare_video_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, vpx_image_t *input ); + +/** + * @brief Encode audio frame + * + * @param av Handler + * @param dest dest + * @param dest_max Max dest size + * @param frame The frame + * @param frame_size The frame size + * @return int + * @retval ToxAvError On error. + * @retval >0 On success + */ +int toxav_prepare_audio_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, const int16_t *frame, + int frame_size); + +/** + * @brief Get peer transmission type. It can either be audio or video. + * + * @param av Handler. + * @param peer The peer + * @return int + * @retval ToxAvCallType On success. + * @retval ToxAvError On error. + */ +int toxav_get_peer_csettings ( ToxAv *av, int32_t call_index, int peer, ToxAvCSettings *dest ); + +/** + * @brief Get id of peer participating in conversation + * + * @param av Handler + * @param peer peer index + * @return int + * @retval ToxAvError No peer id + */ +int toxav_get_peer_id ( ToxAv *av, int32_t call_index, int peer ); + +/** + * @brief Get current call state + * + * @param av Handler + * @param call_index What call + * @return int + * @retval ToxAvCallState State id + */ +ToxAvCallState toxav_get_call_state ( ToxAv *av, int32_t call_index ); +/** + * @brief Is certain capability supported + * + * @param av Handler + * @return int + * @retval 1 Yes. + * @retval 0 No. + */ +int toxav_capability_supported ( ToxAv *av, int32_t call_index, ToxAvCapabilities capability ); + + +Tox *toxav_get_tox(ToxAv *av); + +int toxav_has_activity ( ToxAv *av, int32_t call_index, int16_t *PCM, uint16_t frame_size, float ref_energy ); + +#ifdef __cplusplus +} +#endif + +#endif /* __TOXAV */ diff --git a/protocols/Tox/tox/include/toxdns.h b/protocols/Tox/tox/include/toxdns.h new file mode 100644 index 0000000000..a0cc323b43 --- /dev/null +++ b/protocols/Tox/tox/include/toxdns.h @@ -0,0 +1,85 @@ +/* toxdns.h + * + * Tox secure username DNS toxid resolving functions. + * + * Copyright (C) 2014 Tox project All Rights Reserved. + * + * This file is part of Tox. + * + * Tox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tox 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tox. If not, see . + * + */ + +#ifndef TOXDNS_H +#define TOXDNS_H + +#include + +/* How to use this api to make secure tox dns3 requests: + * + * 1. Get the public key of a server that supports tox dns3. + * 2. use tox_dns3_new() to create a new object to create DNS requests + * and handle responses for that server. + * 3. Use tox_generate_dns3_string() to generate a string based on the name we want to query and a request_id + * that must be stored somewhere for when we want to decrypt the response. + * 4. take the string and use it for your DNS request like this: + * _4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc._tox.utox.org + * 5. The TXT in the DNS you receive should look like this: + * v=tox3;id=2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp + * 6. Take the id string and use it with tox_decrypt_dns3_TXT() and the request_id corresponding to the + * request we stored earlier to get the Tox id returned by the DNS server. + */ + +/* Create a new tox_dns3 object for server with server_public_key of size TOX_CLIENT_ID_SIZE. + * + * return Null on failure. + * return pointer object on success. + */ +void *tox_dns3_new(uint8_t *server_public_key); + +/* Destroy the tox dns3 object. + */ +void tox_dns3_kill(void *dns3_object); + +/* Generate a dns3 string of string_max_len used to query the dns server referred to by to + * dns3_object for a tox id registered to user with name of name_len. + * + * the uint32_t pointed by request_id will be set to the request id which must be passed to + * tox_decrypt_dns3_TXT() to correctly decode the response. + * + * This is what the string returned looks like: + * 4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc + * + * returns length of string on sucess. + * returns -1 on failure. + */ +int tox_generate_dns3_string(void *dns3_object, uint8_t *string, uint16_t string_max_len, uint32_t *request_id, + uint8_t *name, uint8_t name_len); + +/* Decode and decrypt the id_record returned of length id_record_len into + * tox_id (needs to be at least TOX_FRIEND_ADDRESS_SIZE). + * + * request_id is the request id given by tox_generate_dns3_string() when creating the request. + * + * the id_record passed to this function should look somewhat like this: + * 2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp + * + * returns -1 on failure. + * returns 0 on success. + * + */ +int tox_decrypt_dns3_TXT(void *dns3_object, uint8_t *tox_id, uint8_t *id_record, uint32_t id_record_len, + uint32_t request_id); + +#endif diff --git a/protocols/Tox/tox/lib/x64/libtox-x64.exp b/protocols/Tox/tox/lib/x64/libtox-x64.exp new file mode 100644 index 0000000000..d322ce16b6 Binary files /dev/null and b/protocols/Tox/tox/lib/x64/libtox-x64.exp differ diff --git a/protocols/Tox/tox/lib/x64/libtox-x64.lib b/protocols/Tox/tox/lib/x64/libtox-x64.lib new file mode 100644 index 0000000000..9be529069c Binary files /dev/null and b/protocols/Tox/tox/lib/x64/libtox-x64.lib differ diff --git a/protocols/Tox/tox/lib/x64/libtox.def b/protocols/Tox/tox/lib/x64/libtox.def new file mode 100644 index 0000000000..f685a57c30 --- /dev/null +++ b/protocols/Tox/tox/lib/x64/libtox.def @@ -0,0 +1,1561 @@ +LIBRARY "libtox" + +EXPORTS + Assoc_add_entry @1 + Assoc_get_close_entries @2 + Assoc_self_client_id_changed @3 + DHT_addfriend @4 + DHT_bootstrap @5 + DHT_bootstrap_from_address @6 + DHT_delfriend @7 + DHT_get_close_list @8 + DHT_get_shared_key_recv @9 + DHT_get_shared_key_sent @10 + DHT_getfriendip @11 + DHT_getnodes @12 + DHT_isconnected @13 + DHT_load @14 + DHT_non_lan_connected @15 + DHT_save @16 + DHT_size @17 + LAN_ip @18 + LANdiscovery_init @19 + U16_to_bytes @20 + U32_to_bytes @21 + VP8_UVSSE @22 + __pth_gpointer_locked @23 + __pthread_clock_nanosleep @24 + __pthread_shallcancel @25 + __xl_f @26 + _celt_autocorr @27 + _celt_lpc @28 + _pthread_cleanup_dest @29 + _pthread_get_state @30 + _pthread_invoke_cancel @31 + _pthread_key_dest @32 + _pthread_rel_time_in_ms @33 + _pthread_set_state @34 + _pthread_setnobreak @35 + _pthread_time_in_ms @36 + _pthread_time_in_ms_from_timespec @37 + _pthread_tryjoin @38 + _sodium_alignedcalloc @39 + accept_crypto_connection @40 + add_ext_header @41 + add_groupchat @42 + add_header @43 + add_tcp_relay @44 + add_tcp_relay_peer @45 + add_to_ping @46 + addr_parse_ip @47 + addr_resolve @48 + addr_resolve_or_parse_ip @49 + addto_lists @50 + alg_quant @51 + alg_unquant @52 + amp2Log2 @53 + anti_collapse @54 + at_startup_ran @55 + av_DefaultSettings @56 + av_VADd @57 + av_jbufdc @58 + bs_list_add @59 + bs_list_find @60 + bs_list_free @61 + bs_list_init @62 + bs_list_remove @63 + bs_list_trim @64 + build_header @65 + bytes_to_U16 @66 + bytes_to_U32 @67 + callback_file_control @68 + callback_file_data @69 + callback_file_sendrequest @70 + callback_friendrequest @71 + callback_groupaction @72 + callback_groupmessage @73 + callback_namelistchange @74 + celt_decode_with_ec @75 + celt_decoder_get_size @76 + celt_decoder_init @77 + celt_encode_with_ec @78 + celt_encoder_get_size @79 + celt_encoder_init @80 + celt_fir @81 + celt_iir @82 + celt_lcg_rand @83 + celt_pitch_xcorr_c @84 + celt_preemphasis @85 + chat_bootstrap @86 + chat_bootstrap_nonlazy @87 + check_control_input @88 + check_fragments_for_errors @89 + check_late_message @90 + closelist_nodes @91 + clt_mdct_backward @92 + clt_mdct_forward @93 + codec_init_session @94 + codec_terminate_session @95 + comb_filter @96 + compute_allocation @97 + compute_band_energies @98 + compute_frame_size @99 + compute_stereo_width @100 + cond_print @101 + cond_print_set @102 + connection_data_handler @103 + connection_lossy_data_handler @104 + connection_status_handler @105 + copy_chatlist @106 + copy_connected_tcp_relays @107 + copy_friendlist @108 + count_chatlist @109 + count_friendlist @110 + create_announce_request @111 + create_data_request @112 + create_onion_packet @113 + create_onion_packet_tcp @114 + create_onion_path @115 + create_queue @116 + create_request @117 + crypto_box @118 + crypto_box_afternm @119 + crypto_box_beforenm @120 + crypto_box_beforenmbytes @121 + crypto_box_boxzerobytes @122 + crypto_box_curve25519xsalsa20poly1305 @123 + crypto_box_curve25519xsalsa20poly1305_afternm @124 + crypto_box_curve25519xsalsa20poly1305_beforenm @125 + crypto_box_curve25519xsalsa20poly1305_keypair @126 + crypto_box_curve25519xsalsa20poly1305_open @127 + crypto_box_curve25519xsalsa20poly1305_open_afternm @128 + crypto_box_curve25519xsalsa20poly1305_seed_keypair @129 + crypto_box_keypair @130 + crypto_box_macbytes @131 + crypto_box_noncebytes @132 + crypto_box_open @133 + crypto_box_open_afternm @134 + crypto_box_primitive @135 + crypto_box_publickeybytes @136 + crypto_box_secretkeybytes @137 + crypto_box_seed_keypair @138 + crypto_box_seedbytes @139 + crypto_box_zerobytes @140 + crypto_cmp @141 + crypto_connection_status @142 + crypto_core_hsalsa20 @143 + crypto_core_salsa20 @144 + crypto_hash_sha256 @145 + crypto_hash_sha256_final @146 + crypto_hash_sha256_init @147 + crypto_hash_sha256_update @148 + crypto_hash_sha512 @149 + crypto_hash_sha512_final @150 + crypto_hash_sha512_init @151 + crypto_hash_sha512_update @152 + crypto_kill @153 + crypto_num_free_sendqueue_slots @154 + crypto_onetimeauth_pick_best_implementation @155 + crypto_onetimeauth_poly1305 @156 + crypto_onetimeauth_poly1305_donna @157 + crypto_onetimeauth_poly1305_donna_final @158 + crypto_onetimeauth_poly1305_donna_implementation @159 + crypto_onetimeauth_poly1305_donna_implementation_name @160 + crypto_onetimeauth_poly1305_donna_init @161 + crypto_onetimeauth_poly1305_donna_update @162 + crypto_onetimeauth_poly1305_donna_verify @163 + crypto_onetimeauth_poly1305_final @164 + crypto_onetimeauth_poly1305_implementation_name @165 + crypto_onetimeauth_poly1305_init @166 + crypto_onetimeauth_poly1305_set_implementation @167 + crypto_onetimeauth_poly1305_update @168 + crypto_onetimeauth_poly1305_verify @169 + crypto_run_interval @170 + crypto_scalarmult_curve25519 @171 + crypto_scalarmult_curve25519_base @172 + crypto_secretbox_xsalsa20poly1305 @173 + crypto_secretbox_xsalsa20poly1305_open @174 + crypto_stream_salsa20 @175 + crypto_stream_salsa20_keybytes @176 + crypto_stream_salsa20_noncebytes @177 + crypto_stream_salsa20_xor @178 + crypto_stream_salsa20_xor_ic @179 + crypto_stream_xsalsa20 @180 + crypto_stream_xsalsa20_xor @181 + crypto_verify_16 @182 + crypto_verify_32 @183 + cryptopacket_registerhandler @184 + current_time_monotonic @185 + custom_lossless_packet_registerhandler @186 + custom_lossy_packet_registerhandler @187 + decode_pulses @188 + decrypt_data @189 + decrypt_data_symmetric @190 + del_groupchat @191 + denormalise_bands @192 + dequeue @193 + do_Assoc @194 + do_DHT @195 + do_TCP_connection @196 + do_TCP_server @197 + do_friends @198 + do_groupchat @199 + do_hardening @200 + do_messenger @201 + do_net_crypto @202 + do_onion_client @203 + do_sema_b_wait_intern @204 + do_to_ping @205 + downmix_float @206 + downmix_int @207 + eMeans @208 + ec_dec_bit_logp @209 + ec_dec_bits @210 + ec_dec_icdf @211 + ec_dec_init @212 + ec_dec_uint @213 + ec_dec_update @214 + ec_decode @215 + ec_decode_bin @216 + ec_enc_bit_logp @217 + ec_enc_bits @218 + ec_enc_done @219 + ec_enc_icdf @220 + ec_enc_init @221 + ec_enc_patch_initial_bits @222 + ec_enc_shrink @223 + ec_enc_uint @224 + ec_encode @225 + ec_encode_bin @226 + ec_laplace_decode @227 + ec_laplace_encode @228 + ec_tell_frac @229 + encode_pulses @230 + encode_size @231 + encrypt_data @232 + encrypt_data_symmetric @233 + encrypt_precompute @234 + energy_VAD @235 + extract_ext_header @236 + extract_header @237 + file_control @238 + file_data @239 + file_dataremaining @240 + file_sendrequest @241 + format_output @242 + frame_size_select @243 + friend_ips @244 + friendreq_init @245 + get_close_nodes @246 + get_connection_dht_key @247 + get_friendlist @248 + get_nospam @249 + get_num_online_friends @250 + get_shared_key @251 + getaddress @252 + getclient_id @253 + getfriend_id @254 + getname @255 + getself_name @256 + group_action_send @257 + group_client_names @258 + group_message_send @259 + group_names @260 + group_newpeer @261 + group_number_peers @262 + group_numpeers @263 + group_peername @264 + group_sendaction @265 + group_sendmessage @266 + haar1 @267 + handle_groupchatpacket @268 + handle_request @269 + host_to_net @270 + hysteresis_decision @271 + id_closest @272 + id_copy @273 + id_equal @274 + increment_nonce @275 + increment_nonce_number @276 + init_audio_decoder @277 + init_audio_encoder @278 + init_caps @279 + init_video_decoder @280 + init_video_encoder @281 + invite_friend @282 + invoke_callback @283 + ip_copy @284 + ip_equal @285 + ip_init @286 + ip_isset @287 + ip_ntoa @288 + ip_pack @289 + ip_reset @290 + ip_unpack @291 + ipport_copy @292 + ipport_equal @293 + ipport_isset @294 + ipport_pack @295 + ipport_unpack @296 + is_timeout @297 + isqrt32 @298 + join_groupchat @299 + kill_Assoc @300 + kill_DHT @301 + kill_TCP_connection @302 + kill_TCP_server @303 + kill_groupchat @304 + kill_messenger @305 + kill_net_crypto @306 + kill_networking @307 + kill_onion @308 + kill_onion_announce @309 + kill_onion_client @310 + kill_ping @311 + kill_sock @312 + load_keys @313 + load_state @314 + m_addfriend @315 + m_addfriend_norequest @316 + m_callback_action @317 + m_callback_connectionstatus @318 + m_callback_connectionstatus_internal_av @319 + m_callback_friendmessage @320 + m_callback_friendrequest @321 + m_callback_group_action @322 + m_callback_group_invite @323 + m_callback_group_message @324 + m_callback_group_namelistchange @325 + m_callback_msi_packet @326 + m_callback_namechange @327 + m_callback_read_receipt @328 + m_callback_statusmessage @329 + m_callback_typingchange @330 + m_callback_userstatus @331 + m_copy_self_statusmessage @332 + m_copy_statusmessage @333 + m_delfriend @334 + m_friend_exists @335 + m_get_friend_connectionstatus @336 + m_get_istyping @337 + m_get_last_online @338 + m_get_name_size @339 + m_get_self_name_size @340 + m_get_self_statusmessage_size @341 + m_get_self_userstatus @342 + m_get_statusmessage_size @343 + m_get_userstatus @344 + m_group_peername @345 + m_msi_packet @346 + m_sendaction @347 + m_sendaction_withid @348 + m_sendmessage @349 + m_sendmessage_withid @350 + m_set_sends_receipts @351 + m_set_statusmessage @352 + m_set_userstatus @353 + m_set_usertyping @354 + messenger_load @355 + messenger_run_interval @356 + messenger_save @357 + messenger_size @358 + mlp_process @359 + msg_parse @360 + msi_answer @361 + msi_cancel @362 + msi_change_csettings @363 + msi_hangup @364 + msi_init_session @365 + msi_invite @366 + msi_msg_get_csettings @367 + msi_msg_set_callid @368 + msi_msg_set_csettings @369 + msi_msg_set_reason @370 + msi_new_message @371 + msi_register_callback @372 + msi_reject @373 + msi_stopcall @374 + msi_terminate_session @375 + mutex_print @376 + mutex_print_set @377 + net @378 + networking_at_startup @379 + networking_poll @380 + networking_registerhandler @381 + new_Assoc @382 + new_Assoc_default @383 + new_DHT @384 + new_TCP_connection @385 + new_TCP_server @386 + new_connection_handler @387 + new_crypto_connection @388 + new_filesender @389 + new_groupchat @390 + new_keys @391 + new_messenger @392 + new_net_crypto @393 + new_networking @394 + new_nonce @395 + new_onion @396 + new_onion_announce @397 + new_onion_client @398 + new_ping @399 + new_symmetric_key @400 + normalise_bands @401 + onion_add_path_node @402 + onion_addfriend @403 + onion_backup_nodes @404 + onion_delfriend @405 + onion_friend_num @406 + onion_getfriend_DHT_pubkey @407 + onion_getfriendip @408 + onion_isconnected @409 + onion_response_handler @410 + onion_send_1 @411 + onion_set_friend_DHT_pubkey @412 + onion_set_friend_online @413 + oniondata_registerhandler @414 + oob_data_handler @415 + optimize_framesize @416 + opus_custom_decoder_ctl @417 + opus_custom_encoder_ctl @418 + opus_custom_mode_create @419 + opus_decode @420 + opus_decode_float @421 + opus_decode_native @422 + opus_decoder_create @423 + opus_decoder_ctl @424 + opus_decoder_destroy @425 + opus_decoder_get_nb_samples @426 + opus_decoder_get_size @427 + opus_decoder_init @428 + opus_encode @429 + opus_encode_float @430 + opus_encode_native @431 + opus_encoder_create @432 + opus_encoder_ctl @433 + opus_encoder_destroy @434 + opus_encoder_get_size @435 + opus_encoder_init @436 + opus_fft @437 + opus_get_version_string @438 + opus_ifft @439 + opus_multistream_packet_pad @440 + opus_multistream_packet_unpad @441 + opus_packet_get_bandwidth @442 + opus_packet_get_nb_channels @443 + opus_packet_get_nb_frames @444 + opus_packet_get_nb_samples @445 + opus_packet_get_samples_per_frame @446 + opus_packet_pad @447 + opus_packet_parse @448 + opus_packet_parse_impl @449 + opus_packet_unpad @450 + opus_pcm_soft_clip @451 + opus_repacketizer_cat @452 + opus_repacketizer_create @453 + opus_repacketizer_destroy @454 + opus_repacketizer_get_nb_frames @455 + opus_repacketizer_get_size @456 + opus_repacketizer_init @457 + opus_repacketizer_out @458 + opus_repacketizer_out_range @459 + opus_repacketizer_out_range_impl @460 + opus_strerror @461 + pack_nodes @462 + parse_recv @463 + parse_send @464 + patch_transient_decision @465 + ping_array_add @466 + ping_array_check @467 + ping_array_free_all @468 + ping_array_init @469 + pitch_downsample @470 + pitch_search @471 + pthread_attr_destroy @472 + pthread_attr_getdetachstate @473 + pthread_attr_getinheritsched @474 + pthread_attr_getscope @475 + pthread_attr_getstackaddr @476 + pthread_attr_getstacksize @477 + pthread_attr_init @478 + pthread_attr_setdetachstate @479 + pthread_attr_setinheritsched @480 + pthread_attr_setscope @481 + pthread_attr_setstackaddr @482 + pthread_attr_setstacksize @483 + pthread_cancel @484 + pthread_cond_broadcast @485 + pthread_cond_destroy @486 + pthread_cond_init @487 + pthread_cond_signal @488 + pthread_cond_timedwait @489 + pthread_cond_timedwait_relative @490 + pthread_cond_wait @491 + pthread_condattr_destroy @492 + pthread_condattr_getclock @493 + pthread_condattr_getpshared @494 + pthread_condattr_init @495 + pthread_condattr_setclock @496 + pthread_condattr_setpshared @497 + pthread_create @498 + pthread_create_wrapper @499 + pthread_delay_np @500 + pthread_delay_np_ms @501 + pthread_detach @502 + pthread_equal @503 + pthread_exit @504 + pthread_get_concurrency @505 + pthread_getclean @506 + pthread_getconcurrency @507 + pthread_getevent @508 + pthread_gethandle @509 + pthread_getspecific @510 + pthread_join @511 + pthread_key_create @512 + pthread_key_delete @513 + pthread_kill @514 + pthread_mutex_destroy @515 + pthread_mutex_init @516 + pthread_mutex_lock @517 + pthread_mutex_timedlock @518 + pthread_mutex_trylock @519 + pthread_mutex_unlock @520 + pthread_mutexattr_destroy @521 + pthread_mutexattr_getprioceiling @522 + pthread_mutexattr_getprotocol @523 + pthread_mutexattr_getpshared @524 + pthread_mutexattr_gettype @525 + pthread_mutexattr_init @526 + pthread_mutexattr_setprioceiling @527 + pthread_mutexattr_setprotocol @528 + pthread_mutexattr_setpshared @529 + pthread_mutexattr_settype @530 + pthread_num_processors_np @531 + pthread_once @532 + pthread_rwlock_destroy @533 + pthread_rwlock_init @534 + pthread_rwlock_rdlock @535 + pthread_rwlock_timedrdlock @536 + pthread_rwlock_timedwrlock @537 + pthread_rwlock_tryrdlock @538 + pthread_rwlock_trywrlock @539 + pthread_rwlock_unlock @540 + pthread_rwlock_wrlock @541 + pthread_rwlockattr_destroy @542 + pthread_rwlockattr_getpshared @543 + pthread_rwlockattr_init @544 + pthread_rwlockattr_setpshared @545 + pthread_self @546 + pthread_set_concurrency @547 + pthread_set_num_processors_np @548 + pthread_setcancelstate @549 + pthread_setcanceltype @550 + pthread_setconcurrency @551 + pthread_setspecific @552 + pthread_spin_destroy @553 + pthread_spin_init @554 + pthread_spin_lock @555 + pthread_spin_trylock @556 + pthread_spin_unlock @557 + pthread_testcancel @558 + pthread_timechange_handler_np @559 + pthread_tls_init @560 + public_key_valid @561 + quant_all_bands @562 + quant_coarse_energy @563 + quant_energy_finalise @564 + quant_fine_energy @565 + queue @566 + random_64b @567 + random_int @568 + random_node @569 + random_nodes_path @570 + random_nonce @571 + randombytes @572 + randombytes_buf @573 + randombytes_close @574 + randombytes_implementation_name @575 + randombytes_random @576 + randombytes_set_implementation @577 + randombytes_stir @578 + randombytes_sysrandom @579 + randombytes_sysrandom_buf @580 + randombytes_sysrandom_close @581 + randombytes_sysrandom_implementation @582 + randombytes_sysrandom_implementation_name @583 + randombytes_sysrandom_stir @584 + randombytes_sysrandom_uniform @585 + randombytes_uniform @586 + read_TCP_length @587 + read_TCP_packet @588 + read_packet_TCP_secure_connection @589 + realloc_friendlist @590 + reconfigure_video_encoder_bitrate @591 + reconfigure_video_encoder_resolution @592 + recv_tcp_relay_handler @593 + remove_doubling @594 + remove_request_received @595 + renormalise_vector @596 + resampling_factor @597 + route_packet @598 + route_tofriend @599 + routing_data_handler @600 + routing_response_handler @601 + routing_status_handler @602 + rtp_free_msg @603 + rtp_handle_packet @604 + rtp_init_session @605 + rtp_new_message @606 + rtp_send_msg @607 + rtp_terminate_session @608 + run_analysis @609 + rwl_print @610 + rwl_print_set @611 + save_keys @612 + send_LANdiscovery @613 + send_announce_request @614 + send_custom_lossless_packet @615 + send_custom_lossy_packet @616 + send_data @617 + send_data_request @618 + send_disconnect_request @619 + send_friendrequest @620 + send_lossy_cryptpacket @621 + send_onion_data @622 + send_onion_packet @623 + send_onion_request @624 + send_onion_response @625 + send_oob_packet @626 + send_ping_request @627 + send_reponse @628 + send_routing_request @629 + send_tcp_onion_request @630 + sendpacket @631 + set_callback_handle_recv_1 @632 + set_connection_dht_public_key @633 + set_direct_ip_port @634 + set_filter_function @635 + set_nick @636 + set_nospam @637 + set_socket_dualstack @638 + set_socket_nonblock @639 + set_socket_nosigpipe @640 + set_tcp_connection_number @641 + setfriendname @642 + setname @643 + silk_A2NLSF @644 + silk_A2NLSF_FLP @645 + silk_CB_lags_stage2 @646 + silk_CB_lags_stage2_10_ms @647 + silk_CB_lags_stage3 @648 + silk_CB_lags_stage3_10_ms @649 + silk_CNG @650 + silk_CNG_Reset @651 + silk_Decode @652 + silk_Encode @653 + silk_Get_Decoder_Size @654 + silk_Get_Encoder_Size @655 + silk_HP_variable_cutoff @656 + silk_InitDecoder @657 + silk_InitEncoder @658 + silk_LBRR_flags_iCDF_ptr @659 + silk_LPC_analysis_filter @660 + silk_LPC_analysis_filter_FLP @661 + silk_LPC_inverse_pred_gain @662 + silk_LPC_inverse_pred_gain_FLP @663 + silk_LP_variable_cutoff @664 + silk_LSFCosTab_FIX_Q12 @665 + silk_LTPScales_table_Q14 @666 + silk_LTP_analysis_filter_FLP @667 + silk_LTP_gain_BITS_Q5_ptrs @668 + silk_LTP_gain_iCDF_ptrs @669 + silk_LTP_gain_middle_avg_RD_Q14 @670 + silk_LTP_per_index_iCDF @671 + silk_LTP_scale_ctrl_FLP @672 + silk_LTP_vq_gain_ptrs_Q7 @673 + silk_LTP_vq_ptrs_Q7 @674 + silk_LTP_vq_sizes @675 + silk_LTPscale_iCDF @676 + silk_Lag_range_stage3 @677 + silk_Lag_range_stage3_10_ms @678 + silk_NLSF2A @679 + silk_NLSF2A_FLP @680 + silk_NLSF_CB_NB_MB @681 + silk_NLSF_CB_WB @682 + silk_NLSF_EXT_iCDF @683 + silk_NLSF_VQ @684 + silk_NLSF_VQ_weights_laroia @685 + silk_NLSF_decode @686 + silk_NLSF_del_dec_quant @687 + silk_NLSF_encode @688 + silk_NLSF_interpolation_factor_iCDF @689 + silk_NLSF_stabilize @690 + silk_NLSF_unpack @691 + silk_NSQ @692 + silk_NSQ_del_dec @693 + silk_NSQ_wrapper_FLP @694 + silk_PLC @695 + silk_PLC_Reset @696 + silk_PLC_glue_frames @697 + silk_Quantization_Offsets_Q10 @698 + silk_Resampler_1_2_COEFS @699 + silk_Resampler_1_3_COEFS @700 + silk_Resampler_1_4_COEFS @701 + silk_Resampler_1_6_COEFS @702 + silk_Resampler_2_3_COEFS @703 + silk_Resampler_2_3_COEFS_LQ @704 + silk_Resampler_3_4_COEFS @705 + silk_SNR_table_Q1 @706 + silk_TargetRate_table_MB @707 + silk_TargetRate_table_NB @708 + silk_TargetRate_table_WB @709 + silk_Transition_LP_A_Q28 @710 + silk_Transition_LP_B_Q28 @711 + silk_VAD_GetSA_Q8 @712 + silk_VAD_Init @713 + silk_VQ_WMat_EC @714 + silk_ana_filt_bank_1 @715 + silk_apply_sine_window_FLP @716 + silk_autocorrelation_FLP @717 + silk_biquad_alt @718 + silk_burg_modified_FLP @719 + silk_bwexpander @720 + silk_bwexpander_32 @721 + silk_bwexpander_FLP @722 + silk_control_SNR @723 + silk_control_audio_bandwidth @724 + silk_control_encoder @725 + silk_corrMatrix_FLP @726 + silk_corrVector_FLP @727 + silk_decode_core @728 + silk_decode_frame @729 + silk_decode_indices @730 + silk_decode_parameters @731 + silk_decode_pitch @732 + silk_decode_pulses @733 + silk_decode_signs @734 + silk_decoder_set_fs @735 + silk_delta_gain_iCDF @736 + silk_encode_do_VAD_FLP @737 + silk_encode_frame_FLP @738 + silk_encode_indices @739 + silk_encode_pulses @740 + silk_encode_signs @741 + silk_energy_FLP @742 + silk_find_LPC_FLP @743 + silk_find_LTP_FLP @744 + silk_find_pitch_lags_FLP @745 + silk_find_pred_coefs_FLP @746 + silk_gain_iCDF @747 + silk_gains_ID @748 + silk_gains_dequant @749 + silk_gains_quant @750 + silk_init_decoder @751 + silk_init_encoder @752 + silk_inner_prod_aligned_scale @753 + silk_inner_product_FLP @754 + silk_insertion_sort_decreasing_FLP @755 + silk_insertion_sort_increasing @756 + silk_insertion_sort_increasing_all_values_int16 @757 + silk_interpolate @758 + silk_k2a_FLP @759 + silk_levinsondurbin_FLP @760 + silk_lin2log @761 + silk_log2lin @762 + silk_lsb_iCDF @763 + silk_max_pulses_table @764 + silk_nb_cbk_searchs_stage3 @765 + silk_noise_shape_analysis_FLP @766 + silk_pitch_analysis_core_FLP @767 + silk_pitch_contour_10_ms_NB_iCDF @768 + silk_pitch_contour_10_ms_iCDF @769 + silk_pitch_contour_NB_iCDF @770 + silk_pitch_contour_iCDF @771 + silk_pitch_delta_iCDF @772 + silk_pitch_lag_iCDF @773 + silk_prefilter_FLP @774 + silk_process_NLSFs @775 + silk_process_NLSFs_FLP @776 + silk_process_gains_FLP @777 + silk_pulses_per_block_BITS_Q5 @778 + silk_pulses_per_block_iCDF @779 + silk_quant_LTP_gains @780 + silk_quant_LTP_gains_FLP @781 + silk_rate_levels_BITS_Q5 @782 + silk_rate_levels_iCDF @783 + silk_regularize_correlations_FLP @784 + silk_resampler @785 + silk_resampler_down2 @786 + silk_resampler_down2_3 @787 + silk_resampler_frac_FIR_12 @788 + silk_resampler_init @789 + silk_resampler_private_AR2 @790 + silk_resampler_private_IIR_FIR @791 + silk_resampler_private_down_FIR @792 + silk_resampler_private_up2_HQ @793 + silk_resampler_private_up2_HQ_wrapper @794 + silk_residual_energy_FLP @795 + silk_residual_energy_covar_FLP @796 + silk_scale_copy_vector_FLP @797 + silk_scale_vector_FLP @798 + silk_schur_FLP @799 + silk_shell_code_table0 @800 + silk_shell_code_table1 @801 + silk_shell_code_table2 @802 + silk_shell_code_table3 @803 + silk_shell_code_table_offsets @804 + silk_shell_decoder @805 + silk_shell_encoder @806 + silk_sigm_Q15 @807 + silk_sign_iCDF @808 + silk_solve_LDL_FLP @809 + silk_stereo_LR_to_MS @810 + silk_stereo_MS_to_LR @811 + silk_stereo_decode_mid_only @812 + silk_stereo_decode_pred @813 + silk_stereo_encode_mid_only @814 + silk_stereo_encode_pred @815 + silk_stereo_find_predictor @816 + silk_stereo_only_code_mid_iCDF @817 + silk_stereo_pred_joint_iCDF @818 + silk_stereo_pred_quant_Q13 @819 + silk_stereo_quant_pred @820 + silk_sum_sqr_shift @821 + silk_type_offset_VAD_iCDF @822 + silk_type_offset_no_VAD_iCDF @823 + silk_uniform3_iCDF @824 + silk_uniform4_iCDF @825 + silk_uniform5_iCDF @826 + silk_uniform6_iCDF @827 + silk_uniform8_iCDF @828 + silk_warped_autocorrelation_FLP @829 + sock_valid @830 + sodium_bin2hex @831 + sodium_hex2bin @832 + sodium_init @833 + sodium_memcmp @834 + sodium_memzero @835 + sodium_mlock @836 + sodium_munlock @837 + sodium_runtime_get_cpu_features @838 + sodium_runtime_has_neon @839 + sodium_runtime_has_sse2 @840 + sodium_runtime_has_sse3 @841 + spreading_decision @842 + stereo_itheta @843 + tcp_onion_response_handler @844 + terminate_queue @845 + tf_select_table @846 + thread_print @847 + thread_print_set @848 + to_host_family @849 + to_net_family @850 + tonality_analysis @851 + tonality_get_info @852 + tox_add_friend @853 + tox_add_friend_norequest @854 + tox_add_groupchat @855 + tox_bootstrap_from_address @856 + tox_callback_connection_status @857 + tox_callback_file_control @858 + tox_callback_file_data @859 + tox_callback_file_send_request @860 + tox_callback_friend_action @861 + tox_callback_friend_message @862 + tox_callback_friend_request @863 + tox_callback_group_action @864 + tox_callback_group_invite @865 + tox_callback_group_message @866 + tox_callback_group_namelist_change @867 + tox_callback_name_change @868 + tox_callback_read_receipt @869 + tox_callback_status_message @870 + tox_callback_typing_change @871 + tox_callback_user_status @872 + tox_count_chatlist @873 + tox_count_friendlist @874 + tox_decrypt_dns3_TXT @875 + tox_del_friend @876 + tox_del_groupchat @877 + tox_dns3_kill @878 + tox_dns3_new @879 + tox_do @880 + tox_do_interval @881 + tox_file_data_remaining @882 + tox_file_data_size @883 + tox_file_send_control @884 + tox_file_send_data @885 + tox_friend_exists @886 + tox_generate_dns3_string @887 + tox_get_address @888 + tox_get_chatlist @889 + tox_get_client_id @890 + tox_get_friend_connection_status @891 + tox_get_friend_number @892 + tox_get_friendlist @893 + tox_get_is_typing @894 + tox_get_keys @895 + tox_get_last_online @896 + tox_get_name @897 + tox_get_name_size @898 + tox_get_nospam @899 + tox_get_num_online_friends @900 + tox_get_self_name @901 + tox_get_self_name_size @902 + tox_get_self_status_message @903 + tox_get_self_status_message_size @904 + tox_get_self_user_status @905 + tox_get_status_message @906 + tox_get_status_message_size @907 + tox_get_user_status @908 + tox_group_action_send @909 + tox_group_get_names @910 + tox_group_message_send @911 + tox_group_number_peers @912 + tox_group_peername @913 + tox_invite_friend @914 + tox_isconnected @915 + tox_join_groupchat @916 + tox_kill @917 + tox_load @918 + tox_new @919 + tox_new_file_sender @920 + tox_save @921 + tox_send_action @922 + tox_send_action_withid @923 + tox_send_message @924 + tox_send_message_withid @925 + tox_set_name @926 + tox_set_nospam @927 + tox_set_status_message @928 + tox_set_user_is_typing @929 + tox_set_user_status @930 + tox_size @931 + toxav_answer @932 + toxav_call @933 + toxav_cancel @934 + toxav_capability_supported @935 + toxav_change_settings @936 + toxav_get_call_state @937 + toxav_get_peer_csettings @938 + toxav_get_peer_id @939 + toxav_get_tox @940 + toxav_handle_packet @941 + toxav_hangup @942 + toxav_has_activity @943 + toxav_kill @944 + toxav_kill_transmission @945 + toxav_new @946 + toxav_prepare_audio_frame @947 + toxav_prepare_transmission @948 + toxav_prepare_video_frame @949 + toxav_register_audio_recv_callback @950 + toxav_register_callstate_callback @951 + toxav_register_video_recv_callback @952 + toxav_reject @953 + toxav_send_audio @954 + toxav_send_video @955 + toxav_stop_call @956 + unix_time @957 + unix_time_update @958 + unpack_nodes @959 + unquant_coarse_energy @960 + unquant_energy_finalise @961 + unquant_fine_energy @962 + vp8_ac2quant @963 + vp8_ac_uv_quant @964 + vp8_ac_yquant @965 + vp8_activity_masking @966 + vp8_adjust_key_frame_context @967 + vp8_alloc_compressor_data @968 + vp8_alloc_frame_buffers @969 + vp8_auto_select_speed @970 + vp8_bilinear_filters_x86_4 @971 + vp8_bilinear_filters_x86_8 @972 + vp8_bilinear_predict16x16 @973 + vp8_bilinear_predict16x16_mmx @974 + vp8_bilinear_predict16x16_sse2 @975 + vp8_bilinear_predict16x16_ssse3 @976 + vp8_bilinear_predict4x4_mmx @977 + vp8_bilinear_predict8x4_mmx @978 + vp8_bilinear_predict8x8 @979 + vp8_bilinear_predict8x8_mmx @980 + vp8_bilinear_predict8x8_sse2 @981 + vp8_bilinear_predict8x8_ssse3 @982 + vp8_bits_per_mb @983 + vp8_blend_b_c @984 + vp8_blend_mb_inner_c @985 + vp8_blend_mb_outer_c @986 + vp8_block2above @987 + vp8_block2left @988 + vp8_block_error_c @989 + vp8_block_error_mmx @990 + vp8_block_error_xmm @991 + vp8_bmode_encodings @992 + vp8_bmode_prob @993 + vp8_bmode_tree @994 + vp8_build_block_doffsets @995 + vp8_build_block_offsets @996 + vp8_build_component_cost_table @997 + vp8_build_inter16x16_predictors_mb @998 + vp8_build_inter16x16_predictors_mbuv @999 + vp8_build_inter16x16_predictors_mby @1000 + vp8_build_inter4x4_predictors_mbuv @1001 + vp8_build_inter_predictors_b @1002 + vp8_build_inter_predictors_mb @1003 + vp8_build_intra_predictors_mbuv_s @1004 + vp8_build_intra_predictors_mbuv_s_sse2 @1005 + vp8_build_intra_predictors_mbuv_s_ssse3 @1006 + vp8_build_intra_predictors_mby_s @1007 + vp8_build_intra_predictors_mby_s_sse2 @1008 + vp8_build_intra_predictors_mby_s_ssse3 @1009 + vp8_cal_sad @1010 + vp8_calc_ref_frame_costs @1011 + vp8_calc_ss_err @1012 + vp8_change_config @1013 + vp8_clear_system_state_c @1014 + vp8_coef_bands @1015 + vp8_coef_encodings @1016 + vp8_coef_tree @1017 + vp8_coef_update_probs @1018 + vp8_compute_frame_size_bounds @1019 + vp8_convert_rfct_to_prob @1020 + vp8_copy32xn @1021 + vp8_copy32xn_c @1022 + vp8_copy32xn_sse2 @1023 + vp8_copy32xn_sse3 @1024 + vp8_copy_and_extend_frame @1025 + vp8_copy_and_extend_frame_with_rect @1026 + vp8_copy_mem16x16_c @1027 + vp8_copy_mem16x16_mmx @1028 + vp8_copy_mem16x16_sse2 @1029 + vp8_copy_mem8x4_c @1030 + vp8_copy_mem8x4_mmx @1031 + vp8_copy_mem8x8_c @1032 + vp8_copy_mem8x8_mmx @1033 + vp8_cost_mv_ref @1034 + vp8_cost_tokens @1035 + vp8_cost_tokens2 @1036 + vp8_create_common @1037 + vp8_create_compressor @1038 + vp8_create_decoder_instances @1039 + vp8_ctf_maps @1040 + vp8_dc2quant @1041 + vp8_dc_only_idct_add_c @1042 + vp8_dc_only_idct_add_mmx @1043 + vp8_dc_quant @1044 + vp8_dc_uv_quant @1045 + vp8_dct_value_cost_ptr @1046 + vp8_dct_value_tokens_ptr @1047 + vp8_de_alloc_frame_buffers @1048 + vp8_deblock @1049 + vp8_decode_frame @1050 + vp8_decode_mb_tokens @1051 + vp8_decode_mode_mvs @1052 + vp8_decoder_create_threads @1053 + vp8_decoder_remove_threads @1054 + vp8_default_bmode_probs @1055 + vp8_default_coef_probs @1056 + vp8_default_inv_zig_zag @1057 + vp8_default_mv_context @1058 + vp8_default_zig_zag1d @1059 + vp8_default_zig_zag_mask @1060 + vp8_denoiser_allocate @1061 + vp8_denoiser_denoise_mb @1062 + vp8_denoiser_filter_c @1063 + vp8_denoiser_filter_sse2 @1064 + vp8_denoiser_free @1065 + vp8_dequant_idct_add_mmx @1066 + vp8_dequant_idct_add_uv_block_mmx @1067 + vp8_dequant_idct_add_uv_block_sse2 @1068 + vp8_dequant_idct_add_y_block_mmx @1069 + vp8_dequant_idct_add_y_block_sse2 @1070 + vp8_dequantize_b_impl_mmx @1071 + vp8_dequantize_b_mmx @1072 + vp8_diamond_search_sad @1073 + vp8_diamond_search_sad_c @1074 + vp8_diamond_search_sadx4 @1075 + vp8_encode_frame @1076 + vp8_encode_inter16x16 @1077 + vp8_encode_inter16x16y @1078 + vp8_encode_intra @1079 + vp8_encode_intra16x16mbuv @1080 + vp8_encode_intra16x16mby @1081 + vp8_encode_intra4x4block @1082 + vp8_encode_intra4x4mby @1083 + vp8_encode_motion_vector @1084 + vp8_encode_value @1085 + vp8_end_first_pass @1086 + vp8_end_second_pass @1087 + vp8_estimate_entropy_savings @1088 + vp8_extend_mb_row @1089 + vp8_extra_bits @1090 + vp8_fast_quantize_b @1091 + vp8_fast_quantize_b_c @1092 + vp8_fast_quantize_b_pair_c @1093 + vp8_fast_quantize_b_sse2 @1094 + vp8_fast_quantize_b_ssse3 @1095 + vp8_filter_block1d16_h6_only_sse2 @1096 + vp8_filter_block1d16_h6_sse2 @1097 + vp8_filter_block1d16_h6_ssse3 @1098 + vp8_filter_block1d16_v6_sse2 @1099 + vp8_filter_block1d16_v6_ssse3 @1100 + vp8_filter_block1d4_h6_ssse3 @1101 + vp8_filter_block1d4_v6_ssse3 @1102 + vp8_filter_block1d8_h6_only_sse2 @1103 + vp8_filter_block1d8_h6_sse2 @1104 + vp8_filter_block1d8_h6_ssse3 @1105 + vp8_filter_block1d8_v6_only_sse2 @1106 + vp8_filter_block1d8_v6_sse2 @1107 + vp8_filter_block1d8_v6_ssse3 @1108 + vp8_filter_block1d_h6_mmx @1109 + vp8_filter_block1dc_v6_mmx @1110 + vp8_filter_block2d_bil4x4_var_mmx @1111 + vp8_filter_block2d_bil_var_mmx @1112 + vp8_filter_block2d_bil_var_sse2 @1113 + vp8_filter_block2d_bil_var_ssse3 @1114 + vp8_filter_by_weight16x16_c @1115 + vp8_filter_by_weight16x16_sse2 @1116 + vp8_filter_by_weight4x4_c @1117 + vp8_filter_by_weight8x8_c @1118 + vp8_filter_by_weight8x8_sse2 @1119 + vp8_find_best_half_pixel_step @1120 + vp8_find_best_sub_pixel_step @1121 + vp8_find_best_sub_pixel_step_iteratively @1122 + vp8_find_near_mvs @1123 + vp8_find_near_mvs_bias @1124 + vp8_first_pass @1125 + vp8_fix_contexts @1126 + vp8_full_search_sad @1127 + vp8_full_search_sad_c @1128 + vp8_full_search_sadx3 @1129 + vp8_full_search_sadx8 @1130 + vp8_gaussian @1131 + vp8_get16x16var_sse2 @1132 + vp8_get4x4sse_cs_c @1133 + vp8_get4x4sse_cs_mmx @1134 + vp8_get4x4var_mmx @1135 + vp8_get8x8var_mmx @1136 + vp8_get8x8var_sse2 @1137 + vp8_get_compressed_data @1138 + vp8_get_inter_mbpred_error @1139 + vp8_get_mb_ss_mmx @1140 + vp8_get_mb_ss_sse2 @1141 + vp8_get_preview_raw_frame @1142 + vp8_get_quantizer @1143 + vp8_get_reference @1144 + vp8_gf_boost_qadjustment @1145 + vp8_half_horiz_variance16x_h_sse2 @1146 + vp8_half_horiz_variance8x_h_sse2 @1147 + vp8_half_horiz_vert_variance16x_h_sse2 @1148 + vp8_half_horiz_vert_variance8x_h_sse2 @1149 + vp8_half_vert_variance16x_h_sse2 @1150 + vp8_half_vert_variance8x_h_sse2 @1151 + vp8_hex_search @1152 + vp8_horizontal_line_2_1_scale_c @1153 + vp8_horizontal_line_5_3_scale_c @1154 + vp8_horizontal_line_5_4_scale_c @1155 + vp8_idct_dequant_0_2x_sse2 @1156 + vp8_idct_dequant_dc_0_2x_sse2 @1157 + vp8_idct_dequant_dc_full_2x_sse2 @1158 + vp8_idct_dequant_full_2x_sse2 @1159 + vp8_init3smotion_compensation @1160 + vp8_init_dsmotion_compensation @1161 + vp8_init_first_pass @1162 + vp8_init_mbmode_probs @1163 + vp8_init_mode_costs @1164 + vp8_init_second_pass @1165 + vp8_initialize_rd_consts @1166 + vp8_intra4x4_predict_c @1167 + vp8_intra_pred_uv_dc128_mmx @1168 + vp8_intra_pred_uv_dc_mmx2 @1169 + vp8_intra_pred_uv_dcleft_mmx2 @1170 + vp8_intra_pred_uv_dctop_mmx2 @1171 + vp8_intra_pred_uv_ho_mmx2 @1172 + vp8_intra_pred_uv_ho_ssse3 @1173 + vp8_intra_pred_uv_tm_sse2 @1174 + vp8_intra_pred_uv_tm_ssse3 @1175 + vp8_intra_pred_uv_ve_mmx @1176 + vp8_intra_pred_y_dc128_sse2 @1177 + vp8_intra_pred_y_dc_sse2 @1178 + vp8_intra_pred_y_dcleft_sse2 @1179 + vp8_intra_pred_y_dctop_sse2 @1180 + vp8_intra_pred_y_ho_sse2 @1181 + vp8_intra_pred_y_tm_sse2 @1182 + vp8_intra_pred_y_tm_ssse3 @1183 + vp8_intra_pred_y_ve_sse2 @1184 + vp8_kf_bmode_prob @1185 + vp8_kf_uv_mode_prob @1186 + vp8_kf_ymode_encodings @1187 + vp8_kf_ymode_prob @1188 + vp8_kf_ymode_tree @1189 + vp8_lookahead_depth @1190 + vp8_lookahead_destroy @1191 + vp8_lookahead_init @1192 + vp8_lookahead_peek @1193 + vp8_lookahead_pop @1194 + vp8_lookahead_push @1195 + vp8_loop_filter_bh_mmx @1196 + vp8_loop_filter_bh_sse2 @1197 + vp8_loop_filter_bh_y_sse2 @1198 + vp8_loop_filter_bhs_mmx @1199 + vp8_loop_filter_bhs_sse2 @1200 + vp8_loop_filter_bv_mmx @1201 + vp8_loop_filter_bv_sse2 @1202 + vp8_loop_filter_bv_y_sse2 @1203 + vp8_loop_filter_bvs_mmx @1204 + vp8_loop_filter_bvs_sse2 @1205 + vp8_loop_filter_frame @1206 + vp8_loop_filter_frame_init @1207 + vp8_loop_filter_frame_yonly @1208 + vp8_loop_filter_horizontal_edge_mmx @1209 + vp8_loop_filter_horizontal_edge_uv_sse2 @1210 + vp8_loop_filter_init @1211 + vp8_loop_filter_mbh_mmx @1212 + vp8_loop_filter_mbh_sse2 @1213 + vp8_loop_filter_mbv_mmx @1214 + vp8_loop_filter_mbv_sse2 @1215 + vp8_loop_filter_partial_frame @1216 + vp8_loop_filter_row_normal @1217 + vp8_loop_filter_row_simple @1218 + vp8_loop_filter_simple_horizontal_edge_mmx @1219 + vp8_loop_filter_simple_horizontal_edge_sse2 @1220 + vp8_loop_filter_simple_vertical_edge_mmx @1221 + vp8_loop_filter_simple_vertical_edge_sse2 @1222 + vp8_loop_filter_update_sharpness @1223 + vp8_loop_filter_vertical_edge_mmx @1224 + vp8_loop_filter_vertical_edge_uv_sse2 @1225 + vp8_loopfilter_frame @1226 + vp8_machine_specific_config @1227 + vp8_mb_feature_data_bits @1228 + vp8_mb_init_dequantizer @1229 + vp8_mbblock_error_c @1230 + vp8_mbblock_error_mmx_impl @1231 + vp8_mbblock_error_xmm @1232 + vp8_mbblock_error_xmm_impl @1233 + vp8_mbloop_filter_horizontal_edge_mmx @1234 + vp8_mbloop_filter_horizontal_edge_sse2 @1235 + vp8_mbloop_filter_horizontal_edge_uv_sse2 @1236 + vp8_mbloop_filter_vertical_edge_mmx @1237 + vp8_mbloop_filter_vertical_edge_sse2 @1238 + vp8_mbloop_filter_vertical_edge_uv_sse2 @1239 + vp8_mbpost_proc_across_ip_c @1240 + vp8_mbpost_proc_across_ip_xmm @1241 + vp8_mbpost_proc_down_c @1242 + vp8_mbpost_proc_down_xmm @1243 + vp8_mbsplit_count @1244 + vp8_mbsplit_encodings @1245 + vp8_mbsplit_offset @1246 + vp8_mbsplit_probs @1247 + vp8_mbsplit_tree @1248 + vp8_mbsplits @1249 + vp8_mbuverror_c @1250 + vp8_mbuverror_mmx_impl @1251 + vp8_mbuverror_xmm @1252 + vp8_mbuverror_xmm_impl @1253 + vp8_mode_contexts @1254 + vp8_mode_order @1255 + vp8_mse16x16_wmt @1256 + vp8_mse2psnr @1257 + vp8_multiframe_quality_enhance @1258 + vp8_mv_bit_cost @1259 + vp8_mv_cont @1260 + vp8_mv_pred @1261 + vp8_mv_ref_encoding_array @1262 + vp8_mv_ref_probs @1263 + vp8_mv_ref_tree @1264 + vp8_mv_update_probs @1265 + vp8_new_framerate @1266 + vp8_norm @1267 + vp8_optimize_mbuv @1268 + vp8_optimize_mby @1269 + vp8_pack_bitstream @1270 + vp8_pack_tokens_c @1271 + vp8_pick_frame_size @1272 + vp8_pick_inter_mode @1273 + vp8_pick_intra_mode @1274 + vp8_plane_add_noise_c @1275 + vp8_plane_add_noise_wmt @1276 + vp8_post_proc_down_and_across_mb_row_c @1277 + vp8_post_proc_down_and_across_mb_row_sse2 @1278 + vp8_post_proc_frame @1279 + vp8_prev_token_class @1280 + vp8_prob_cost @1281 + vp8_quantize_mb_c @1282 + vp8_quantize_mbuv_c @1283 + vp8_quantize_mby_c @1284 + vp8_rd_pick_inter_mode @1285 + vp8_rd_pick_intra_mode @1286 + vp8_receive_raw_frame @1287 + vp8_ref_frame_order @1288 + vp8_refining_search_sad @1289 + vp8_refining_search_sad_c @1290 + vp8_refining_search_sadx4 @1291 + vp8_regular_quantize_b_c @1292 + vp8_regular_quantize_b_pair_c @1293 + vp8_regular_quantize_b_sse2 @1294 + vp8_regulate_q @1295 + vp8_remove_common @1296 + vp8_remove_compressor @1297 + vp8_remove_decoder_instances @1298 + vp8_reset_mb_tokens_context @1299 + vp8_restore_coding_context @1300 + vp8_reverse_trans @1301 + vp8_rtcd @1302 + vp8_rv @1303 + vp8_sad16x16 @1304 + vp8_sad16x16_c @1305 + vp8_sad16x16_sse3 @1306 + vp8_sad16x16_wmt @1307 + vp8_sad16x16x3 @1308 + vp8_sad16x16x3_c @1309 + vp8_sad16x16x3_sse3 @1310 + vp8_sad16x16x3_ssse3 @1311 + vp8_sad16x16x4d @1312 + vp8_sad16x16x4d_c @1313 + vp8_sad16x16x4d_sse3 @1314 + vp8_sad16x16x8 @1315 + vp8_sad16x16x8_c @1316 + vp8_sad16x16x8_sse4 @1317 + vp8_sad16x8_c @1318 + vp8_sad16x8_wmt @1319 + vp8_sad16x8x3 @1320 + vp8_sad16x8x3_c @1321 + vp8_sad16x8x3_sse3 @1322 + vp8_sad16x8x3_ssse3 @1323 + vp8_sad16x8x4d @1324 + vp8_sad16x8x4d_c @1325 + vp8_sad16x8x4d_sse3 @1326 + vp8_sad16x8x8 @1327 + vp8_sad16x8x8_c @1328 + vp8_sad16x8x8_sse4 @1329 + vp8_sad4x4_c @1330 + vp8_sad4x4_wmt @1331 + vp8_sad4x4x3 @1332 + vp8_sad4x4x3_c @1333 + vp8_sad4x4x3_sse3 @1334 + vp8_sad4x4x4d @1335 + vp8_sad4x4x4d_c @1336 + vp8_sad4x4x4d_sse3 @1337 + vp8_sad4x4x8 @1338 + vp8_sad4x4x8_c @1339 + vp8_sad4x4x8_sse4 @1340 + vp8_sad8x16_c @1341 + vp8_sad8x16_wmt @1342 + vp8_sad8x16x3 @1343 + vp8_sad8x16x3_c @1344 + vp8_sad8x16x3_sse3 @1345 + vp8_sad8x16x4d @1346 + vp8_sad8x16x4d_c @1347 + vp8_sad8x16x4d_sse3 @1348 + vp8_sad8x16x8 @1349 + vp8_sad8x16x8_c @1350 + vp8_sad8x16x8_sse4 @1351 + vp8_sad8x8_c @1352 + vp8_sad8x8_wmt @1353 + vp8_sad8x8x3 @1354 + vp8_sad8x8x3_c @1355 + vp8_sad8x8x3_sse3 @1356 + vp8_sad8x8x4d @1357 + vp8_sad8x8x4d_c @1358 + vp8_sad8x8x4d_sse3 @1359 + vp8_sad8x8x8 @1360 + vp8_sad8x8x8_c @1361 + vp8_sad8x8x8_sse4 @1362 + vp8_save_coding_context @1363 + vp8_second_pass @1364 + vp8_set_active_map @1365 + vp8_set_internal_size @1366 + vp8_set_mbmode_and_mvs @1367 + vp8_set_quantizer @1368 + vp8_set_reference @1369 + vp8_set_roimap @1370 + vp8_set_speed_features @1371 + vp8_setup_block_dptrs @1372 + vp8_setup_block_ptrs @1373 + vp8_setup_intra_recon @1374 + vp8_setup_intra_recon_top_line @1375 + vp8_setup_key_frame @1376 + vp8_setup_version @1377 + vp8_short_fdct4x4_sse2 @1378 + vp8_short_fdct8x4_sse2 @1379 + vp8_short_idct4x4llm_c @1380 + vp8_short_idct4x4llm_mmx @1381 + vp8_short_inv_walsh4x4_1_c @1382 + vp8_short_inv_walsh4x4_c @1383 + vp8_short_inv_walsh4x4_sse2 @1384 + vp8_short_walsh4x4_sse2 @1385 + vp8_six_tap_mmx @1386 + vp8_sixtap_predict16x16 @1387 + vp8_sixtap_predict16x16_mmx @1388 + vp8_sixtap_predict16x16_sse2 @1389 + vp8_sixtap_predict16x16_ssse3 @1390 + vp8_sixtap_predict4x4 @1391 + vp8_sixtap_predict4x4_mmx @1392 + vp8_sixtap_predict4x4_ssse3 @1393 + vp8_sixtap_predict8x4 @1394 + vp8_sixtap_predict8x4_mmx @1395 + vp8_sixtap_predict8x4_sse2 @1396 + vp8_sixtap_predict8x4_ssse3 @1397 + vp8_sixtap_predict8x8 @1398 + vp8_sixtap_predict8x8_mmx @1399 + vp8_sixtap_predict8x8_sse2 @1400 + vp8_sixtap_predict8x8_ssse3 @1401 + vp8_skip_fractional_mv_step @1402 + vp8_small_mvencodings @1403 + vp8_small_mvtree @1404 + vp8_start_encode @1405 + vp8_stop_encode @1406 + vp8_strict_quantize_b_c @1407 + vp8_stuff_mb @1408 + vp8_sub_mv_ref_encoding_array @1409 + vp8_sub_mv_ref_prob2 @1410 + vp8_sub_mv_ref_prob3 @1411 + vp8_sub_mv_ref_tree @1412 + vp8_sub_pixel_mse16x16_wmt @1413 + vp8_sub_pixel_variance16x16 @1414 + vp8_sub_pixel_variance16x16_ssse3 @1415 + vp8_sub_pixel_variance16x16_wmt @1416 + vp8_sub_pixel_variance16x8 @1417 + vp8_sub_pixel_variance16x8_ssse3 @1418 + vp8_sub_pixel_variance16x8_wmt @1419 + vp8_sub_pixel_variance4x4_wmt @1420 + vp8_sub_pixel_variance8x16_wmt @1421 + vp8_sub_pixel_variance8x8_wmt @1422 + vp8_subtract_b_c @1423 + vp8_subtract_b_sse2 @1424 + vp8_subtract_b_sse2_impl @1425 + vp8_subtract_mbuv_c @1426 + vp8_subtract_mbuv_sse2 @1427 + vp8_subtract_mby_c @1428 + vp8_subtract_mby_sse2 @1429 + vp8_swap_yv12_buffer @1430 + vp8_temporal_filter_apply_c @1431 + vp8_temporal_filter_apply_sse2 @1432 + vp8_temporal_filter_prepare_c @1433 + vp8_tokenize_mb @1434 + vp8_tokens_from_tree @1435 + vp8_tokens_from_tree_offset @1436 + vp8_transform_intra_mby @1437 + vp8_transform_mbuv @1438 + vp8_tree_probs_from_distribution @1439 + vp8_unpack_block1d16_h6_sse2 @1440 + vp8_update_coef_probs @1441 + vp8_update_entropy @1442 + vp8_update_gf_useage_maps @1443 + vp8_update_rate_correction_factors @1444 + vp8_update_reference @1445 + vp8_update_zbin_extra @1446 + vp8_use_as_reference @1447 + vp8_uv_mode_encodings @1448 + vp8_uv_mode_prob @1449 + vp8_uv_mode_tree @1450 + vp8_variance16x16_wmt @1451 + vp8_variance16x8_wmt @1452 + vp8_variance4x4_wmt @1453 + vp8_variance8x16_wmt @1454 + vp8_variance8x8_wmt @1455 + vp8_variance_and_sad_16x16_sse2 @1456 + vp8_variance_halfpixvar16x16_h_wmt @1457 + vp8_variance_halfpixvar16x16_hv_wmt @1458 + vp8_variance_halfpixvar16x16_v_wmt @1459 + vp8_vertical_band_2_1_scale_c @1460 + vp8_vertical_band_2_1_scale_i_c @1461 + vp8_vertical_band_5_3_scale_c @1462 + vp8_vertical_band_5_4_scale_c @1463 + vp8_write_mvprobs @1464 + vp8_ymode_encodings @1465 + vp8_ymode_prob @1466 + vp8_ymode_tree @1467 + vp8_yv12_alloc_frame_buffer @1468 + vp8_yv12_copy_frame_c @1469 + vp8_yv12_copy_partial_frame_c @1470 + vp8_yv12_de_alloc_frame_buffer @1471 + vp8_yv12_extend_frame_borders_c @1472 + vp8_yv12_realloc_frame_buffer @1473 + vp8cx_base_skip_false_prob @1474 + vp8cx_create_encoder_threads @1475 + vp8cx_encode_inter_macroblock @1476 + vp8cx_encode_intra_macroblock @1477 + vp8cx_frame_init_quantizer @1478 + vp8cx_init_de_quantizer @1479 + vp8cx_init_mbrthread_data @1480 + vp8cx_init_quantizer @1481 + vp8cx_initialize_me_consts @1482 + vp8cx_mb_init_quantizer @1483 + vp8cx_pick_filter_level @1484 + vp8cx_pick_filter_level_fast @1485 + vp8cx_remove_encoder_threads @1486 + vp8cx_set_alt_lf_level @1487 + vp8dx_bool_decoder_fill @1488 + vp8dx_get_raw_frame @1489 + vp8dx_get_reference @1490 + vp8dx_receive_compressed_data @1491 + vp8dx_references_buffer @1492 + vp8dx_set_reference @1493 + vp8dx_start_decode @1494 + vp8mt_alloc_temp_buffers @1495 + vp8mt_de_alloc_temp_buffers @1496 + vp8mt_decode_mb_rows @1497 + vp9_alloc_frame_buffer @1498 + vp9_extend_frame_borders_c @1499 + vp9_extend_frame_inner_borders_c @1500 + vp9_free_frame_buffer @1501 + vp9_realloc_frame_buffer @1502 + vpx_calloc @1503 + vpx_codec_control_ @1504 + vpx_codec_dec_init_ver @1505 + vpx_codec_decode @1506 + vpx_codec_destroy @1507 + vpx_codec_enc_config_default @1508 + vpx_codec_enc_config_set @1509 + vpx_codec_enc_init_multi_ver @1510 + vpx_codec_enc_init_ver @1511 + vpx_codec_encode @1512 + vpx_codec_err_to_string @1513 + vpx_codec_error @1514 + vpx_codec_error_detail @1515 + vpx_codec_get_caps @1516 + vpx_codec_get_cx_data @1517 + vpx_codec_get_frame @1518 + vpx_codec_get_global_headers @1519 + vpx_codec_get_mem_map @1520 + vpx_codec_get_preview_frame @1521 + vpx_codec_get_stream_info @1522 + vpx_codec_iface_name @1523 + vpx_codec_peek_stream_info @1524 + vpx_codec_pkt_list_add @1525 + vpx_codec_pkt_list_get @1526 + vpx_codec_register_put_frame_cb @1527 + vpx_codec_register_put_slice_cb @1528 + vpx_codec_set_cx_data_buf @1529 + vpx_codec_set_mem_map @1530 + vpx_codec_version @1531 + vpx_codec_version_extra_str @1532 + vpx_codec_version_str @1533 + vpx_codec_vp8_cx @1534 + vpx_codec_vp8_cx_algo @1535 + vpx_codec_vp8_dx @1536 + vpx_codec_vp8_dx_algo @1537 + vpx_free @1538 + vpx_malloc @1539 + vpx_mem_get_version @1540 + vpx_mem_set_functions @1541 + vpx_mem_set_heap_size @1542 + vpx_mem_unset_functions @1543 + vpx_memalign @1544 + vpx_memcpy @1545 + vpx_memmove @1546 + vpx_memset @1547 + vpx_mmap_alloc @1548 + vpx_mmap_dtor @1549 + vpx_realloc @1550 + vpx_reset_mmx_state @1551 + vpx_scale_frame @1552 + vpx_scale_rtcd @1553 + vpx_validate_mmaps @1554 + vpx_winx64_fldcw @1555 + vpx_winx64_fstcw @1556 + vpx_yv12_copy_y_c @1557 + write_cryptpacket @1558 diff --git a/protocols/Tox/tox/lib/x86/libtox.def b/protocols/Tox/tox/lib/x86/libtox.def new file mode 100644 index 0000000000..cca6b10ff0 --- /dev/null +++ b/protocols/Tox/tox/lib/x86/libtox.def @@ -0,0 +1,1709 @@ +LIBRARY "libtox" + +EXPORTS + Assoc_add_entry @1 + Assoc_get_close_entries @2 + Assoc_self_client_id_changed @3 + DHT_addfriend @4 + DHT_bootstrap @5 + DHT_bootstrap_from_address @6 + DHT_delfriend @7 + DHT_get_close_list @8 + DHT_get_shared_key_recv @9 + DHT_get_shared_key_sent @10 + DHT_getfriendip @11 + DHT_getnodes @12 + DHT_isconnected @13 + DHT_load @14 + DHT_non_lan_connected @15 + DHT_save @16 + DHT_size @17 + LAN_ip @18 + LANdiscovery_init @19 + U16_to_bytes @20 + U32_to_bytes @21 + VP8_UVSSE @22 + __pth_gpointer_locked @23 + __pthread_clock_nanosleep @24 + __pthread_shallcancel @25 + __xl_f @26 + _celt_autocorr @27 + _celt_lpc @28 + _pthread_cleanup_dest @29 + _pthread_get_state @30 + _pthread_invoke_cancel @31 + _pthread_key_dest @32 + _pthread_rel_time_in_ms @33 + _pthread_set_state @34 + _pthread_setnobreak @35 + _pthread_time_in_ms @36 + _pthread_time_in_ms_from_timespec @37 + _pthread_tryjoin @38 + _sodium_alignedcalloc @39 + accept_crypto_connection @40 + add_ext_header @41 + add_groupchat @42 + add_header @43 + add_tcp_relay @44 + add_tcp_relay_peer @45 + add_to_ping @46 + addr_parse_ip @47 + addr_resolve @48 + addr_resolve_or_parse_ip @49 + addto_lists @50 + alg_quant @51 + alg_unquant @52 + amp2Log2 @53 + anti_collapse @54 + at_startup_ran @55 + av_DefaultSettings @56 + av_VADd @57 + av_jbufdc @58 + bs_list_add @59 + bs_list_find @60 + bs_list_free @61 + bs_list_init @62 + bs_list_remove @63 + bs_list_trim @64 + build_header @65 + bytes_to_U16 @66 + bytes_to_U32 @67 + callback_file_control @68 + callback_file_data @69 + callback_file_sendrequest @70 + callback_friendrequest @71 + callback_groupaction @72 + callback_groupmessage @73 + callback_namelistchange @74 + celt_decode_with_ec @75 + celt_decoder_get_size @76 + celt_decoder_init @77 + celt_encode_with_ec @78 + celt_encoder_get_size @79 + celt_encoder_init @80 + celt_fir @81 + celt_iir @82 + celt_lcg_rand @83 + celt_pitch_xcorr_c @84 + celt_preemphasis @85 + chat_bootstrap @86 + chat_bootstrap_nonlazy @87 + check_control_input @88 + check_fragments_for_errors @89 + check_late_message @90 + closelist_nodes @91 + clt_mdct_backward @92 + clt_mdct_forward @93 + codec_init_session @94 + codec_terminate_session @95 + comb_filter @96 + compute_allocation @97 + compute_band_energies @98 + compute_frame_size @99 + compute_stereo_width @100 + cond_print @101 + cond_print_set @102 + connection_data_handler @103 + connection_lossy_data_handler @104 + connection_status_handler @105 + copy_chatlist @106 + copy_connected_tcp_relays @107 + copy_friendlist @108 + count_chatlist @109 + count_friendlist @110 + create_announce_request @111 + create_data_request @112 + create_onion_packet @113 + create_onion_packet_tcp @114 + create_onion_path @115 + create_queue @116 + create_request @117 + crypto_box @118 + crypto_box_afternm @119 + crypto_box_beforenm @120 + crypto_box_beforenmbytes @121 + crypto_box_boxzerobytes @122 + crypto_box_curve25519xsalsa20poly1305 @123 + crypto_box_curve25519xsalsa20poly1305_afternm @124 + crypto_box_curve25519xsalsa20poly1305_beforenm @125 + crypto_box_curve25519xsalsa20poly1305_keypair @126 + crypto_box_curve25519xsalsa20poly1305_open @127 + crypto_box_curve25519xsalsa20poly1305_open_afternm @128 + crypto_box_curve25519xsalsa20poly1305_seed_keypair @129 + crypto_box_keypair @130 + crypto_box_macbytes @131 + crypto_box_noncebytes @132 + crypto_box_open @133 + crypto_box_open_afternm @134 + crypto_box_primitive @135 + crypto_box_publickeybytes @136 + crypto_box_secretkeybytes @137 + crypto_box_seed_keypair @138 + crypto_box_seedbytes @139 + crypto_box_zerobytes @140 + crypto_cmp @141 + crypto_connection_status @142 + crypto_core_hsalsa20 @143 + crypto_core_salsa20 @144 + crypto_hash_sha256 @145 + crypto_hash_sha256_final @146 + crypto_hash_sha256_init @147 + crypto_hash_sha256_update @148 + crypto_hash_sha512 @149 + crypto_hash_sha512_final @150 + crypto_hash_sha512_init @151 + crypto_hash_sha512_update @152 + crypto_kill @153 + crypto_num_free_sendqueue_slots @154 + crypto_onetimeauth_pick_best_implementation @155 + crypto_onetimeauth_poly1305 @156 + crypto_onetimeauth_poly1305_donna @157 + crypto_onetimeauth_poly1305_donna_final @158 + crypto_onetimeauth_poly1305_donna_implementation @159 + crypto_onetimeauth_poly1305_donna_implementation_name @160 + crypto_onetimeauth_poly1305_donna_init @161 + crypto_onetimeauth_poly1305_donna_update @162 + crypto_onetimeauth_poly1305_donna_verify @163 + crypto_onetimeauth_poly1305_final @164 + crypto_onetimeauth_poly1305_implementation_name @165 + crypto_onetimeauth_poly1305_init @166 + crypto_onetimeauth_poly1305_set_implementation @167 + crypto_onetimeauth_poly1305_update @168 + crypto_onetimeauth_poly1305_verify @169 + crypto_run_interval @170 + crypto_scalarmult_curve25519 @171 + crypto_scalarmult_curve25519_base @172 + crypto_scalarmult_curve25519_ref10_fe_0 @173 + crypto_scalarmult_curve25519_ref10_fe_1 @174 + crypto_scalarmult_curve25519_ref10_fe_add @175 + crypto_scalarmult_curve25519_ref10_fe_copy @176 + crypto_scalarmult_curve25519_ref10_fe_cswap @177 + crypto_scalarmult_curve25519_ref10_fe_frombytes @178 + crypto_scalarmult_curve25519_ref10_fe_invert @179 + crypto_scalarmult_curve25519_ref10_fe_mul @180 + crypto_scalarmult_curve25519_ref10_fe_mul121666 @181 + crypto_scalarmult_curve25519_ref10_fe_sq @182 + crypto_scalarmult_curve25519_ref10_fe_sub @183 + crypto_scalarmult_curve25519_ref10_fe_tobytes @184 + crypto_secretbox_xsalsa20poly1305 @185 + crypto_secretbox_xsalsa20poly1305_open @186 + crypto_stream_salsa20 @187 + crypto_stream_salsa20_keybytes @188 + crypto_stream_salsa20_noncebytes @189 + crypto_stream_salsa20_xor @190 + crypto_stream_salsa20_xor_ic @191 + crypto_stream_xsalsa20 @192 + crypto_stream_xsalsa20_xor @193 + crypto_verify_16 @194 + crypto_verify_32 @195 + cryptopacket_registerhandler @196 + current_time_monotonic @197 + custom_lossless_packet_registerhandler @198 + custom_lossy_packet_registerhandler @199 + decode_pulses @200 + decrypt_data @201 + decrypt_data_symmetric @202 + del_groupchat @203 + denormalise_bands @204 + dequeue @205 + do_Assoc @206 + do_DHT @207 + do_TCP_connection @208 + do_TCP_server @209 + do_friends @210 + do_groupchat @211 + do_hardening @212 + do_messenger @213 + do_net_crypto @214 + do_onion_client @215 + do_sema_b_wait_intern @216 + do_to_ping @217 + downmix_float @218 + downmix_int @219 + eMeans @220 + ec_dec_bit_logp @221 + ec_dec_bits @222 + ec_dec_icdf @223 + ec_dec_init @224 + ec_dec_uint @225 + ec_dec_update @226 + ec_decode @227 + ec_decode_bin @228 + ec_enc_bit_logp @229 + ec_enc_bits @230 + ec_enc_done @231 + ec_enc_icdf @232 + ec_enc_init @233 + ec_enc_patch_initial_bits @234 + ec_enc_shrink @235 + ec_enc_uint @236 + ec_encode @237 + ec_encode_bin @238 + ec_laplace_decode @239 + ec_laplace_encode @240 + ec_tell_frac @241 + encode_pulses @242 + encode_size @243 + encrypt_data @244 + encrypt_data_symmetric @245 + encrypt_precompute @246 + energy_VAD @247 + extract_ext_header @248 + extract_header @249 + file_control @250 + file_data @251 + file_dataremaining @252 + file_sendrequest @253 + format_output @254 + frame_size_select @255 + friend_ips @256 + friendreq_init @257 + get_close_nodes @258 + get_connection_dht_key @259 + get_friendlist @260 + get_nospam @261 + get_num_online_friends @262 + get_shared_key @263 + getaddress @264 + getclient_id @265 + getfriend_id @266 + getname @267 + getself_name @268 + group_action_send @269 + group_client_names @270 + group_message_send @271 + group_names @272 + group_newpeer @273 + group_number_peers @274 + group_numpeers @275 + group_peername @276 + group_sendaction @277 + group_sendmessage @278 + haar1 @279 + handle_groupchatpacket @280 + handle_request @281 + host_to_net @282 + hysteresis_decision @283 + id_closest @284 + id_copy @285 + id_equal @286 + increment_nonce @287 + increment_nonce_number @288 + init_audio_decoder @289 + init_audio_encoder @290 + init_caps @291 + init_video_decoder @292 + init_video_encoder @293 + invite_friend @294 + invoke_callback @295 + ip_copy @296 + ip_equal @297 + ip_init @298 + ip_isset @299 + ip_ntoa @300 + ip_pack @301 + ip_reset @302 + ip_unpack @303 + ipport_copy @304 + ipport_equal @305 + ipport_isset @306 + ipport_pack @307 + ipport_unpack @308 + is_timeout @309 + isqrt32 @310 + join_groupchat @311 + kill_Assoc @312 + kill_DHT @313 + kill_TCP_connection @314 + kill_TCP_server @315 + kill_groupchat @316 + kill_messenger @317 + kill_net_crypto @318 + kill_networking @319 + kill_onion @320 + kill_onion_announce @321 + kill_onion_client @322 + kill_ping @323 + kill_sock @324 + load_keys @325 + load_state @326 + m_addfriend @327 + m_addfriend_norequest @328 + m_callback_action @329 + m_callback_connectionstatus @330 + m_callback_connectionstatus_internal_av @331 + m_callback_friendmessage @332 + m_callback_friendrequest @333 + m_callback_group_action @334 + m_callback_group_invite @335 + m_callback_group_message @336 + m_callback_group_namelistchange @337 + m_callback_msi_packet @338 + m_callback_namechange @339 + m_callback_read_receipt @340 + m_callback_statusmessage @341 + m_callback_typingchange @342 + m_callback_userstatus @343 + m_copy_self_statusmessage @344 + m_copy_statusmessage @345 + m_delfriend @346 + m_friend_exists @347 + m_get_friend_connectionstatus @348 + m_get_istyping @349 + m_get_last_online @350 + m_get_name_size @351 + m_get_self_name_size @352 + m_get_self_statusmessage_size @353 + m_get_self_userstatus @354 + m_get_statusmessage_size @355 + m_get_userstatus @356 + m_group_peername @357 + m_msi_packet @358 + m_sendaction @359 + m_sendaction_withid @360 + m_sendmessage @361 + m_sendmessage_withid @362 + m_set_sends_receipts @363 + m_set_statusmessage @364 + m_set_userstatus @365 + m_set_usertyping @366 + messenger_load @367 + messenger_run_interval @368 + messenger_save @369 + messenger_size @370 + mlp_process @371 + msg_parse @372 + msi_answer @373 + msi_cancel @374 + msi_change_csettings @375 + msi_hangup @376 + msi_init_session @377 + msi_invite @378 + msi_msg_get_csettings @379 + msi_msg_set_callid @380 + msi_msg_set_csettings @381 + msi_msg_set_reason @382 + msi_new_message @383 + msi_register_callback @384 + msi_reject @385 + msi_stopcall @386 + msi_terminate_session @387 + mutex_print @388 + mutex_print_set @389 + net @390 + networking_at_startup @391 + networking_poll @392 + networking_registerhandler @393 + new_Assoc @394 + new_Assoc_default @395 + new_DHT @396 + new_TCP_connection @397 + new_TCP_server @398 + new_connection_handler @399 + new_crypto_connection @400 + new_filesender @401 + new_groupchat @402 + new_keys @403 + new_messenger @404 + new_net_crypto @405 + new_networking @406 + new_nonce @407 + new_onion @408 + new_onion_announce @409 + new_onion_client @410 + new_ping @411 + new_symmetric_key @412 + normalise_bands @413 + onion_add_path_node @414 + onion_addfriend @415 + onion_backup_nodes @416 + onion_delfriend @417 + onion_friend_num @418 + onion_getfriend_DHT_pubkey @419 + onion_getfriendip @420 + onion_isconnected @421 + onion_response_handler @422 + onion_send_1 @423 + onion_set_friend_DHT_pubkey @424 + onion_set_friend_online @425 + oniondata_registerhandler @426 + oob_data_handler @427 + optimize_framesize @428 + opus_custom_decoder_ctl @429 + opus_custom_encoder_ctl @430 + opus_custom_mode_create @431 + opus_decode @432 + opus_decode_float @433 + opus_decode_native @434 + opus_decoder_create @435 + opus_decoder_ctl @436 + opus_decoder_destroy @437 + opus_decoder_get_nb_samples @438 + opus_decoder_get_size @439 + opus_decoder_init @440 + opus_encode @441 + opus_encode_float @442 + opus_encode_native @443 + opus_encoder_create @444 + opus_encoder_ctl @445 + opus_encoder_destroy @446 + opus_encoder_get_size @447 + opus_encoder_init @448 + opus_fft @449 + opus_get_version_string @450 + opus_ifft @451 + opus_multistream_packet_pad @452 + opus_multistream_packet_unpad @453 + opus_packet_get_bandwidth @454 + opus_packet_get_nb_channels @455 + opus_packet_get_nb_frames @456 + opus_packet_get_nb_samples @457 + opus_packet_get_samples_per_frame @458 + opus_packet_pad @459 + opus_packet_parse @460 + opus_packet_parse_impl @461 + opus_packet_unpad @462 + opus_pcm_soft_clip @463 + opus_repacketizer_cat @464 + opus_repacketizer_create @465 + opus_repacketizer_destroy @466 + opus_repacketizer_get_nb_frames @467 + opus_repacketizer_get_size @468 + opus_repacketizer_init @469 + opus_repacketizer_out @470 + opus_repacketizer_out_range @471 + opus_repacketizer_out_range_impl @472 + opus_strerror @473 + pack_nodes @474 + parse_recv @475 + parse_send @476 + patch_transient_decision @477 + ping_array_add @478 + ping_array_check @479 + ping_array_free_all @480 + ping_array_init @481 + pitch_downsample @482 + pitch_search @483 + pthread_attr_destroy @484 + pthread_attr_getdetachstate @485 + pthread_attr_getinheritsched @486 + pthread_attr_getscope @487 + pthread_attr_getstackaddr @488 + pthread_attr_getstacksize @489 + pthread_attr_init @490 + pthread_attr_setdetachstate @491 + pthread_attr_setinheritsched @492 + pthread_attr_setscope @493 + pthread_attr_setstackaddr @494 + pthread_attr_setstacksize @495 + pthread_cancel @496 + pthread_cond_broadcast @497 + pthread_cond_destroy @498 + pthread_cond_init @499 + pthread_cond_signal @500 + pthread_cond_timedwait @501 + pthread_cond_timedwait_relative @502 + pthread_cond_wait @503 + pthread_condattr_destroy @504 + pthread_condattr_getclock @505 + pthread_condattr_getpshared @506 + pthread_condattr_init @507 + pthread_condattr_setclock @508 + pthread_condattr_setpshared @509 + pthread_create @510 + pthread_create_wrapper @511 + pthread_delay_np @512 + pthread_delay_np_ms @513 + pthread_detach @514 + pthread_equal @515 + pthread_exit @516 + pthread_get_concurrency @517 + pthread_getclean @518 + pthread_getconcurrency @519 + pthread_getevent @520 + pthread_gethandle @521 + pthread_getspecific @522 + pthread_join @523 + pthread_key_create @524 + pthread_key_delete @525 + pthread_kill @526 + pthread_mutex_destroy @527 + pthread_mutex_init @528 + pthread_mutex_lock @529 + pthread_mutex_timedlock @530 + pthread_mutex_trylock @531 + pthread_mutex_unlock @532 + pthread_mutexattr_destroy @533 + pthread_mutexattr_getprioceiling @534 + pthread_mutexattr_getprotocol @535 + pthread_mutexattr_getpshared @536 + pthread_mutexattr_gettype @537 + pthread_mutexattr_init @538 + pthread_mutexattr_setprioceiling @539 + pthread_mutexattr_setprotocol @540 + pthread_mutexattr_setpshared @541 + pthread_mutexattr_settype @542 + pthread_num_processors_np @543 + pthread_once @544 + pthread_rwlock_destroy @545 + pthread_rwlock_init @546 + pthread_rwlock_rdlock @547 + pthread_rwlock_timedrdlock @548 + pthread_rwlock_timedwrlock @549 + pthread_rwlock_tryrdlock @550 + pthread_rwlock_trywrlock @551 + pthread_rwlock_unlock @552 + pthread_rwlock_wrlock @553 + pthread_rwlockattr_destroy @554 + pthread_rwlockattr_getpshared @555 + pthread_rwlockattr_init @556 + pthread_rwlockattr_setpshared @557 + pthread_self @558 + pthread_set_concurrency @559 + pthread_set_num_processors_np @560 + pthread_setcancelstate @561 + pthread_setcanceltype @562 + pthread_setconcurrency @563 + pthread_setspecific @564 + pthread_spin_destroy @565 + pthread_spin_init @566 + pthread_spin_lock @567 + pthread_spin_trylock @568 + pthread_spin_unlock @569 + pthread_testcancel @570 + pthread_timechange_handler_np @571 + pthread_tls_init @572 + public_key_valid @573 + quant_all_bands @574 + quant_coarse_energy @575 + quant_energy_finalise @576 + quant_fine_energy @577 + queue @578 + random_64b @579 + random_int @580 + random_node @581 + random_nodes_path @582 + random_nonce @583 + randombytes @584 + randombytes_buf @585 + randombytes_close @586 + randombytes_implementation_name @587 + randombytes_random @588 + randombytes_set_implementation @589 + randombytes_stir @590 + randombytes_sysrandom @591 + randombytes_sysrandom_buf @592 + randombytes_sysrandom_close @593 + randombytes_sysrandom_implementation @594 + randombytes_sysrandom_implementation_name @595 + randombytes_sysrandom_stir @596 + randombytes_sysrandom_uniform @597 + randombytes_uniform @598 + read_TCP_length @599 + read_TCP_packet @600 + read_packet_TCP_secure_connection @601 + realloc_friendlist @602 + reconfigure_video_encoder_bitrate @603 + reconfigure_video_encoder_resolution @604 + recv_tcp_relay_handler @605 + remove_doubling @606 + remove_request_received @607 + renormalise_vector @608 + resampling_factor @609 + route_packet @610 + route_tofriend @611 + routing_data_handler @612 + routing_response_handler @613 + routing_status_handler @614 + rtp_free_msg @615 + rtp_handle_packet @616 + rtp_init_session @617 + rtp_new_message @618 + rtp_send_msg @619 + rtp_terminate_session @620 + run_analysis @621 + rwl_print @622 + rwl_print_set @623 + save_keys @624 + send_LANdiscovery @625 + send_announce_request @626 + send_custom_lossless_packet @627 + send_custom_lossy_packet @628 + send_data @629 + send_data_request @630 + send_disconnect_request @631 + send_friendrequest @632 + send_lossy_cryptpacket @633 + send_onion_data @634 + send_onion_packet @635 + send_onion_request @636 + send_onion_response @637 + send_oob_packet @638 + send_ping_request @639 + send_reponse @640 + send_routing_request @641 + send_tcp_onion_request @642 + sendpacket @643 + set_callback_handle_recv_1 @644 + set_connection_dht_public_key @645 + set_direct_ip_port @646 + set_filter_function @647 + set_nick @648 + set_nospam @649 + set_socket_dualstack @650 + set_socket_nonblock @651 + set_socket_nosigpipe @652 + set_tcp_connection_number @653 + setfriendname @654 + setname @655 + silk_A2NLSF @656 + silk_A2NLSF_FLP @657 + silk_CB_lags_stage2 @658 + silk_CB_lags_stage2_10_ms @659 + silk_CB_lags_stage3 @660 + silk_CB_lags_stage3_10_ms @661 + silk_CNG @662 + silk_CNG_Reset @663 + silk_Decode @664 + silk_Encode @665 + silk_Get_Decoder_Size @666 + silk_Get_Encoder_Size @667 + silk_HP_variable_cutoff @668 + silk_InitDecoder @669 + silk_InitEncoder @670 + silk_LBRR_flags_iCDF_ptr @671 + silk_LPC_analysis_filter @672 + silk_LPC_analysis_filter_FLP @673 + silk_LPC_inverse_pred_gain @674 + silk_LPC_inverse_pred_gain_FLP @675 + silk_LP_variable_cutoff @676 + silk_LSFCosTab_FIX_Q12 @677 + silk_LTPScales_table_Q14 @678 + silk_LTP_analysis_filter_FLP @679 + silk_LTP_gain_BITS_Q5_ptrs @680 + silk_LTP_gain_iCDF_ptrs @681 + silk_LTP_gain_middle_avg_RD_Q14 @682 + silk_LTP_per_index_iCDF @683 + silk_LTP_scale_ctrl_FLP @684 + silk_LTP_vq_gain_ptrs_Q7 @685 + silk_LTP_vq_ptrs_Q7 @686 + silk_LTP_vq_sizes @687 + silk_LTPscale_iCDF @688 + silk_Lag_range_stage3 @689 + silk_Lag_range_stage3_10_ms @690 + silk_NLSF2A @691 + silk_NLSF2A_FLP @692 + silk_NLSF_CB_NB_MB @693 + silk_NLSF_CB_WB @694 + silk_NLSF_EXT_iCDF @695 + silk_NLSF_VQ @696 + silk_NLSF_VQ_weights_laroia @697 + silk_NLSF_decode @698 + silk_NLSF_del_dec_quant @699 + silk_NLSF_encode @700 + silk_NLSF_interpolation_factor_iCDF @701 + silk_NLSF_stabilize @702 + silk_NLSF_unpack @703 + silk_NSQ @704 + silk_NSQ_del_dec @705 + silk_NSQ_wrapper_FLP @706 + silk_PLC @707 + silk_PLC_Reset @708 + silk_PLC_glue_frames @709 + silk_Quantization_Offsets_Q10 @710 + silk_Resampler_1_2_COEFS @711 + silk_Resampler_1_3_COEFS @712 + silk_Resampler_1_4_COEFS @713 + silk_Resampler_1_6_COEFS @714 + silk_Resampler_2_3_COEFS @715 + silk_Resampler_2_3_COEFS_LQ @716 + silk_Resampler_3_4_COEFS @717 + silk_SNR_table_Q1 @718 + silk_TargetRate_table_MB @719 + silk_TargetRate_table_NB @720 + silk_TargetRate_table_WB @721 + silk_Transition_LP_A_Q28 @722 + silk_Transition_LP_B_Q28 @723 + silk_VAD_GetSA_Q8 @724 + silk_VAD_Init @725 + silk_VQ_WMat_EC @726 + silk_ana_filt_bank_1 @727 + silk_apply_sine_window_FLP @728 + silk_autocorrelation_FLP @729 + silk_biquad_alt @730 + silk_burg_modified_FLP @731 + silk_bwexpander @732 + silk_bwexpander_32 @733 + silk_bwexpander_FLP @734 + silk_control_SNR @735 + silk_control_audio_bandwidth @736 + silk_control_encoder @737 + silk_corrMatrix_FLP @738 + silk_corrVector_FLP @739 + silk_decode_core @740 + silk_decode_frame @741 + silk_decode_indices @742 + silk_decode_parameters @743 + silk_decode_pitch @744 + silk_decode_pulses @745 + silk_decode_signs @746 + silk_decoder_set_fs @747 + silk_delta_gain_iCDF @748 + silk_encode_do_VAD_FLP @749 + silk_encode_frame_FLP @750 + silk_encode_indices @751 + silk_encode_pulses @752 + silk_encode_signs @753 + silk_energy_FLP @754 + silk_find_LPC_FLP @755 + silk_find_LTP_FLP @756 + silk_find_pitch_lags_FLP @757 + silk_find_pred_coefs_FLP @758 + silk_gain_iCDF @759 + silk_gains_ID @760 + silk_gains_dequant @761 + silk_gains_quant @762 + silk_init_decoder @763 + silk_init_encoder @764 + silk_inner_prod_aligned_scale @765 + silk_inner_product_FLP @766 + silk_insertion_sort_decreasing_FLP @767 + silk_insertion_sort_increasing @768 + silk_insertion_sort_increasing_all_values_int16 @769 + silk_interpolate @770 + silk_k2a_FLP @771 + silk_levinsondurbin_FLP @772 + silk_lin2log @773 + silk_log2lin @774 + silk_lsb_iCDF @775 + silk_max_pulses_table @776 + silk_nb_cbk_searchs_stage3 @777 + silk_noise_shape_analysis_FLP @778 + silk_pitch_analysis_core_FLP @779 + silk_pitch_contour_10_ms_NB_iCDF @780 + silk_pitch_contour_10_ms_iCDF @781 + silk_pitch_contour_NB_iCDF @782 + silk_pitch_contour_iCDF @783 + silk_pitch_delta_iCDF @784 + silk_pitch_lag_iCDF @785 + silk_prefilter_FLP @786 + silk_process_NLSFs @787 + silk_process_NLSFs_FLP @788 + silk_process_gains_FLP @789 + silk_pulses_per_block_BITS_Q5 @790 + silk_pulses_per_block_iCDF @791 + silk_quant_LTP_gains @792 + silk_quant_LTP_gains_FLP @793 + silk_rate_levels_BITS_Q5 @794 + silk_rate_levels_iCDF @795 + silk_regularize_correlations_FLP @796 + silk_resampler @797 + silk_resampler_down2 @798 + silk_resampler_down2_3 @799 + silk_resampler_frac_FIR_12 @800 + silk_resampler_init @801 + silk_resampler_private_AR2 @802 + silk_resampler_private_IIR_FIR @803 + silk_resampler_private_down_FIR @804 + silk_resampler_private_up2_HQ @805 + silk_resampler_private_up2_HQ_wrapper @806 + silk_residual_energy_FLP @807 + silk_residual_energy_covar_FLP @808 + silk_scale_copy_vector_FLP @809 + silk_scale_vector_FLP @810 + silk_schur_FLP @811 + silk_shell_code_table0 @812 + silk_shell_code_table1 @813 + silk_shell_code_table2 @814 + silk_shell_code_table3 @815 + silk_shell_code_table_offsets @816 + silk_shell_decoder @817 + silk_shell_encoder @818 + silk_sigm_Q15 @819 + silk_sign_iCDF @820 + silk_solve_LDL_FLP @821 + silk_stereo_LR_to_MS @822 + silk_stereo_MS_to_LR @823 + silk_stereo_decode_mid_only @824 + silk_stereo_decode_pred @825 + silk_stereo_encode_mid_only @826 + silk_stereo_encode_pred @827 + silk_stereo_find_predictor @828 + silk_stereo_only_code_mid_iCDF @829 + silk_stereo_pred_joint_iCDF @830 + silk_stereo_pred_quant_Q13 @831 + silk_stereo_quant_pred @832 + silk_sum_sqr_shift @833 + silk_type_offset_VAD_iCDF @834 + silk_type_offset_no_VAD_iCDF @835 + silk_uniform3_iCDF @836 + silk_uniform4_iCDF @837 + silk_uniform5_iCDF @838 + silk_uniform6_iCDF @839 + silk_uniform8_iCDF @840 + silk_warped_autocorrelation_FLP @841 + sock_valid @842 + sodium_bin2hex @843 + sodium_hex2bin @844 + sodium_init @845 + sodium_memcmp @846 + sodium_memzero @847 + sodium_mlock @848 + sodium_munlock @849 + sodium_runtime_get_cpu_features @850 + sodium_runtime_has_neon @851 + sodium_runtime_has_sse2 @852 + sodium_runtime_has_sse3 @853 + spreading_decision @854 + stereo_itheta @855 + tcp_onion_response_handler @856 + terminate_queue @857 + tf_select_table @858 + thread_print @859 + thread_print_set @860 + to_host_family @861 + to_net_family @862 + tonality_analysis @863 + tonality_get_info @864 + tox_add_friend @865 + tox_add_friend_norequest @866 + tox_add_groupchat @867 + tox_bootstrap_from_address @868 + tox_callback_connection_status @869 + tox_callback_file_control @870 + tox_callback_file_data @871 + tox_callback_file_send_request @872 + tox_callback_friend_action @873 + tox_callback_friend_message @874 + tox_callback_friend_request @875 + tox_callback_group_action @876 + tox_callback_group_invite @877 + tox_callback_group_message @878 + tox_callback_group_namelist_change @879 + tox_callback_name_change @880 + tox_callback_read_receipt @881 + tox_callback_status_message @882 + tox_callback_typing_change @883 + tox_callback_user_status @884 + tox_count_chatlist @885 + tox_count_friendlist @886 + tox_decrypt_dns3_TXT @887 + tox_del_friend @888 + tox_del_groupchat @889 + tox_dns3_kill @890 + tox_dns3_new @891 + tox_do @892 + tox_do_interval @893 + tox_file_data_remaining @894 + tox_file_data_size @895 + tox_file_send_control @896 + tox_file_send_data @897 + tox_friend_exists @898 + tox_generate_dns3_string @899 + tox_get_address @900 + tox_get_chatlist @901 + tox_get_client_id @902 + tox_get_friend_connection_status @903 + tox_get_friend_number @904 + tox_get_friendlist @905 + tox_get_is_typing @906 + tox_get_keys @907 + tox_get_last_online @908 + tox_get_name @909 + tox_get_name_size @910 + tox_get_nospam @911 + tox_get_num_online_friends @912 + tox_get_self_name @913 + tox_get_self_name_size @914 + tox_get_self_status_message @915 + tox_get_self_status_message_size @916 + tox_get_self_user_status @917 + tox_get_status_message @918 + tox_get_status_message_size @919 + tox_get_user_status @920 + tox_group_action_send @921 + tox_group_get_names @922 + tox_group_message_send @923 + tox_group_number_peers @924 + tox_group_peername @925 + tox_invite_friend @926 + tox_isconnected @927 + tox_join_groupchat @928 + tox_kill @929 + tox_load @930 + tox_new @931 + tox_new_file_sender @932 + tox_save @933 + tox_send_action @934 + tox_send_action_withid @935 + tox_send_message @936 + tox_send_message_withid @937 + tox_set_name @938 + tox_set_nospam @939 + tox_set_status_message @940 + tox_set_user_is_typing @941 + tox_set_user_status @942 + tox_size @943 + toxav_answer @944 + toxav_call @945 + toxav_cancel @946 + toxav_capability_supported @947 + toxav_change_settings @948 + toxav_get_call_state @949 + toxav_get_peer_csettings @950 + toxav_get_peer_id @951 + toxav_get_tox @952 + toxav_handle_packet @953 + toxav_hangup @954 + toxav_has_activity @955 + toxav_kill @956 + toxav_kill_transmission @957 + toxav_new @958 + toxav_prepare_audio_frame @959 + toxav_prepare_transmission @960 + toxav_prepare_video_frame @961 + toxav_register_audio_recv_callback @962 + toxav_register_callstate_callback @963 + toxav_register_video_recv_callback @964 + toxav_reject @965 + toxav_send_audio @966 + toxav_send_video @967 + toxav_stop_call @968 + unix_time @969 + unix_time_update @970 + unpack_nodes @971 + unquant_coarse_energy @972 + unquant_energy_finalise @973 + unquant_fine_energy @974 + vp8_ac2quant @975 + vp8_ac_uv_quant @976 + vp8_ac_yquant @977 + vp8_activity_masking @978 + vp8_adjust_key_frame_context @979 + vp8_alloc_compressor_data @980 + vp8_alloc_frame_buffers @981 + vp8_auto_select_speed @982 + vp8_bilinear_filters @983 + vp8_bilinear_filters_x86_4 @984 + vp8_bilinear_filters_x86_8 @985 + vp8_bilinear_predict16x16 @986 + vp8_bilinear_predict16x16_c @987 + vp8_bilinear_predict16x16_mmx @988 + vp8_bilinear_predict16x16_sse2 @989 + vp8_bilinear_predict16x16_ssse3 @990 + vp8_bilinear_predict4x4 @991 + vp8_bilinear_predict4x4_c @992 + vp8_bilinear_predict4x4_mmx @993 + vp8_bilinear_predict8x4 @994 + vp8_bilinear_predict8x4_c @995 + vp8_bilinear_predict8x4_mmx @996 + vp8_bilinear_predict8x8 @997 + vp8_bilinear_predict8x8_c @998 + vp8_bilinear_predict8x8_mmx @999 + vp8_bilinear_predict8x8_sse2 @1000 + vp8_bilinear_predict8x8_ssse3 @1001 + vp8_bits_per_mb @1002 + vp8_blend_b_c @1003 + vp8_blend_mb_inner_c @1004 + vp8_blend_mb_outer_c @1005 + vp8_block2above @1006 + vp8_block2left @1007 + vp8_block_error @1008 + vp8_block_error_c @1009 + vp8_block_error_mmx @1010 + vp8_block_error_xmm @1011 + vp8_bmode_encodings @1012 + vp8_bmode_prob @1013 + vp8_bmode_tree @1014 + vp8_build_block_doffsets @1015 + vp8_build_block_offsets @1016 + vp8_build_component_cost_table @1017 + vp8_build_inter16x16_predictors_mb @1018 + vp8_build_inter16x16_predictors_mbuv @1019 + vp8_build_inter16x16_predictors_mby @1020 + vp8_build_inter4x4_predictors_mbuv @1021 + vp8_build_inter_predictors_b @1022 + vp8_build_inter_predictors_mb @1023 + vp8_build_intra_predictors_mbuv_s @1024 + vp8_build_intra_predictors_mbuv_s_c @1025 + vp8_build_intra_predictors_mbuv_s_sse2 @1026 + vp8_build_intra_predictors_mbuv_s_ssse3 @1027 + vp8_build_intra_predictors_mby_s @1028 + vp8_build_intra_predictors_mby_s_c @1029 + vp8_build_intra_predictors_mby_s_sse2 @1030 + vp8_build_intra_predictors_mby_s_ssse3 @1031 + vp8_cal_sad @1032 + vp8_calc_ref_frame_costs @1033 + vp8_calc_ss_err @1034 + vp8_change_config @1035 + vp8_clear_system_state @1036 + vp8_clear_system_state_c @1037 + vp8_coef_bands @1038 + vp8_coef_encodings @1039 + vp8_coef_tree @1040 + vp8_coef_update_probs @1041 + vp8_compute_frame_size_bounds @1042 + vp8_convert_rfct_to_prob @1043 + vp8_copy32xn @1044 + vp8_copy32xn_c @1045 + vp8_copy32xn_sse2 @1046 + vp8_copy32xn_sse3 @1047 + vp8_copy_and_extend_frame @1048 + vp8_copy_and_extend_frame_with_rect @1049 + vp8_copy_mem16x16 @1050 + vp8_copy_mem16x16_c @1051 + vp8_copy_mem16x16_mmx @1052 + vp8_copy_mem16x16_sse2 @1053 + vp8_copy_mem8x4 @1054 + vp8_copy_mem8x4_c @1055 + vp8_copy_mem8x4_mmx @1056 + vp8_copy_mem8x8 @1057 + vp8_copy_mem8x8_c @1058 + vp8_copy_mem8x8_mmx @1059 + vp8_cost_mv_ref @1060 + vp8_cost_tokens @1061 + vp8_cost_tokens2 @1062 + vp8_create_common @1063 + vp8_create_compressor @1064 + vp8_create_decoder_instances @1065 + vp8_ctf_maps @1066 + vp8_dc2quant @1067 + vp8_dc_only_idct_add @1068 + vp8_dc_only_idct_add_c @1069 + vp8_dc_only_idct_add_mmx @1070 + vp8_dc_quant @1071 + vp8_dc_uv_quant @1072 + vp8_dct_value_cost_ptr @1073 + vp8_dct_value_tokens_ptr @1074 + vp8_de_alloc_frame_buffers @1075 + vp8_deblock @1076 + vp8_decode_frame @1077 + vp8_decode_mb_tokens @1078 + vp8_decode_mode_mvs @1079 + vp8_decoder_create_threads @1080 + vp8_decoder_remove_threads @1081 + vp8_default_bmode_probs @1082 + vp8_default_coef_probs @1083 + vp8_default_inv_zig_zag @1084 + vp8_default_mv_context @1085 + vp8_default_zig_zag1d @1086 + vp8_default_zig_zag_mask @1087 + vp8_denoiser_allocate @1088 + vp8_denoiser_denoise_mb @1089 + vp8_denoiser_filter @1090 + vp8_denoiser_filter_c @1091 + vp8_denoiser_filter_sse2 @1092 + vp8_denoiser_free @1093 + vp8_dequant_idct_add @1094 + vp8_dequant_idct_add_c @1095 + vp8_dequant_idct_add_mmx @1096 + vp8_dequant_idct_add_uv_block @1097 + vp8_dequant_idct_add_uv_block_c @1098 + vp8_dequant_idct_add_uv_block_mmx @1099 + vp8_dequant_idct_add_uv_block_sse2 @1100 + vp8_dequant_idct_add_y_block @1101 + vp8_dequant_idct_add_y_block_c @1102 + vp8_dequant_idct_add_y_block_mmx @1103 + vp8_dequant_idct_add_y_block_sse2 @1104 + vp8_dequantize_b @1105 + vp8_dequantize_b_c @1106 + vp8_dequantize_b_impl_mmx @1107 + vp8_dequantize_b_mmx @1108 + vp8_diamond_search_sad @1109 + vp8_diamond_search_sad_c @1110 + vp8_diamond_search_sadx4 @1111 + vp8_encode_frame @1112 + vp8_encode_inter16x16 @1113 + vp8_encode_inter16x16y @1114 + vp8_encode_intra @1115 + vp8_encode_intra16x16mbuv @1116 + vp8_encode_intra16x16mby @1117 + vp8_encode_intra4x4block @1118 + vp8_encode_intra4x4mby @1119 + vp8_encode_motion_vector @1120 + vp8_encode_value @1121 + vp8_end_first_pass @1122 + vp8_end_second_pass @1123 + vp8_estimate_entropy_savings @1124 + vp8_extend_mb_row @1125 + vp8_extra_bits @1126 + vp8_fast_quantize_b @1127 + vp8_fast_quantize_b_c @1128 + vp8_fast_quantize_b_impl_mmx @1129 + vp8_fast_quantize_b_mmx @1130 + vp8_fast_quantize_b_pair_c @1131 + vp8_fast_quantize_b_sse2 @1132 + vp8_fast_quantize_b_ssse3 @1133 + vp8_filter_block1d16_h6_only_sse2 @1134 + vp8_filter_block1d16_h6_sse2 @1135 + vp8_filter_block1d16_h6_ssse3 @1136 + vp8_filter_block1d16_v6_sse2 @1137 + vp8_filter_block1d16_v6_ssse3 @1138 + vp8_filter_block1d4_h6_ssse3 @1139 + vp8_filter_block1d4_v6_ssse3 @1140 + vp8_filter_block1d8_h6_only_sse2 @1141 + vp8_filter_block1d8_h6_sse2 @1142 + vp8_filter_block1d8_h6_ssse3 @1143 + vp8_filter_block1d8_v6_only_sse2 @1144 + vp8_filter_block1d8_v6_sse2 @1145 + vp8_filter_block1d8_v6_ssse3 @1146 + vp8_filter_block1d_h6_mmx @1147 + vp8_filter_block1dc_v6_mmx @1148 + vp8_filter_block2d_bil4x4_var_mmx @1149 + vp8_filter_block2d_bil_var_mmx @1150 + vp8_filter_block2d_bil_var_sse2 @1151 + vp8_filter_block2d_bil_var_ssse3 @1152 + vp8_filter_by_weight16x16 @1153 + vp8_filter_by_weight16x16_c @1154 + vp8_filter_by_weight16x16_sse2 @1155 + vp8_filter_by_weight4x4_c @1156 + vp8_filter_by_weight8x8 @1157 + vp8_filter_by_weight8x8_c @1158 + vp8_filter_by_weight8x8_sse2 @1159 + vp8_find_best_half_pixel_step @1160 + vp8_find_best_sub_pixel_step @1161 + vp8_find_best_sub_pixel_step_iteratively @1162 + vp8_find_near_mvs @1163 + vp8_find_near_mvs_bias @1164 + vp8_first_pass @1165 + vp8_fix_contexts @1166 + vp8_full_search_sad @1167 + vp8_full_search_sad_c @1168 + vp8_full_search_sadx3 @1169 + vp8_full_search_sadx8 @1170 + vp8_gaussian @1171 + vp8_get16x16var_sse2 @1172 + vp8_get4x4sse_cs @1173 + vp8_get4x4sse_cs_c @1174 + vp8_get4x4sse_cs_mmx @1175 + vp8_get4x4var_mmx @1176 + vp8_get8x8var_mmx @1177 + vp8_get8x8var_sse2 @1178 + vp8_get_compressed_data @1179 + vp8_get_inter_mbpred_error @1180 + vp8_get_mb_ss @1181 + vp8_get_mb_ss_c @1182 + vp8_get_mb_ss_mmx @1183 + vp8_get_mb_ss_sse2 @1184 + vp8_get_preview_raw_frame @1185 + vp8_get_quantizer @1186 + vp8_get_reference @1187 + vp8_gf_boost_qadjustment @1188 + vp8_half_horiz_variance16x_h_sse2 @1189 + vp8_half_horiz_variance8x_h_sse2 @1190 + vp8_half_horiz_vert_variance16x_h_sse2 @1191 + vp8_half_horiz_vert_variance8x_h_sse2 @1192 + vp8_half_vert_variance16x_h_sse2 @1193 + vp8_half_vert_variance8x_h_sse2 @1194 + vp8_hex_search @1195 + vp8_horizontal_line_2_1_scale_c @1196 + vp8_horizontal_line_5_3_scale_c @1197 + vp8_horizontal_line_5_4_scale_c @1198 + vp8_idct_dequant_0_2x_sse2 @1199 + vp8_idct_dequant_dc_0_2x_sse2 @1200 + vp8_idct_dequant_dc_full_2x_sse2 @1201 + vp8_idct_dequant_full_2x_sse2 @1202 + vp8_init3smotion_compensation @1203 + vp8_init_dsmotion_compensation @1204 + vp8_init_first_pass @1205 + vp8_init_mbmode_probs @1206 + vp8_init_mode_costs @1207 + vp8_init_second_pass @1208 + vp8_initialize_rd_consts @1209 + vp8_intra4x4_predict_c @1210 + vp8_intra_pred_uv_dc128_mmx @1211 + vp8_intra_pred_uv_dc_mmx2 @1212 + vp8_intra_pred_uv_dcleft_mmx2 @1213 + vp8_intra_pred_uv_dctop_mmx2 @1214 + vp8_intra_pred_uv_ho_mmx2 @1215 + vp8_intra_pred_uv_ho_ssse3 @1216 + vp8_intra_pred_uv_tm_sse2 @1217 + vp8_intra_pred_uv_tm_ssse3 @1218 + vp8_intra_pred_uv_ve_mmx @1219 + vp8_intra_pred_y_dc128_sse2 @1220 + vp8_intra_pred_y_dc_sse2 @1221 + vp8_intra_pred_y_dcleft_sse2 @1222 + vp8_intra_pred_y_dctop_sse2 @1223 + vp8_intra_pred_y_ho_sse2 @1224 + vp8_intra_pred_y_tm_sse2 @1225 + vp8_intra_pred_y_tm_ssse3 @1226 + vp8_intra_pred_y_ve_sse2 @1227 + vp8_kf_bmode_prob @1228 + vp8_kf_uv_mode_prob @1229 + vp8_kf_ymode_encodings @1230 + vp8_kf_ymode_prob @1231 + vp8_kf_ymode_tree @1232 + vp8_lookahead_depth @1233 + vp8_lookahead_destroy @1234 + vp8_lookahead_init @1235 + vp8_lookahead_peek @1236 + vp8_lookahead_pop @1237 + vp8_lookahead_push @1238 + vp8_loop_filter_bh @1239 + vp8_loop_filter_bh_c @1240 + vp8_loop_filter_bh_mmx @1241 + vp8_loop_filter_bh_sse2 @1242 + vp8_loop_filter_bhs_c @1243 + vp8_loop_filter_bhs_mmx @1244 + vp8_loop_filter_bhs_sse2 @1245 + vp8_loop_filter_bv @1246 + vp8_loop_filter_bv_c @1247 + vp8_loop_filter_bv_mmx @1248 + vp8_loop_filter_bv_sse2 @1249 + vp8_loop_filter_bvs_c @1250 + vp8_loop_filter_bvs_mmx @1251 + vp8_loop_filter_bvs_sse2 @1252 + vp8_loop_filter_frame @1253 + vp8_loop_filter_frame_init @1254 + vp8_loop_filter_frame_yonly @1255 + vp8_loop_filter_horizontal_edge_c @1256 + vp8_loop_filter_horizontal_edge_mmx @1257 + vp8_loop_filter_horizontal_edge_sse2 @1258 + vp8_loop_filter_horizontal_edge_uv_sse2 @1259 + vp8_loop_filter_init @1260 + vp8_loop_filter_mbh @1261 + vp8_loop_filter_mbh_c @1262 + vp8_loop_filter_mbh_mmx @1263 + vp8_loop_filter_mbh_sse2 @1264 + vp8_loop_filter_mbv @1265 + vp8_loop_filter_mbv_c @1266 + vp8_loop_filter_mbv_mmx @1267 + vp8_loop_filter_mbv_sse2 @1268 + vp8_loop_filter_partial_frame @1269 + vp8_loop_filter_row_normal @1270 + vp8_loop_filter_row_simple @1271 + vp8_loop_filter_simple_bh @1272 + vp8_loop_filter_simple_bv @1273 + vp8_loop_filter_simple_horizontal_edge_c @1274 + vp8_loop_filter_simple_horizontal_edge_mmx @1275 + vp8_loop_filter_simple_horizontal_edge_sse2 @1276 + vp8_loop_filter_simple_mbh @1277 + vp8_loop_filter_simple_mbv @1278 + vp8_loop_filter_simple_vertical_edge_c @1279 + vp8_loop_filter_simple_vertical_edge_mmx @1280 + vp8_loop_filter_simple_vertical_edge_sse2 @1281 + vp8_loop_filter_update_sharpness @1282 + vp8_loop_filter_vertical_edge_c @1283 + vp8_loop_filter_vertical_edge_mmx @1284 + vp8_loop_filter_vertical_edge_sse2 @1285 + vp8_loop_filter_vertical_edge_uv_sse2 @1286 + vp8_loopfilter_frame @1287 + vp8_machine_specific_config @1288 + vp8_mb_feature_data_bits @1289 + vp8_mb_init_dequantizer @1290 + vp8_mbblock_error @1291 + vp8_mbblock_error_c @1292 + vp8_mbblock_error_mmx @1293 + vp8_mbblock_error_mmx_impl @1294 + vp8_mbblock_error_xmm @1295 + vp8_mbblock_error_xmm_impl @1296 + vp8_mbloop_filter_horizontal_edge_c @1297 + vp8_mbloop_filter_horizontal_edge_mmx @1298 + vp8_mbloop_filter_horizontal_edge_sse2 @1299 + vp8_mbloop_filter_horizontal_edge_uv_sse2 @1300 + vp8_mbloop_filter_vertical_edge_c @1301 + vp8_mbloop_filter_vertical_edge_mmx @1302 + vp8_mbloop_filter_vertical_edge_sse2 @1303 + vp8_mbloop_filter_vertical_edge_uv_sse2 @1304 + vp8_mbpost_proc_across_ip @1305 + vp8_mbpost_proc_across_ip_c @1306 + vp8_mbpost_proc_across_ip_xmm @1307 + vp8_mbpost_proc_down @1308 + vp8_mbpost_proc_down_c @1309 + vp8_mbpost_proc_down_mmx @1310 + vp8_mbpost_proc_down_xmm @1311 + vp8_mbsplit_count @1312 + vp8_mbsplit_encodings @1313 + vp8_mbsplit_offset @1314 + vp8_mbsplit_probs @1315 + vp8_mbsplit_tree @1316 + vp8_mbsplits @1317 + vp8_mbuverror @1318 + vp8_mbuverror_c @1319 + vp8_mbuverror_mmx @1320 + vp8_mbuverror_mmx_impl @1321 + vp8_mbuverror_xmm @1322 + vp8_mbuverror_xmm_impl @1323 + vp8_mode_contexts @1324 + vp8_mode_order @1325 + vp8_mse16x16 @1326 + vp8_mse16x16_c @1327 + vp8_mse16x16_mmx @1328 + vp8_mse16x16_wmt @1329 + vp8_mse2psnr @1330 + vp8_multiframe_quality_enhance @1331 + vp8_mv_bit_cost @1332 + vp8_mv_cont @1333 + vp8_mv_pred @1334 + vp8_mv_ref_encoding_array @1335 + vp8_mv_ref_probs @1336 + vp8_mv_ref_tree @1337 + vp8_mv_update_probs @1338 + vp8_new_framerate @1339 + vp8_norm @1340 + vp8_optimize_mbuv @1341 + vp8_optimize_mby @1342 + vp8_pack_bitstream @1343 + vp8_pack_tokens_c @1344 + vp8_pick_frame_size @1345 + vp8_pick_inter_mode @1346 + vp8_pick_intra_mode @1347 + vp8_plane_add_noise @1348 + vp8_plane_add_noise_c @1349 + vp8_plane_add_noise_mmx @1350 + vp8_plane_add_noise_wmt @1351 + vp8_post_proc_down_and_across_mb_row @1352 + vp8_post_proc_down_and_across_mb_row_c @1353 + vp8_post_proc_down_and_across_mb_row_sse2 @1354 + vp8_post_proc_frame @1355 + vp8_prev_token_class @1356 + vp8_prob_cost @1357 + vp8_quantize_mb_c @1358 + vp8_quantize_mbuv_c @1359 + vp8_quantize_mby_c @1360 + vp8_rd_pick_inter_mode @1361 + vp8_rd_pick_intra_mode @1362 + vp8_receive_raw_frame @1363 + vp8_ref_frame_order @1364 + vp8_refining_search_sad @1365 + vp8_refining_search_sad_c @1366 + vp8_refining_search_sadx4 @1367 + vp8_regular_quantize_b @1368 + vp8_regular_quantize_b_c @1369 + vp8_regular_quantize_b_pair_c @1370 + vp8_regular_quantize_b_sse2 @1371 + vp8_regulate_q @1372 + vp8_remove_common @1373 + vp8_remove_compressor @1374 + vp8_remove_decoder_instances @1375 + vp8_reset_mb_tokens_context @1376 + vp8_restore_coding_context @1377 + vp8_reverse_trans @1378 + vp8_rtcd @1379 + vp8_rv @1380 + vp8_sad16x16 @1381 + vp8_sad16x16_c @1382 + vp8_sad16x16_mmx @1383 + vp8_sad16x16_sse3 @1384 + vp8_sad16x16_wmt @1385 + vp8_sad16x16x3 @1386 + vp8_sad16x16x3_c @1387 + vp8_sad16x16x3_sse3 @1388 + vp8_sad16x16x3_ssse3 @1389 + vp8_sad16x16x4d @1390 + vp8_sad16x16x4d_c @1391 + vp8_sad16x16x4d_sse3 @1392 + vp8_sad16x16x8 @1393 + vp8_sad16x16x8_c @1394 + vp8_sad16x16x8_sse4 @1395 + vp8_sad16x8 @1396 + vp8_sad16x8_c @1397 + vp8_sad16x8_mmx @1398 + vp8_sad16x8_wmt @1399 + vp8_sad16x8x3 @1400 + vp8_sad16x8x3_c @1401 + vp8_sad16x8x3_sse3 @1402 + vp8_sad16x8x3_ssse3 @1403 + vp8_sad16x8x4d @1404 + vp8_sad16x8x4d_c @1405 + vp8_sad16x8x4d_sse3 @1406 + vp8_sad16x8x8 @1407 + vp8_sad16x8x8_c @1408 + vp8_sad16x8x8_sse4 @1409 + vp8_sad4x4 @1410 + vp8_sad4x4_c @1411 + vp8_sad4x4_mmx @1412 + vp8_sad4x4_wmt @1413 + vp8_sad4x4x3 @1414 + vp8_sad4x4x3_c @1415 + vp8_sad4x4x3_sse3 @1416 + vp8_sad4x4x4d @1417 + vp8_sad4x4x4d_c @1418 + vp8_sad4x4x4d_sse3 @1419 + vp8_sad4x4x8 @1420 + vp8_sad4x4x8_c @1421 + vp8_sad4x4x8_sse4 @1422 + vp8_sad8x16 @1423 + vp8_sad8x16_c @1424 + vp8_sad8x16_mmx @1425 + vp8_sad8x16_wmt @1426 + vp8_sad8x16x3 @1427 + vp8_sad8x16x3_c @1428 + vp8_sad8x16x3_sse3 @1429 + vp8_sad8x16x4d @1430 + vp8_sad8x16x4d_c @1431 + vp8_sad8x16x4d_sse3 @1432 + vp8_sad8x16x8 @1433 + vp8_sad8x16x8_c @1434 + vp8_sad8x16x8_sse4 @1435 + vp8_sad8x8 @1436 + vp8_sad8x8_c @1437 + vp8_sad8x8_mmx @1438 + vp8_sad8x8_wmt @1439 + vp8_sad8x8x3 @1440 + vp8_sad8x8x3_c @1441 + vp8_sad8x8x3_sse3 @1442 + vp8_sad8x8x4d @1443 + vp8_sad8x8x4d_c @1444 + vp8_sad8x8x4d_sse3 @1445 + vp8_sad8x8x8 @1446 + vp8_sad8x8x8_c @1447 + vp8_sad8x8x8_sse4 @1448 + vp8_save_coding_context @1449 + vp8_second_pass @1450 + vp8_set_active_map @1451 + vp8_set_internal_size @1452 + vp8_set_mbmode_and_mvs @1453 + vp8_set_quantizer @1454 + vp8_set_reference @1455 + vp8_set_roimap @1456 + vp8_set_speed_features @1457 + vp8_setup_block_dptrs @1458 + vp8_setup_block_ptrs @1459 + vp8_setup_intra_recon @1460 + vp8_setup_intra_recon_top_line @1461 + vp8_setup_key_frame @1462 + vp8_setup_version @1463 + vp8_short_fdct4x4 @1464 + vp8_short_fdct4x4_c @1465 + vp8_short_fdct4x4_mmx @1466 + vp8_short_fdct4x4_sse2 @1467 + vp8_short_fdct8x4 @1468 + vp8_short_fdct8x4_c @1469 + vp8_short_fdct8x4_mmx @1470 + vp8_short_fdct8x4_sse2 @1471 + vp8_short_idct4x4llm @1472 + vp8_short_idct4x4llm_c @1473 + vp8_short_idct4x4llm_mmx @1474 + vp8_short_inv_walsh4x4 @1475 + vp8_short_inv_walsh4x4_1_c @1476 + vp8_short_inv_walsh4x4_c @1477 + vp8_short_inv_walsh4x4_mmx @1478 + vp8_short_inv_walsh4x4_sse2 @1479 + vp8_short_walsh4x4 @1480 + vp8_short_walsh4x4_c @1481 + vp8_short_walsh4x4_sse2 @1482 + vp8_six_tap_mmx @1483 + vp8_sixtap_predict16x16 @1484 + vp8_sixtap_predict16x16_c @1485 + vp8_sixtap_predict16x16_mmx @1486 + vp8_sixtap_predict16x16_sse2 @1487 + vp8_sixtap_predict16x16_ssse3 @1488 + vp8_sixtap_predict4x4 @1489 + vp8_sixtap_predict4x4_c @1490 + vp8_sixtap_predict4x4_mmx @1491 + vp8_sixtap_predict4x4_ssse3 @1492 + vp8_sixtap_predict8x4 @1493 + vp8_sixtap_predict8x4_c @1494 + vp8_sixtap_predict8x4_mmx @1495 + vp8_sixtap_predict8x4_sse2 @1496 + vp8_sixtap_predict8x4_ssse3 @1497 + vp8_sixtap_predict8x8 @1498 + vp8_sixtap_predict8x8_c @1499 + vp8_sixtap_predict8x8_mmx @1500 + vp8_sixtap_predict8x8_sse2 @1501 + vp8_sixtap_predict8x8_ssse3 @1502 + vp8_skip_fractional_mv_step @1503 + vp8_small_mvencodings @1504 + vp8_small_mvtree @1505 + vp8_start_encode @1506 + vp8_stop_encode @1507 + vp8_strict_quantize_b_c @1508 + vp8_stuff_mb @1509 + vp8_sub_mv_ref_encoding_array @1510 + vp8_sub_mv_ref_prob2 @1511 + vp8_sub_mv_ref_prob3 @1512 + vp8_sub_mv_ref_tree @1513 + vp8_sub_pel_filters @1514 + vp8_sub_pixel_mse16x16 @1515 + vp8_sub_pixel_mse16x16_c @1516 + vp8_sub_pixel_mse16x16_mmx @1517 + vp8_sub_pixel_mse16x16_wmt @1518 + vp8_sub_pixel_variance16x16 @1519 + vp8_sub_pixel_variance16x16_c @1520 + vp8_sub_pixel_variance16x16_mmx @1521 + vp8_sub_pixel_variance16x16_ssse3 @1522 + vp8_sub_pixel_variance16x16_wmt @1523 + vp8_sub_pixel_variance16x8 @1524 + vp8_sub_pixel_variance16x8_c @1525 + vp8_sub_pixel_variance16x8_mmx @1526 + vp8_sub_pixel_variance16x8_ssse3 @1527 + vp8_sub_pixel_variance16x8_wmt @1528 + vp8_sub_pixel_variance4x4 @1529 + vp8_sub_pixel_variance4x4_c @1530 + vp8_sub_pixel_variance4x4_mmx @1531 + vp8_sub_pixel_variance4x4_wmt @1532 + vp8_sub_pixel_variance8x16 @1533 + vp8_sub_pixel_variance8x16_c @1534 + vp8_sub_pixel_variance8x16_mmx @1535 + vp8_sub_pixel_variance8x16_wmt @1536 + vp8_sub_pixel_variance8x8 @1537 + vp8_sub_pixel_variance8x8_c @1538 + vp8_sub_pixel_variance8x8_mmx @1539 + vp8_sub_pixel_variance8x8_wmt @1540 + vp8_subtract_b @1541 + vp8_subtract_b_c @1542 + vp8_subtract_b_mmx @1543 + vp8_subtract_b_mmx_impl @1544 + vp8_subtract_b_sse2 @1545 + vp8_subtract_b_sse2_impl @1546 + vp8_subtract_mbuv @1547 + vp8_subtract_mbuv_c @1548 + vp8_subtract_mbuv_mmx @1549 + vp8_subtract_mbuv_sse2 @1550 + vp8_subtract_mby @1551 + vp8_subtract_mby_c @1552 + vp8_subtract_mby_mmx @1553 + vp8_subtract_mby_sse2 @1554 + vp8_swap_yv12_buffer @1555 + vp8_temporal_filter_apply @1556 + vp8_temporal_filter_apply_c @1557 + vp8_temporal_filter_apply_sse2 @1558 + vp8_temporal_filter_prepare_c @1559 + vp8_tokenize_mb @1560 + vp8_tokens_from_tree @1561 + vp8_tokens_from_tree_offset @1562 + vp8_transform_intra_mby @1563 + vp8_transform_mbuv @1564 + vp8_tree_probs_from_distribution @1565 + vp8_unpack_block1d16_h6_sse2 @1566 + vp8_update_coef_probs @1567 + vp8_update_entropy @1568 + vp8_update_gf_useage_maps @1569 + vp8_update_rate_correction_factors @1570 + vp8_update_reference @1571 + vp8_update_zbin_extra @1572 + vp8_use_as_reference @1573 + vp8_uv_mode_encodings @1574 + vp8_uv_mode_prob @1575 + vp8_uv_mode_tree @1576 + vp8_variance16x16 @1577 + vp8_variance16x16_c @1578 + vp8_variance16x16_mmx @1579 + vp8_variance16x16_wmt @1580 + vp8_variance16x8 @1581 + vp8_variance16x8_c @1582 + vp8_variance16x8_mmx @1583 + vp8_variance16x8_wmt @1584 + vp8_variance4x4 @1585 + vp8_variance4x4_c @1586 + vp8_variance4x4_mmx @1587 + vp8_variance4x4_wmt @1588 + vp8_variance8x16 @1589 + vp8_variance8x16_c @1590 + vp8_variance8x16_mmx @1591 + vp8_variance8x16_wmt @1592 + vp8_variance8x8 @1593 + vp8_variance8x8_c @1594 + vp8_variance8x8_mmx @1595 + vp8_variance8x8_wmt @1596 + vp8_variance_and_sad_16x16_sse2 @1597 + vp8_variance_halfpixvar16x16_h @1598 + vp8_variance_halfpixvar16x16_h_c @1599 + vp8_variance_halfpixvar16x16_h_mmx @1600 + vp8_variance_halfpixvar16x16_h_wmt @1601 + vp8_variance_halfpixvar16x16_hv @1602 + vp8_variance_halfpixvar16x16_hv_c @1603 + vp8_variance_halfpixvar16x16_hv_mmx @1604 + vp8_variance_halfpixvar16x16_hv_wmt @1605 + vp8_variance_halfpixvar16x16_v @1606 + vp8_variance_halfpixvar16x16_v_c @1607 + vp8_variance_halfpixvar16x16_v_mmx @1608 + vp8_variance_halfpixvar16x16_v_wmt @1609 + vp8_vertical_band_2_1_scale_c @1610 + vp8_vertical_band_2_1_scale_i_c @1611 + vp8_vertical_band_5_3_scale_c @1612 + vp8_vertical_band_5_4_scale_c @1613 + vp8_write_mvprobs @1614 + vp8_ymode_encodings @1615 + vp8_ymode_prob @1616 + vp8_ymode_tree @1617 + vp8_yv12_alloc_frame_buffer @1618 + vp8_yv12_copy_frame_c @1619 + vp8_yv12_copy_partial_frame_c @1620 + vp8_yv12_de_alloc_frame_buffer @1621 + vp8_yv12_extend_frame_borders_c @1622 + vp8_yv12_realloc_frame_buffer @1623 + vp8cx_base_skip_false_prob @1624 + vp8cx_create_encoder_threads @1625 + vp8cx_encode_inter_macroblock @1626 + vp8cx_encode_intra_macroblock @1627 + vp8cx_frame_init_quantizer @1628 + vp8cx_init_de_quantizer @1629 + vp8cx_init_mbrthread_data @1630 + vp8cx_init_quantizer @1631 + vp8cx_initialize_me_consts @1632 + vp8cx_mb_init_quantizer @1633 + vp8cx_pick_filter_level @1634 + vp8cx_pick_filter_level_fast @1635 + vp8cx_remove_encoder_threads @1636 + vp8cx_set_alt_lf_level @1637 + vp8dx_bool_decoder_fill @1638 + vp8dx_get_raw_frame @1639 + vp8dx_get_reference @1640 + vp8dx_receive_compressed_data @1641 + vp8dx_references_buffer @1642 + vp8dx_set_reference @1643 + vp8dx_start_decode @1644 + vp8mt_alloc_temp_buffers @1645 + vp8mt_de_alloc_temp_buffers @1646 + vp8mt_decode_mb_rows @1647 + vp9_alloc_frame_buffer @1648 + vp9_extend_frame_borders_c @1649 + vp9_extend_frame_inner_borders_c @1650 + vp9_free_frame_buffer @1651 + vp9_realloc_frame_buffer @1652 + vpx_calloc @1653 + vpx_codec_control_ @1654 + vpx_codec_dec_init_ver @1655 + vpx_codec_decode @1656 + vpx_codec_destroy @1657 + vpx_codec_enc_config_default @1658 + vpx_codec_enc_config_set @1659 + vpx_codec_enc_init_multi_ver @1660 + vpx_codec_enc_init_ver @1661 + vpx_codec_encode @1662 + vpx_codec_err_to_string @1663 + vpx_codec_error @1664 + vpx_codec_error_detail @1665 + vpx_codec_get_caps @1666 + vpx_codec_get_cx_data @1667 + vpx_codec_get_frame @1668 + vpx_codec_get_global_headers @1669 + vpx_codec_get_mem_map @1670 + vpx_codec_get_preview_frame @1671 + vpx_codec_get_stream_info @1672 + vpx_codec_iface_name @1673 + vpx_codec_peek_stream_info @1674 + vpx_codec_pkt_list_add @1675 + vpx_codec_pkt_list_get @1676 + vpx_codec_register_put_frame_cb @1677 + vpx_codec_register_put_slice_cb @1678 + vpx_codec_set_cx_data_buf @1679 + vpx_codec_set_mem_map @1680 + vpx_codec_version @1681 + vpx_codec_version_extra_str @1682 + vpx_codec_version_str @1683 + vpx_codec_vp8_cx @1684 + vpx_codec_vp8_cx_algo @1685 + vpx_codec_vp8_dx @1686 + vpx_codec_vp8_dx_algo @1687 + vpx_free @1688 + vpx_malloc @1689 + vpx_mem_get_version @1690 + vpx_mem_set_functions @1691 + vpx_mem_set_heap_size @1692 + vpx_mem_unset_functions @1693 + vpx_memalign @1694 + vpx_memcpy @1695 + vpx_memmove @1696 + vpx_memset @1697 + vpx_mmap_alloc @1698 + vpx_mmap_dtor @1699 + vpx_realloc @1700 + vpx_reset_mmx_state @1701 + vpx_scale_frame @1702 + vpx_scale_rtcd @1703 + vpx_validate_mmaps @1704 + vpx_yv12_copy_y_c @1705 + write_cryptpacket @1706 diff --git a/protocols/Tox/tox/lib/x86/libtox.exp b/protocols/Tox/tox/lib/x86/libtox.exp new file mode 100644 index 0000000000..b9b3285af6 Binary files /dev/null and b/protocols/Tox/tox/lib/x86/libtox.exp differ diff --git a/protocols/Tox/tox/lib/x86/libtox.lib b/protocols/Tox/tox/lib/x86/libtox.lib new file mode 100644 index 0000000000..e796ec22e0 Binary files /dev/null and b/protocols/Tox/tox/lib/x86/libtox.lib differ -- cgit v1.2.3