From c7d9d3aa9c2f9ea155485bbdd03b031864cf3732 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Thu, 7 Aug 2014 15:02:07 +0000 Subject: libtox update added libtox x64 projects cleanup added dll to lib converter git-svn-id: http://svn.miranda-ng.org/main/trunk@10120 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tox/Tox_10.vcxproj | 54 +- protocols/Tox/Tox_10.vcxproj.filters | 21 +- protocols/Tox/Tox_11.vcxproj | 234 --- protocols/Tox/Tox_11.vcxproj.filters | 62 - protocols/Tox/Tox_12.vcxproj | 38 +- protocols/Tox/Tox_12.vcxproj.filters | 21 +- protocols/Tox/dll/libtox.dll | Bin 2922568 -> 0 bytes protocols/Tox/dll/x64/libtox.dll | Bin 0 -> 3468158 bytes protocols/Tox/dll/x86/libtox.dll | Bin 0 -> 2934404 bytes protocols/Tox/docs/dlltolib/deflibcreator/as.exe | Bin 0 -> 792360 bytes protocols/Tox/docs/dlltolib/deflibcreator/as64.exe | Bin 0 -> 1510620 bytes .../docs/dlltolib/deflibcreator/deflibcreator.exe | Bin 0 -> 77824 bytes .../Tox/docs/dlltolib/deflibcreator/dlltool.exe | Bin 0 -> 611153 bytes .../Tox/docs/dlltolib/deflibcreator/dlltool64.exe | Bin 0 -> 1023386 bytes protocols/Tox/docs/dlltolib/deflibcreator/link.exe | Bin 0 -> 733440 bytes .../docs/dlltolib/deflibcreator/link.exe.manifest | 11 + .../Tox/docs/dlltolib/deflibcreator/mspdb80.dll | Bin 0 -> 173056 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 0 -> 34494 bytes .../docs/dlltolib/deflibcreator/src/resource.rc | 94 ++ protocols/Tox/docs/dlltolib/start.cmd | 3 + protocols/Tox/include/tox/tox.h | 666 -------- protocols/Tox/include/tox/toxav.h | 393 ----- protocols/Tox/include/tox/toxdns.h | 85 - protocols/Tox/lib/libtox.def | 1728 -------------------- protocols/Tox/lib/libtox.exp | Bin 242802 -> 0 bytes protocols/Tox/lib/libtox.lib | Bin 401722 -> 0 bytes protocols/Tox/lib/x64/libtox-x64.exp | Bin 0 -> 214365 bytes protocols/Tox/lib/x64/libtox-x64.lib | Bin 0 -> 352612 bytes protocols/Tox/lib/x64/libtox.def | 1556 ++++++++++++++++++ protocols/Tox/lib/x86/libtox.def | 1704 +++++++++++++++++++ protocols/Tox/lib/x86/libtox.exp | Bin 0 -> 240111 bytes protocols/Tox/lib/x86/libtox.lib | Bin 0 -> 397398 bytes protocols/Tox/res/version.rc | 38 + protocols/Tox/src/common.h | 2 +- protocols/Tox/src/tox/tox.h | 673 ++++++++ protocols/Tox/src/tox/toxav.h | 389 +++++ protocols/Tox/src/tox/toxdns.h | 85 + protocols/Tox/src/version.h | 3 +- 42 files changed, 4976 insertions(+), 3218 deletions(-) delete mode 100644 protocols/Tox/Tox_11.vcxproj delete mode 100644 protocols/Tox/Tox_11.vcxproj.filters delete mode 100644 protocols/Tox/dll/libtox.dll create mode 100644 protocols/Tox/dll/x64/libtox.dll create mode 100644 protocols/Tox/dll/x86/libtox.dll create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/as.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/as64.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/link.exe create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico create mode 100644 protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc create mode 100644 protocols/Tox/docs/dlltolib/start.cmd delete mode 100644 protocols/Tox/include/tox/tox.h delete mode 100644 protocols/Tox/include/tox/toxav.h delete mode 100644 protocols/Tox/include/tox/toxdns.h delete mode 100644 protocols/Tox/lib/libtox.def delete mode 100644 protocols/Tox/lib/libtox.exp delete mode 100644 protocols/Tox/lib/libtox.lib create mode 100644 protocols/Tox/lib/x64/libtox-x64.exp create mode 100644 protocols/Tox/lib/x64/libtox-x64.lib create mode 100644 protocols/Tox/lib/x64/libtox.def create mode 100644 protocols/Tox/lib/x86/libtox.def create mode 100644 protocols/Tox/lib/x86/libtox.exp create mode 100644 protocols/Tox/lib/x86/libtox.lib create mode 100644 protocols/Tox/res/version.rc create mode 100644 protocols/Tox/src/tox/tox.h create mode 100644 protocols/Tox/src/tox/toxav.h create mode 100644 protocols/Tox/src/tox/toxdns.h diff --git a/protocols/Tox/Tox_10.vcxproj b/protocols/Tox/Tox_10.vcxproj index 093bf63a46..cf01464bbf 100644 --- a/protocols/Tox/Tox_10.vcxproj +++ b/protocols/Tox/Tox_10.vcxproj @@ -19,7 +19,7 @@ - {F5282DBC-756B-4071-B186-3E82C0E8E1F7} + {BCFAB658-326E-466D-995B-E76636C1DEA4} Tox @@ -73,19 +73,11 @@ $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ true - - D:\X-Files\Projects\miranda-ng\plugins\Tox\include;$(IncludePath) - D:\X-Files\Projects\miranda-ng\plugins\Tox\lib;$(LibraryPath) - - - D:\X-Files\Projects\miranda-ng\plugins\Tox\include;$(IncludePath) - D:\X-Files\Projects\miranda-ng\plugins\Tox\lib;$(LibraryPath) - Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true @@ -97,15 +89,18 @@ Windows true - $(ProfileDir)..\..\bin10\lib;lib + $(ProfileDir)..\..\bin10\lib;lib\x86 $(IntDir)$(TargetName).lib - comctl32.lib;libtoxcore-0.lib false + libtox.lib;%(AdditionalDependencies) _DEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y + @@ -123,15 +118,18 @@ Windows true - $(ProfileDir)..\..\bin10\lib;lib + $(ProfileDir)..\..\bin10\lib;lib\x64 $(IntDir)$(TargetName).lib - comctl32.lib;%(AdditionalDependencies) + libtox-x64.lib;%(AdditionalDependencies) false _DEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + @@ -139,7 +137,7 @@ Full true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) 4996;%(DisableSpecificWarnings) Use @@ -151,15 +149,18 @@ true true false - comctl32.lib;libtoxcore-0.lib - $(ProfileDir)..\..\bin10\lib;lib + $(ProfileDir)..\..\bin10\lib;lib\x86 $(IntDir)$(TargetName).lib + libtox.lib;%(AdditionalDependencies) /PDBALTPATH:%_PDB% %(AdditionalOptions) NDEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y + @@ -179,8 +180,8 @@ true true false - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin10\lib;lib + libtox-x64.lib;%(AdditionalDependencies) + $(ProfileDir)..\..\bin10\lib;lib\x64 $(IntDir)$(TargetName).lib /PDBALTPATH:%_PDB% %(AdditionalOptions) @@ -188,10 +189,16 @@ NDEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + - + + + + @@ -200,8 +207,15 @@ Create + + + + + + + diff --git a/protocols/Tox/Tox_10.vcxproj.filters b/protocols/Tox/Tox_10.vcxproj.filters index 35422ff8dc..327ae80404 100644 --- a/protocols/Tox/Tox_10.vcxproj.filters +++ b/protocols/Tox/Tox_10.vcxproj.filters @@ -7,12 +7,12 @@ {ea03e4bb-b8dd-4b5b-b409-2513240d2511} - - {283e5715-d541-4bda-9ec6-31b29865e1f0} - {b818611d-200d-4eb8-be7a-f15b396ae26d} + + {dcda5d79-c0d1-4515-9513-7eda6a003978} + @@ -24,12 +24,18 @@ Header Files - - Header Files\tox - Header Files + + Header Files\tox + + + Header Files\tox + + + Header Files\tox + @@ -58,5 +64,8 @@ Resource Files + + Resource Files + \ No newline at end of file diff --git a/protocols/Tox/Tox_11.vcxproj b/protocols/Tox/Tox_11.vcxproj deleted file mode 100644 index 5a58eb882a..0000000000 --- a/protocols/Tox/Tox_11.vcxproj +++ /dev/null @@ -1,234 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {BCFAB658-326E-466D-995B-E76636C1DEA4} - Tox - - - - DynamicLibrary - true - Unicode - v110_xp - - - DynamicLibrary - true - Unicode - v110_xp - - - DynamicLibrary - false - true - Unicode - v110_xp - - - DynamicLibrary - false - true - Unicode - v110_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - D:\X-Files\Projects\miranda-ng\plugins\Tox\include;$(IncludePath) - D:\X-Files\Projects\miranda-ng\plugins\Tox\lib;$(LibraryPath) - - - D:\X-Files\Projects\miranda-ng\plugins\Tox\include;$(IncludePath) - D:\X-Files\Projects\miranda-ng\plugins\Tox\lib;$(LibraryPath) - - - - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - common.h - Use - - - Windows - true - $(ProfileDir)..\..\bin11\lib;lib - $(IntDir)$(TargetName).lib - comctl32.lib;user32.lib;libtoxcore-0.lib - false - /SAFESEH:NO %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - xcopy dll\*.dll $(SolutionDir)$(Configuration) - - - - - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - Use - common.h - - - Windows - true - $(ProfileDir)..\..\bin11\lib;lib - $(IntDir)$(TargetName).lib - comctl32.lib;user32.lib;libtoxcore-0.lib;%(AdditionalDependencies) - false - /SAFESEH:NO %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - xcopy dll\*.dll $(SolutionDir)$(Configuration) - - - - - Level3 - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - Use - common.h - - - Windows - true - true - true - false - comctl32.lib;user32.lib;libtoxcore-0.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin11\lib;lib - $(IntDir)$(TargetName).lib - /SAFESEH:NO %(AdditionalOptions) - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - xcopy dll\*.dll $(SolutionDir)$(Configuration) - - - - - Level3 - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - Use - common.h - - - Windows - true - true - true - false - comctl32.lib;user32.lib;libtoxcore-0.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin11\lib;lib - $(IntDir)$(TargetName).lib - /SAFESEH:NO %(AdditionalOptions) - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - xcopy dll\*.dll $(SolutionDir)$(Configuration) - - - - - - - - - - - - - Create - - - - - - - - - - - - - - \ No newline at end of file diff --git a/protocols/Tox/Tox_11.vcxproj.filters b/protocols/Tox/Tox_11.vcxproj.filters deleted file mode 100644 index 35422ff8dc..0000000000 --- a/protocols/Tox/Tox_11.vcxproj.filters +++ /dev/null @@ -1,62 +0,0 @@ - - - - - {86de5614-9de5-4ffc-bd34-21d9c671e172} - - - {ea03e4bb-b8dd-4b5b-b409-2513240d2511} - - - {283e5715-d541-4bda-9ec6-31b29865e1f0} - - - {b818611d-200d-4eb8-be7a-f15b396ae26d} - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files\tox - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/protocols/Tox/Tox_12.vcxproj b/protocols/Tox/Tox_12.vcxproj index c6b095ea9e..be437aec1f 100644 --- a/protocols/Tox/Tox_12.vcxproj +++ b/protocols/Tox/Tox_12.vcxproj @@ -77,13 +77,11 @@ $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ true - - Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true @@ -95,17 +93,18 @@ Windows true - $(ProfileDir)..\..\bin12\lib;lib + $(ProfileDir)..\..\bin12\lib;lib\x86 $(IntDir)$(TargetName).lib - comctl32.lib;user32.lib;libtox.lib false + false + libtox.lib;%(AdditionalDependencies) _DEBUG;%(PreprocessorDefinitions) ..\..\include\msapi - xcopy dll\*.dll $(SolutionDir)$(Configuration) + xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y @@ -124,15 +123,18 @@ Windows true - $(ProfileDir)..\..\bin12\lib;lib + $(ProfileDir)..\..\bin12\lib;lib\x64 $(IntDir)$(TargetName).lib - comctl32.lib;%(AdditionalDependencies) + libtox-x64.lib;%(AdditionalDependencies) false _DEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + @@ -140,7 +142,7 @@ Full true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) 4996;%(DisableSpecificWarnings) Use @@ -152,16 +154,16 @@ true true false - comctl32.lib;user32.lib;libtoxcore-0.lib - $(ProfileDir)..\..\bin12\lib;lib + $(ProfileDir)..\..\bin12\lib;lib\x86 $(IntDir)$(TargetName).lib + libtox.lib;%(AdditionalDependencies) NDEBUG;%(PreprocessorDefinitions) ..\..\include\msapi - xcopy dll\*.dll $(SolutionDir)$(Configuration) + xcopy dll\x86\*.dll $(SolutionDir)$(Configuration) /Y @@ -182,19 +184,24 @@ true true false - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin12\lib;lib + libtox-x64.lib;%(AdditionalDependencies) + $(ProfileDir)..\..\bin12\lib;lib\x64 $(IntDir)$(TargetName).lib NDEBUG;%(PreprocessorDefinitions) ..\..\include\msapi + + xcopy dll\x64\*.dll $(SolutionDir)$(Configuration)64 /Y + - + + + @@ -211,6 +218,7 @@ + diff --git a/protocols/Tox/Tox_12.vcxproj.filters b/protocols/Tox/Tox_12.vcxproj.filters index 35422ff8dc..327ae80404 100644 --- a/protocols/Tox/Tox_12.vcxproj.filters +++ b/protocols/Tox/Tox_12.vcxproj.filters @@ -7,12 +7,12 @@ {ea03e4bb-b8dd-4b5b-b409-2513240d2511} - - {283e5715-d541-4bda-9ec6-31b29865e1f0} - {b818611d-200d-4eb8-be7a-f15b396ae26d} + + {dcda5d79-c0d1-4515-9513-7eda6a003978} + @@ -24,12 +24,18 @@ Header Files - - Header Files\tox - Header Files + + Header Files\tox + + + Header Files\tox + + + Header Files\tox + @@ -58,5 +64,8 @@ Resource Files + + Resource Files + \ No newline at end of file diff --git a/protocols/Tox/dll/libtox.dll b/protocols/Tox/dll/libtox.dll deleted file mode 100644 index 208a9d7c5d..0000000000 Binary files a/protocols/Tox/dll/libtox.dll and /dev/null differ diff --git a/protocols/Tox/dll/x64/libtox.dll b/protocols/Tox/dll/x64/libtox.dll new file mode 100644 index 0000000000..3f28bbfbd3 Binary files /dev/null and b/protocols/Tox/dll/x64/libtox.dll differ diff --git a/protocols/Tox/dll/x86/libtox.dll b/protocols/Tox/dll/x86/libtox.dll new file mode 100644 index 0000000000..2ddede65a9 Binary files /dev/null and b/protocols/Tox/dll/x86/libtox.dll differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/as.exe b/protocols/Tox/docs/dlltolib/deflibcreator/as.exe new file mode 100644 index 0000000000..e1b3143100 Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/as.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe b/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe new file mode 100644 index 0000000000..4f5095abf8 Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/as64.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe b/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe new file mode 100644 index 0000000000..5969f5d4c2 Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/deflibcreator.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe new file mode 100644 index 0000000000..7874bdd13e Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe new file mode 100644 index 0000000000..6a41e5228c Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/dlltool64.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe new file mode 100644 index 0000000000..5215aecd5d Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest new file mode 100644 index 0000000000..2981431665 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/deflibcreator/link.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll new file mode 100644 index 0000000000..cbe888915c Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest new file mode 100644 index 0000000000..2981431665 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/deflibcreator/mspdb80.dll.2.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd b/protocols/Tox/docs/dlltolib/deflibcreator/src/build.cmd new file mode 100644 index 0000000000..abcf258d0a --- /dev/null +++ b/protocols/Tox/docs/dlltolib/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/docs/dlltolib/deflibcreator/src/deflib.manifest b/protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest new file mode 100644 index 0000000000..414433b643 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/deflibcreator/src/deflib.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp b/protocols/Tox/docs/dlltolib/deflibcreator/src/deflibcreator.cpp new file mode 100644 index 0000000000..6480fda7e3 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/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/docs/dlltolib/deflibcreator/src/dlc.ico b/protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico new file mode 100644 index 0000000000..aa524c729c Binary files /dev/null and b/protocols/Tox/docs/dlltolib/deflibcreator/src/dlc.ico differ diff --git a/protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc b/protocols/Tox/docs/dlltolib/deflibcreator/src/resource.rc new file mode 100644 index 0000000000..503ec99a76 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/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/docs/dlltolib/start.cmd b/protocols/Tox/docs/dlltolib/start.cmd new file mode 100644 index 0000000000..913dca85c7 --- /dev/null +++ b/protocols/Tox/docs/dlltolib/start.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/include/tox/tox.h b/protocols/Tox/include/tox/tox.h deleted file mode 100644 index 14426f31cc..0000000000 --- a/protocols/Tox/include/tox/tox.h +++ /dev/null @@ -1,666 +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); - -/* Sets whether we send read receipts for friendnumber. - * This function is not lazy, and it will fail if yesno is not (0 or 1). - */ -void tox_set_sends_receipts(Tox *tox, int32_t friendnumber, int yesno); - -/* 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); - - -/**********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 - * - * 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. - * - * 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 network byte order, HINT: use htons()) - * and public_key to setup connections - * - * address can be a hostname or an IP address (IPv4 or IPv6). - * if ipv6enabled is 0 (zero), the resolving sticks STRICTLY to IPv4 addresses - * if ipv6enabled is not 0 (zero), the resolving looks for IPv6 addresses first, - * then IPv4 addresses. - * - * 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, uint8_t ipv6enabled, - 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); - -/* - * Run this function at startup. - * - * Initializes a tox structure - * The type of communication socket depends on ipv6enabled: - * If set to 0 (zero), creates an IPv4 socket which subsequently only allows - * IPv4 communication - * If set to anything else, creates an IPv6 socket which allows both IPv4 AND - * IPv6 communication - * - * return allocated instance of tox on success. - * return 0 if there are problems. - */ -Tox *tox_new(uint8_t ipv6enabled); - -/* 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/include/tox/toxav.h b/protocols/Tox/include/tox/toxav.h deleted file mode 100644 index 0ded42bd56..0000000000 --- a/protocols/Tox/include/tox/toxav.h +++ /dev/null @@ -1,393 +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 ) ( int32_t, 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_OnError, - av_OnRequestTimeout, - av_OnPeerTimeout -} 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 { - 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; - uint32_t audio_VAD_tolerance; /* In ms */ - - uint32_t jbuf_capacity; /* Size of jitter buffer */ -} ToxAvCodecSettings; - -extern const ToxAvCodecSettings av_DefaultSettings; - -/** - * @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 callback The callback - * @param id One of the ToxAvCallbackID values - * @return void - */ -void toxav_register_callstate_callback (ToxAVCallback callback, ToxAvCallbackID id, void *userdata); - -/** - * @brief Register callback for recieving audio data - * - * @param callback The callback - * @return void - */ -void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int)); - -/** - * @brief Register callback for recieving video data - * - * @param callback The callback - * @return void - */ -void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *)); - -/** - * @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, ToxAvCallType call_type, 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, ToxAvCallType call_type ); - -/** - * @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 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, ToxAvCodecSettings *codec_settings, 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, int frame_size); - -/** - * @brief Send audio frame. - * - * @param av Handler. - * @param frame The frame (raw 16 bit signed pcm with AUDIO_CHANNELS channels audio.) - * @param frame_size Its size in number of frames/samples (one frame/sample is 16 bits or 2 bytes) - * frame size should be AUDIO_FRAME_SIZE. - * @return int - * @retval 0 Success. - * @retval ToxAvError On error. - */ -int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, int frame_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_transmission_type ( ToxAv *av, int32_t call_index, int peer ); - -/** - * @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 ); - -/** - * @brief Set queue limit - * - * @param av Handler - * @param call_index index - * @param limit the limit - * @return void - */ -int toxav_set_audio_queue_limit ( ToxAv *av, int32_t call_index, uint64_t limit ); - -/** - * @brief Set queue limit - * - * @param av Handler - * @param call_index index - * @param limit the limit - * @return void - */ -int toxav_set_video_queue_limit ( ToxAv *av, int32_t call_index, uint64_t limit ); - - -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/include/tox/toxdns.h b/protocols/Tox/include/tox/toxdns.h deleted file mode 100644 index a0cc323b43..0000000000 --- a/protocols/Tox/include/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/lib/libtox.def b/protocols/Tox/lib/libtox.def deleted file mode 100644 index 32b4bff8a7..0000000000 --- a/protocols/Tox/lib/libtox.def +++ /dev/null @@ -1,1728 +0,0 @@ -EXPORTS -Version -All -following -stamp -functions -names -name -Assoc_add_entry -Assoc_get_close_entries -Assoc_self_client_id_changed -ClientPair_quick_sort -DHT_addfriend -DHT_bootstrap -DHT_bootstrap_from_address -DHT_delfriend -DHT_get_close_list -DHT_get_shared_key_recv -DHT_get_shared_key_sent -DHT_getfriendip -DHT_getnodes -DHT_isconnected -DHT_load -DHT_save -DHT_size -LAN_ip -LANdiscovery_init -U16_to_bytes -U32_to_bytes -VERSION_STRING -VP8_UVSSE -__pth_gpointer_locked -__pthread_clock_nanosleep -__pthread_shallcancel -__xl_f -_celt_autocorr -_celt_lpc -_pthread_cleanup_dest -_pthread_get_state -_pthread_invoke_cancel -_pthread_key_dest -_pthread_rel_time_in_ms -_pthread_set_state -_pthread_setnobreak -_pthread_time_in_ms -_pthread_time_in_ms_from_timespec -_pthread_tryjoin -_sodium_alignedcalloc -accept_crypto_connection -add_ext_header -add_groupchat -add_header -add_peer -add_tcp_relay -add_tcp_relay_peer -add_to_ping -addr_parse_ip -addr_resolve -addr_resolve_or_parse_ip -addto_lists -alg_quant -alg_unquant -amp2Log2 -anti_collapse -append_header_to_string -at_startup_ran -av_DefaultSettings -bs_list_add -bs_list_find -bs_list_free -bs_list_init -bs_list_remove -bs_list_trim -build_header -bytes_to_U16 -bytes_to_U32 -calculate_sum_sq -call_id_bigger -callback_file_control -callback_file_data -callback_file_sendrequest -callback_friendrequest -callback_groupaction -callback_groupmessage -callback_namelistchange -celt_decode_with_ec -celt_decoder_get_size -celt_decoder_init -celt_encode_with_ec -celt_encoder_get_size -celt_encoder_init -celt_fir -celt_iir -celt_lcg_rand -celt_pitch_xcorr_c -celt_preemphasis -chat_bootstrap -chat_bootstrap_nonlazy -check_control_input -check_fragments_for_errors -check_late_message -closelist_nodes -clt_mdct_backward -clt_mdct_forward -codec_init_session -codec_terminate_session -comb_filter -compute_allocation -compute_band_energies -compute_frame_size -compute_stereo_width -cond_print -cond_print_set -connection_data_handler -connection_lossy_data_handler -connection_status_handler -copy_chatlist -copy_connected_tcp_relays -copy_friendlist -count_chatlist -count_friendlist -create_announce_request -create_data_request -create_onion_packet -create_onion_path -create_queue -create_request -crypto_box -crypto_box_afternm -crypto_box_beforenm -crypto_box_beforenmbytes -crypto_box_boxzerobytes -crypto_box_curve25519xsalsa20poly1305 -crypto_box_curve25519xsalsa20poly1305_afternm -crypto_box_curve25519xsalsa20poly1305_beforenm -crypto_box_curve25519xsalsa20poly1305_keypair -crypto_box_curve25519xsalsa20poly1305_open -crypto_box_curve25519xsalsa20poly1305_open_afternm -crypto_box_curve25519xsalsa20poly1305_seed_keypair -crypto_box_keypair -crypto_box_macbytes -crypto_box_noncebytes -crypto_box_open -crypto_box_open_afternm -crypto_box_primitive -crypto_box_publickeybytes -crypto_box_secretkeybytes -crypto_box_seed_keypair -crypto_box_seedbytes -crypto_box_zerobytes -crypto_cmp -crypto_connection_status -crypto_core_hsalsa20 -crypto_core_salsa20 -crypto_hash_sha256 -crypto_hash_sha256_final -crypto_hash_sha256_init -crypto_hash_sha256_update -crypto_hash_sha512 -crypto_hash_sha512_final -crypto_hash_sha512_init -crypto_hash_sha512_update -crypto_kill -crypto_num_free_sendqueue_slots -crypto_onetimeauth_pick_best_implementation -crypto_onetimeauth_poly1305 -crypto_onetimeauth_poly1305_donna -crypto_onetimeauth_poly1305_donna_implementation -crypto_onetimeauth_poly1305_donna_implementation_name -crypto_onetimeauth_poly1305_donna_verify -crypto_onetimeauth_poly1305_implementation_name -crypto_onetimeauth_poly1305_set_implementation -crypto_onetimeauth_poly1305_verify -crypto_run_interval -crypto_scalarmult_curve25519 -crypto_scalarmult_curve25519_base -crypto_scalarmult_curve25519_ref10_fe_0 -crypto_scalarmult_curve25519_ref10_fe_1 -crypto_scalarmult_curve25519_ref10_fe_add -crypto_scalarmult_curve25519_ref10_fe_copy -crypto_scalarmult_curve25519_ref10_fe_cswap -crypto_scalarmult_curve25519_ref10_fe_frombytes -crypto_scalarmult_curve25519_ref10_fe_invert -crypto_scalarmult_curve25519_ref10_fe_mul -crypto_scalarmult_curve25519_ref10_fe_mul121666 -crypto_scalarmult_curve25519_ref10_fe_sq -crypto_scalarmult_curve25519_ref10_fe_sub -crypto_scalarmult_curve25519_ref10_fe_tobytes -crypto_secretbox_xsalsa20poly1305 -crypto_secretbox_xsalsa20poly1305_open -crypto_stream_salsa20 -crypto_stream_salsa20_xor -crypto_stream_xsalsa20 -crypto_stream_xsalsa20_xor -crypto_verify_16 -crypto_verify_32 -cryptopacket_registerhandler -current_time_monotonic -custom_lossless_packet_registerhandler -custom_lossy_packet_registerhandler -decode_pulses -decrypt_data -decrypt_data_symmetric -del_groupchat -denormalise_bands -dequeue -do_Assoc -do_DHT -do_TCP_connection -do_TCP_server -do_friends -do_groupchat -do_hardening -do_messenger -do_net_crypto -do_onion_client -do_sema_b_wait_intern -do_to_ping -downmix_float -downmix_int -eMeans -ec_dec_bit_logp -ec_dec_bits -ec_dec_icdf -ec_dec_init -ec_dec_uint -ec_dec_update -ec_decode -ec_decode_bin -ec_enc_bit_logp -ec_enc_bits -ec_enc_done -ec_enc_icdf -ec_enc_init -ec_enc_patch_initial_bits -ec_enc_shrink -ec_enc_uint -ec_encode -ec_encode_bin -ec_laplace_decode -ec_laplace_encode -ec_tell_frac -empty_queue -encode_pulses -encode_size -encrypt_data -encrypt_data_symmetric -encrypt_precompute -energy_VAD -extract_ext_header -extract_header -file_control -file_data -file_dataremaining -file_sendrequest -find_call -flush_peer_type -frame_size_select -free_message -friend_ips -friendreq_init -get_close_nodes -get_connection_dht_key -get_friendlist -get_nospam -get_num_online_friends -get_shared_key -getaddress -getclient_id -getfriend_id -getname -getself_name -group_action_send -group_client_names -group_message_send -group_names -group_newpeer -group_number_peers -group_numpeers -group_peername -group_sendaction -group_sendmessage -haar1 -handle_groupchatpacket -handle_recv_cancel -handle_recv_end -handle_recv_ending -handle_recv_error -handle_recv_invite -handle_recv_reject -handle_recv_ringing -handle_recv_start -handle_recv_starting -handle_remote_connection_change -handle_request -handle_timeout -host_to_net -hysteresis_decision -id_closest -id_copy -id_equal -increment_nonce -increment_nonce_number -init_audio_decoder -init_audio_encoder -init_call -init_caps -init_video_decoder -init_video_encoder -invite_friend -invoke_callback -ip_copy -ip_equal -ip_init -ip_isset -ip_ntoa -ip_pack -ip_reset -ip_unpack -ipport_copy -ipport_equal -ipport_isset -ipport_pack -ipport_unpack -is_timeout -isqrt32 -join_groupchat -kill_Assoc -kill_DHT -kill_TCP_connection -kill_TCP_server -kill_groupchat -kill_messenger -kill_net_crypto -kill_networking -kill_onion -kill_onion_announce -kill_onion_client -kill_ping -kill_sock -load_keys -load_state -m_addfriend -m_addfriend_norequest -m_callback_action -m_callback_connectionstatus -m_callback_connectionstatus_internal_av -m_callback_friendmessage -m_callback_friendrequest -m_callback_group_action -m_callback_group_invite -m_callback_group_message -m_callback_group_namelistchange -m_callback_msi_packet -m_callback_namechange -m_callback_read_receipt -m_callback_statusmessage -m_callback_typingchange -m_callback_userstatus -m_copy_self_statusmessage -m_copy_statusmessage -m_delfriend -m_friend_exists -m_get_friend_connectionstatus -m_get_istyping -m_get_last_online -m_get_name_size -m_get_self_name_size -m_get_self_statusmessage_size -m_get_self_userstatus -m_get_statusmessage_size -m_get_userstatus -m_group_peername -m_msi_packet -m_sendaction -m_sendaction_withid -m_sendmessage -m_sendmessage_withid -m_set_sends_receipts -m_set_statusmessage -m_set_userstatus -m_set_usertyping -message_to_send -messenger_load -messenger_run_interval -messenger_save -messenger_size -min_jbuf_size -min_readiness_idx -mlp_process -msg_parse -msi_answer -msi_cancel -msi_handle_packet -msi_hangup -msi_init_session -msi_invite -msi_msg_set_callid -msi_msg_set_calltype -msi_msg_set_info -msi_msg_set_reason -msi_new_message -msi_register_callback -msi_reject -msi_stopcall -msi_terminate_session -mutex_print -mutex_print_set -net -networking_at_startup -networking_poll -networking_registerhandler -new_Assoc -new_Assoc_default -new_DHT -new_TCP_connection -new_TCP_server -new_connection_handler -new_crypto_connection -new_filesender -new_groupchat -new_keys -new_messenger -new_net_crypto -new_networking -new_nonce -new_onion -new_onion_announce -new_onion_client -new_ping -new_symmetric_key -normalise_bands -onion_addfriend -onion_delfriend -onion_friend_num -onion_getfriend_DHT_pubkey -onion_getfriendip -onion_response_handler -onion_send_1 -onion_set_friend_DHT_pubkey -onion_set_friend_online -oniondata_registerhandler -oob_data_handler -optimize_framesize -opus_custom_decoder_ctl -opus_custom_encoder_ctl -opus_custom_mode_create -opus_decode -opus_decode_float -opus_decode_native -opus_decoder_create -opus_decoder_ctl -opus_decoder_destroy -opus_decoder_get_nb_samples -opus_decoder_get_size -opus_decoder_init -opus_encode -opus_encode_float -opus_encode_native -opus_encoder_create -opus_encoder_ctl -opus_encoder_destroy -opus_encoder_get_size -opus_encoder_init -opus_fft -opus_get_version_string -opus_ifft -opus_multistream_packet_pad -opus_multistream_packet_unpad -opus_packet_get_bandwidth -opus_packet_get_nb_channels -opus_packet_get_nb_frames -opus_packet_get_nb_samples -opus_packet_get_samples_per_frame -opus_packet_pad -opus_packet_parse -opus_packet_parse_impl -opus_packet_unpad -opus_pcm_soft_clip -opus_repacketizer_cat -opus_repacketizer_create -opus_repacketizer_destroy -opus_repacketizer_get_nb_frames -opus_repacketizer_get_size -opus_repacketizer_init -opus_repacketizer_out -opus_repacketizer_out_range -opus_repacketizer_out_range_impl -opus_strerror -pack_nodes -parse_message -parse_raw_data -patch_transient_decision -ping_array_add -ping_array_check -ping_array_free_all -ping_array_init -pitch_downsample -pitch_search -pthread_attr_destroy -pthread_attr_getdetachstate -pthread_attr_getinheritsched -pthread_attr_getscope -pthread_attr_getstackaddr -pthread_attr_getstacksize -pthread_attr_init -pthread_attr_setdetachstate -pthread_attr_setinheritsched -pthread_attr_setscope -pthread_attr_setstackaddr -pthread_attr_setstacksize -pthread_cancel -pthread_cond_broadcast -pthread_cond_destroy -pthread_cond_init -pthread_cond_signal -pthread_cond_timedwait -pthread_cond_timedwait_relative -pthread_cond_wait -pthread_condattr_destroy -pthread_condattr_getclock -pthread_condattr_getpshared -pthread_condattr_init -pthread_condattr_setclock -pthread_condattr_setpshared -pthread_create -pthread_create_wrapper -pthread_delay_np -pthread_delay_np_ms -pthread_detach -pthread_equal -pthread_exit -pthread_get_concurrency -pthread_getclean -pthread_getconcurrency -pthread_getevent -pthread_gethandle -pthread_getspecific -pthread_join -pthread_key_create -pthread_key_delete -pthread_kill -pthread_mutex_destroy -pthread_mutex_init -pthread_mutex_lock -pthread_mutex_timedlock -pthread_mutex_trylock -pthread_mutex_unlock -pthread_mutexattr_destroy -pthread_mutexattr_getprioceiling -pthread_mutexattr_getprotocol -pthread_mutexattr_getpshared -pthread_mutexattr_gettype -pthread_mutexattr_init -pthread_mutexattr_setprioceiling -pthread_mutexattr_setprotocol -pthread_mutexattr_setpshared -pthread_mutexattr_settype -pthread_num_processors_np -pthread_once -pthread_rwlock_destroy -pthread_rwlock_init -pthread_rwlock_rdlock -pthread_rwlock_timedrdlock -pthread_rwlock_timedwrlock -pthread_rwlock_tryrdlock -pthread_rwlock_trywrlock -pthread_rwlock_unlock -pthread_rwlock_wrlock -pthread_rwlockattr_destroy -pthread_rwlockattr_getpshared -pthread_rwlockattr_init -pthread_rwlockattr_setpshared -pthread_self -pthread_set_concurrency -pthread_set_num_processors_np -pthread_setcancelstate -pthread_setcanceltype -pthread_setconcurrency -pthread_setspecific -pthread_spin_destroy -pthread_spin_init -pthread_spin_lock -pthread_spin_trylock -pthread_spin_unlock -pthread_testcancel -pthread_timechange_handler_np -pthread_tls_init -public_key_valid -quant_all_bands -quant_coarse_energy -quant_energy_finalise -quant_fine_energy -queue -random_64b -random_int -random_node -random_nodes_path -random_nonce -randombytes -randombytes_buf -randombytes_close -randombytes_implementation_name -randombytes_random -randombytes_set_implementation -randombytes_stir -randombytes_sysrandom -randombytes_sysrandom_buf -randombytes_sysrandom_close -randombytes_sysrandom_implementation -randombytes_sysrandom_implementation_name -randombytes_sysrandom_stir -randombytes_sysrandom_uniform -randombytes_uniform -read_TCP_length -read_TCP_packet -read_packet_TCP_secure_connection -realloc_friendlist -reconfigure_video_encoder_bitrate -reconfigure_video_encoder_resolution -recv_tcp_relay_handler -remove_doubling -remove_request_received -renormalise_vector -resampling_factor -route_packet -route_tofriend -routing_data_handler -routing_response_handler -routing_status_handler -rtp_free_msg -rtp_handle_packet -rtp_init_session -rtp_new_message -rtp_send_msg -rtp_terminate_session -run_analysis -rwl_print -rwl_print_set -save_keys -send_LANdiscovery -send_announce_request -send_custom_lossless_packet -send_custom_lossy_packet -send_data -send_data_request -send_disconnect_request -send_error -send_friendrequest -send_lossy_cryptpacket -send_message -send_onion_data -send_onion_packet -send_onion_request -send_onion_response -send_oob_packet -send_ping_request -send_routing_request -sendpacket -set_callback_handle_recv_1 -set_connection_dht_public_key -set_direct_ip_port -set_filter_function -set_nick -set_nospam -set_socket_dualstack -set_socket_nonblock -set_socket_nosigpipe -set_tcp_connection_number -setfriendname -setname -silk_A2NLSF -silk_A2NLSF_FLP -silk_CB_lags_stage2 -silk_CB_lags_stage2_10_ms -silk_CB_lags_stage3 -silk_CB_lags_stage3_10_ms -silk_CNG -silk_CNG_Reset -silk_Decode -silk_Encode -silk_Get_Decoder_Size -silk_Get_Encoder_Size -silk_HP_variable_cutoff -silk_InitDecoder -silk_InitEncoder -silk_LBRR_flags_iCDF_ptr -silk_LPC_analysis_filter -silk_LPC_analysis_filter_FLP -silk_LPC_inverse_pred_gain -silk_LPC_inverse_pred_gain_FLP -silk_LP_variable_cutoff -silk_LSFCosTab_FIX_Q12 -silk_LTPScales_table_Q14 -silk_LTP_analysis_filter_FLP -silk_LTP_gain_BITS_Q5_ptrs -silk_LTP_gain_iCDF_ptrs -silk_LTP_gain_middle_avg_RD_Q14 -silk_LTP_per_index_iCDF -silk_LTP_scale_ctrl_FLP -silk_LTP_vq_gain_ptrs_Q7 -silk_LTP_vq_ptrs_Q7 -silk_LTP_vq_sizes -silk_LTPscale_iCDF -silk_Lag_range_stage3 -silk_Lag_range_stage3_10_ms -silk_NLSF2A -silk_NLSF2A_FLP -silk_NLSF_CB_NB_MB -silk_NLSF_CB_WB -silk_NLSF_EXT_iCDF -silk_NLSF_VQ -silk_NLSF_VQ_weights_laroia -silk_NLSF_decode -silk_NLSF_del_dec_quant -silk_NLSF_encode -silk_NLSF_interpolation_factor_iCDF -silk_NLSF_stabilize -silk_NLSF_unpack -silk_NSQ -silk_NSQ_del_dec -silk_NSQ_wrapper_FLP -silk_PLC -silk_PLC_Reset -silk_PLC_glue_frames -silk_Quantization_Offsets_Q10 -silk_Resampler_1_2_COEFS -silk_Resampler_1_3_COEFS -silk_Resampler_1_4_COEFS -silk_Resampler_1_6_COEFS -silk_Resampler_2_3_COEFS -silk_Resampler_2_3_COEFS_LQ -silk_Resampler_3_4_COEFS -silk_SNR_table_Q1 -silk_TargetRate_table_MB -silk_TargetRate_table_NB -silk_TargetRate_table_WB -silk_Transition_LP_A_Q28 -silk_Transition_LP_B_Q28 -silk_VAD_GetSA_Q8 -silk_VAD_Init -silk_VQ_WMat_EC -silk_ana_filt_bank_1 -silk_apply_sine_window_FLP -silk_autocorrelation_FLP -silk_biquad_alt -silk_burg_modified_FLP -silk_bwexpander -silk_bwexpander_32 -silk_bwexpander_FLP -silk_control_SNR -silk_control_audio_bandwidth -silk_control_encoder -silk_corrMatrix_FLP -silk_corrVector_FLP -silk_decode_core -silk_decode_frame -silk_decode_indices -silk_decode_parameters -silk_decode_pitch -silk_decode_pulses -silk_decode_signs -silk_decoder_set_fs -silk_delta_gain_iCDF -silk_encode_do_VAD_FLP -silk_encode_frame_FLP -silk_encode_indices -silk_encode_pulses -silk_encode_signs -silk_energy_FLP -silk_find_LPC_FLP -silk_find_LTP_FLP -silk_find_pitch_lags_FLP -silk_find_pred_coefs_FLP -silk_gain_iCDF -silk_gains_ID -silk_gains_dequant -silk_gains_quant -silk_init_decoder -silk_init_encoder -silk_inner_prod_aligned_scale -silk_inner_product_FLP -silk_insertion_sort_decreasing_FLP -silk_insertion_sort_increasing -silk_insertion_sort_increasing_all_values_int16 -silk_interpolate -silk_k2a_FLP -silk_levinsondurbin_FLP -silk_lin2log -silk_log2lin -silk_lsb_iCDF -silk_max_pulses_table -silk_nb_cbk_searchs_stage3 -silk_noise_shape_analysis_FLP -silk_pitch_analysis_core_FLP -silk_pitch_contour_10_ms_NB_iCDF -silk_pitch_contour_10_ms_iCDF -silk_pitch_contour_NB_iCDF -silk_pitch_contour_iCDF -silk_pitch_delta_iCDF -silk_pitch_lag_iCDF -silk_prefilter_FLP -silk_process_NLSFs -silk_process_NLSFs_FLP -silk_process_gains_FLP -silk_pulses_per_block_BITS_Q5 -silk_pulses_per_block_iCDF -silk_quant_LTP_gains -silk_quant_LTP_gains_FLP -silk_rate_levels_BITS_Q5 -silk_rate_levels_iCDF -silk_regularize_correlations_FLP -silk_resampler -silk_resampler_down2 -silk_resampler_down2_3 -silk_resampler_frac_FIR_12 -silk_resampler_init -silk_resampler_private_AR2 -silk_resampler_private_IIR_FIR -silk_resampler_private_down_FIR -silk_resampler_private_up2_HQ -silk_resampler_private_up2_HQ_wrapper -silk_residual_energy_FLP -silk_residual_energy_covar_FLP -silk_scale_copy_vector_FLP -silk_scale_vector_FLP -silk_schur_FLP -silk_shell_code_table0 -silk_shell_code_table1 -silk_shell_code_table2 -silk_shell_code_table3 -silk_shell_code_table_offsets -silk_shell_decoder -silk_shell_encoder -silk_sigm_Q15 -silk_sign_iCDF -silk_solve_LDL_FLP -silk_stereo_LR_to_MS -silk_stereo_MS_to_LR -silk_stereo_decode_mid_only -silk_stereo_decode_pred -silk_stereo_encode_mid_only -silk_stereo_encode_pred -silk_stereo_find_predictor -silk_stereo_only_code_mid_iCDF -silk_stereo_pred_joint_iCDF -silk_stereo_pred_quant_Q13 -silk_stereo_quant_pred -silk_sum_sqr_shift -silk_type_offset_VAD_iCDF -silk_type_offset_no_VAD_iCDF -silk_uniform3_iCDF -silk_uniform4_iCDF -silk_uniform5_iCDF -silk_uniform6_iCDF -silk_uniform8_iCDF -silk_warped_autocorrelation_FLP -sock_valid -sodium_bin2hex -sodium_hex2bin -sodium_init -sodium_memcmp -sodium_memzero -sodium_mlock -sodium_munlock -sodium_runtime_get_cpu_features -sodium_runtime_has_neon -sodium_runtime_has_sse2 -sodium_runtime_has_sse3 -spreading_decision -stereo_itheta -t_randomstr -terminate_call -terminate_queue -tf_select_table -thread_print -thread_print_set -timer_alloc -timer_init_session -timer_poll -timer_release -timer_terminate_session -to_host_family -to_net_family -tonality_analysis -tonality_get_info -tox_add_friend -tox_add_friend_norequest -tox_add_groupchat -tox_bootstrap_from_address -tox_callback_connection_status -tox_callback_file_control -tox_callback_file_data -tox_callback_file_send_request -tox_callback_friend_action -tox_callback_friend_message -tox_callback_friend_request -tox_callback_group_action -tox_callback_group_invite -tox_callback_group_message -tox_callback_group_namelist_change -tox_callback_name_change -tox_callback_read_receipt -tox_callback_status_message -tox_callback_typing_change -tox_callback_user_status -tox_count_chatlist -tox_count_friendlist -tox_decrypt_dns3_TXT -tox_del_friend -tox_del_groupchat -tox_dns3_kill -tox_dns3_new -tox_do -tox_do_interval -tox_file_data_remaining -tox_file_data_size -tox_file_send_control -tox_file_send_data -tox_friend_exists -tox_generate_dns3_string -tox_get_address -tox_get_chatlist -tox_get_client_id -tox_get_friend_connection_status -tox_get_friend_number -tox_get_friendlist -tox_get_is_typing -tox_get_last_online -tox_get_name -tox_get_name_size -tox_get_nospam -tox_get_num_online_friends -tox_get_self_name -tox_get_self_name_size -tox_get_self_status_message -tox_get_self_status_message_size -tox_get_self_user_status -tox_get_status_message -tox_get_status_message_size -tox_get_user_status -tox_group_action_send -tox_group_get_names -tox_group_message_send -tox_group_number_peers -tox_group_peername -tox_invite_friend -tox_isconnected -tox_join_groupchat -tox_kill -tox_load -tox_new -tox_new_file_sender -tox_save -tox_send_action -tox_send_action_withid -tox_send_message -tox_send_message_withid -tox_set_name -tox_set_nospam -tox_set_sends_receipts -tox_set_status_message -tox_set_user_is_typing -tox_set_user_status -tox_size -toxav_answer -toxav_call -toxav_cancel -toxav_capability_supported -toxav_get_call_state -toxav_get_peer_id -toxav_get_peer_transmission_type -toxav_get_tox -toxav_handle_packet -toxav_hangup -toxav_has_activity -toxav_kill -toxav_kill_transmission -toxav_new -toxav_prepare_audio_frame -toxav_prepare_transmission -toxav_prepare_video_frame -toxav_register_audio_recv_callback -toxav_register_callstate_callback -toxav_register_video_recv_callback -toxav_reject -toxav_send_audio -toxav_send_rtp_payload -toxav_send_video -toxav_stop_call -unix_time -unix_time_update -unpack_nodes -unquant_coarse_energy -unquant_energy_finalise -unquant_fine_energy -vp8_ac2quant -vp8_ac_uv_quant -vp8_ac_yquant -vp8_activity_masking -vp8_adjust_key_frame_context -vp8_alloc_compressor_data -vp8_alloc_frame_buffers -vp8_auto_select_speed -vp8_bilinear_filters -vp8_bilinear_filters_x86_4 -vp8_bilinear_filters_x86_8 -vp8_bilinear_predict16x16 -vp8_bilinear_predict16x16_c -vp8_bilinear_predict16x16_mmx -vp8_bilinear_predict16x16_sse2 -vp8_bilinear_predict16x16_ssse3 -vp8_bilinear_predict4x4 -vp8_bilinear_predict4x4_c -vp8_bilinear_predict4x4_mmx -vp8_bilinear_predict8x4 -vp8_bilinear_predict8x4_c -vp8_bilinear_predict8x4_mmx -vp8_bilinear_predict8x8 -vp8_bilinear_predict8x8_c -vp8_bilinear_predict8x8_mmx -vp8_bilinear_predict8x8_sse2 -vp8_bilinear_predict8x8_ssse3 -vp8_bits_per_mb -vp8_blend_b_c -vp8_blend_mb_inner_c -vp8_blend_mb_outer_c -vp8_block2above -vp8_block2left -vp8_block_error -vp8_block_error_c -vp8_block_error_mmx -vp8_block_error_xmm -vp8_bmode_encodings -vp8_bmode_prob -vp8_bmode_tree -vp8_build_block_doffsets -vp8_build_block_offsets -vp8_build_component_cost_table -vp8_build_inter16x16_predictors_mb -vp8_build_inter16x16_predictors_mbuv -vp8_build_inter16x16_predictors_mby -vp8_build_inter4x4_predictors_mbuv -vp8_build_inter_predictors_b -vp8_build_inter_predictors_mb -vp8_build_intra_predictors_mbuv_s -vp8_build_intra_predictors_mbuv_s_c -vp8_build_intra_predictors_mbuv_s_sse2 -vp8_build_intra_predictors_mbuv_s_ssse3 -vp8_build_intra_predictors_mby_s -vp8_build_intra_predictors_mby_s_c -vp8_build_intra_predictors_mby_s_sse2 -vp8_build_intra_predictors_mby_s_ssse3 -vp8_cal_sad -vp8_calc_ref_frame_costs -vp8_calc_ss_err -vp8_change_config -vp8_clear_system_state -vp8_clear_system_state_c -vp8_coef_bands -vp8_coef_encodings -vp8_coef_tree -vp8_coef_update_probs -vp8_compute_frame_size_bounds -vp8_convert_rfct_to_prob -vp8_copy32xn -vp8_copy32xn_c -vp8_copy32xn_sse2 -vp8_copy32xn_sse3 -vp8_copy_and_extend_frame -vp8_copy_and_extend_frame_with_rect -vp8_copy_mem16x16 -vp8_copy_mem16x16_c -vp8_copy_mem16x16_mmx -vp8_copy_mem16x16_sse2 -vp8_copy_mem8x4 -vp8_copy_mem8x4_c -vp8_copy_mem8x4_mmx -vp8_copy_mem8x8 -vp8_copy_mem8x8_c -vp8_copy_mem8x8_mmx -vp8_cost_mv_ref -vp8_cost_tokens -vp8_cost_tokens2 -vp8_create_common -vp8_create_compressor -vp8_create_decoder_instances -vp8_ctf_maps -vp8_dc2quant -vp8_dc_only_idct_add -vp8_dc_only_idct_add_c -vp8_dc_only_idct_add_mmx -vp8_dc_quant -vp8_dc_uv_quant -vp8_dct_value_cost_ptr -vp8_dct_value_tokens_ptr -vp8_de_alloc_frame_buffers -vp8_deblock -vp8_decode_frame -vp8_decode_mb_tokens -vp8_decode_mode_mvs -vp8_decoder_create_threads -vp8_decoder_remove_threads -vp8_default_bmode_probs -vp8_default_coef_probs -vp8_default_inv_zig_zag -vp8_default_mv_context -vp8_default_zig_zag1d -vp8_default_zig_zag_mask -vp8_denoiser_allocate -vp8_denoiser_denoise_mb -vp8_denoiser_filter -vp8_denoiser_filter_c -vp8_denoiser_filter_sse2 -vp8_denoiser_free -vp8_dequant_idct_add -vp8_dequant_idct_add_c -vp8_dequant_idct_add_mmx -vp8_dequant_idct_add_uv_block -vp8_dequant_idct_add_uv_block_c -vp8_dequant_idct_add_uv_block_mmx -vp8_dequant_idct_add_uv_block_sse2 -vp8_dequant_idct_add_y_block -vp8_dequant_idct_add_y_block_c -vp8_dequant_idct_add_y_block_mmx -vp8_dequant_idct_add_y_block_sse2 -vp8_dequantize_b -vp8_dequantize_b_c -vp8_dequantize_b_impl_mmx -vp8_dequantize_b_mmx -vp8_diamond_search_sad -vp8_diamond_search_sad_c -vp8_diamond_search_sadx4 -vp8_encode_frame -vp8_encode_inter16x16 -vp8_encode_inter16x16y -vp8_encode_intra -vp8_encode_intra16x16mbuv -vp8_encode_intra16x16mby -vp8_encode_intra4x4block -vp8_encode_intra4x4mby -vp8_encode_motion_vector -vp8_encode_value -vp8_end_first_pass -vp8_end_second_pass -vp8_estimate_entropy_savings -vp8_extend_mb_row -vp8_extra_bits -vp8_fast_quantize_b -vp8_fast_quantize_b_c -vp8_fast_quantize_b_impl_mmx -vp8_fast_quantize_b_mmx -vp8_fast_quantize_b_pair_c -vp8_fast_quantize_b_sse2 -vp8_fast_quantize_b_ssse3 -vp8_filter_block1d16_h6_only_sse2 -vp8_filter_block1d16_h6_sse2 -vp8_filter_block1d16_h6_ssse3 -vp8_filter_block1d16_v6_sse2 -vp8_filter_block1d16_v6_ssse3 -vp8_filter_block1d4_h6_ssse3 -vp8_filter_block1d4_v6_ssse3 -vp8_filter_block1d8_h6_only_sse2 -vp8_filter_block1d8_h6_sse2 -vp8_filter_block1d8_h6_ssse3 -vp8_filter_block1d8_v6_only_sse2 -vp8_filter_block1d8_v6_sse2 -vp8_filter_block1d8_v6_ssse3 -vp8_filter_block1d_h6_mmx -vp8_filter_block1dc_v6_mmx -vp8_filter_block2d_bil4x4_var_mmx -vp8_filter_block2d_bil_var_mmx -vp8_filter_block2d_bil_var_sse2 -vp8_filter_block2d_bil_var_ssse3 -vp8_filter_by_weight16x16 -vp8_filter_by_weight16x16_c -vp8_filter_by_weight16x16_sse2 -vp8_filter_by_weight4x4_c -vp8_filter_by_weight8x8 -vp8_filter_by_weight8x8_c -vp8_filter_by_weight8x8_sse2 -vp8_find_best_half_pixel_step -vp8_find_best_sub_pixel_step -vp8_find_best_sub_pixel_step_iteratively -vp8_find_near_mvs -vp8_find_near_mvs_bias -vp8_first_pass -vp8_fix_contexts -vp8_full_search_sad -vp8_full_search_sad_c -vp8_full_search_sadx3 -vp8_full_search_sadx8 -vp8_gaussian -vp8_get16x16var_sse2 -vp8_get4x4sse_cs -vp8_get4x4sse_cs_c -vp8_get4x4sse_cs_mmx -vp8_get4x4var_mmx -vp8_get8x8var_mmx -vp8_get8x8var_sse2 -vp8_get_compressed_data -vp8_get_inter_mbpred_error -vp8_get_mb_ss -vp8_get_mb_ss_c -vp8_get_mb_ss_mmx -vp8_get_mb_ss_sse2 -vp8_get_preview_raw_frame -vp8_get_quantizer -vp8_get_reference -vp8_gf_boost_qadjustment -vp8_half_horiz_variance16x_h_sse2 -vp8_half_horiz_variance8x_h_sse2 -vp8_half_horiz_vert_variance16x_h_sse2 -vp8_half_horiz_vert_variance8x_h_sse2 -vp8_half_vert_variance16x_h_sse2 -vp8_half_vert_variance8x_h_sse2 -vp8_hex_search -vp8_horizontal_line_2_1_scale_c -vp8_horizontal_line_5_3_scale_c -vp8_horizontal_line_5_4_scale_c -vp8_idct_dequant_0_2x_sse2 -vp8_idct_dequant_dc_0_2x_sse2 -vp8_idct_dequant_dc_full_2x_sse2 -vp8_idct_dequant_full_2x_sse2 -vp8_init3smotion_compensation -vp8_init_dsmotion_compensation -vp8_init_first_pass -vp8_init_mbmode_probs -vp8_init_mode_costs -vp8_init_second_pass -vp8_initialize_rd_consts -vp8_intra4x4_predict_c -vp8_intra_pred_uv_dc128_mmx -vp8_intra_pred_uv_dc_mmx2 -vp8_intra_pred_uv_dcleft_mmx2 -vp8_intra_pred_uv_dctop_mmx2 -vp8_intra_pred_uv_ho_mmx2 -vp8_intra_pred_uv_ho_ssse3 -vp8_intra_pred_uv_tm_sse2 -vp8_intra_pred_uv_tm_ssse3 -vp8_intra_pred_uv_ve_mmx -vp8_intra_pred_y_dc128_sse2 -vp8_intra_pred_y_dc_sse2 -vp8_intra_pred_y_dcleft_sse2 -vp8_intra_pred_y_dctop_sse2 -vp8_intra_pred_y_ho_sse2 -vp8_intra_pred_y_tm_sse2 -vp8_intra_pred_y_tm_ssse3 -vp8_intra_pred_y_ve_sse2 -vp8_kf_bmode_prob -vp8_kf_uv_mode_prob -vp8_kf_ymode_encodings -vp8_kf_ymode_prob -vp8_kf_ymode_tree -vp8_lookahead_depth -vp8_lookahead_destroy -vp8_lookahead_init -vp8_lookahead_peek -vp8_lookahead_pop -vp8_lookahead_push -vp8_loop_filter_bh -vp8_loop_filter_bh_c -vp8_loop_filter_bh_mmx -vp8_loop_filter_bh_sse2 -vp8_loop_filter_bhs_c -vp8_loop_filter_bhs_mmx -vp8_loop_filter_bhs_sse2 -vp8_loop_filter_bv -vp8_loop_filter_bv_c -vp8_loop_filter_bv_mmx -vp8_loop_filter_bv_sse2 -vp8_loop_filter_bvs_c -vp8_loop_filter_bvs_mmx -vp8_loop_filter_bvs_sse2 -vp8_loop_filter_frame -vp8_loop_filter_frame_init -vp8_loop_filter_frame_yonly -vp8_loop_filter_horizontal_edge_c -vp8_loop_filter_horizontal_edge_mmx -vp8_loop_filter_horizontal_edge_sse2 -vp8_loop_filter_horizontal_edge_uv_sse2 -vp8_loop_filter_init -vp8_loop_filter_mbh -vp8_loop_filter_mbh_c -vp8_loop_filter_mbh_mmx -vp8_loop_filter_mbh_sse2 -vp8_loop_filter_mbv -vp8_loop_filter_mbv_c -vp8_loop_filter_mbv_mmx -vp8_loop_filter_mbv_sse2 -vp8_loop_filter_partial_frame -vp8_loop_filter_row_normal -vp8_loop_filter_row_simple -vp8_loop_filter_simple_bh -vp8_loop_filter_simple_bv -vp8_loop_filter_simple_horizontal_edge_c -vp8_loop_filter_simple_horizontal_edge_mmx -vp8_loop_filter_simple_horizontal_edge_sse2 -vp8_loop_filter_simple_mbh -vp8_loop_filter_simple_mbv -vp8_loop_filter_simple_vertical_edge_c -vp8_loop_filter_simple_vertical_edge_mmx -vp8_loop_filter_simple_vertical_edge_sse2 -vp8_loop_filter_update_sharpness -vp8_loop_filter_vertical_edge_c -vp8_loop_filter_vertical_edge_mmx -vp8_loop_filter_vertical_edge_sse2 -vp8_loop_filter_vertical_edge_uv_sse2 -vp8_loopfilter_frame -vp8_machine_specific_config -vp8_mb_feature_data_bits -vp8_mb_init_dequantizer -vp8_mbblock_error -vp8_mbblock_error_c -vp8_mbblock_error_mmx -vp8_mbblock_error_mmx_impl -vp8_mbblock_error_xmm -vp8_mbblock_error_xmm_impl -vp8_mbloop_filter_horizontal_edge_c -vp8_mbloop_filter_horizontal_edge_mmx -vp8_mbloop_filter_horizontal_edge_sse2 -vp8_mbloop_filter_horizontal_edge_uv_sse2 -vp8_mbloop_filter_vertical_edge_c -vp8_mbloop_filter_vertical_edge_mmx -vp8_mbloop_filter_vertical_edge_sse2 -vp8_mbloop_filter_vertical_edge_uv_sse2 -vp8_mbpost_proc_across_ip -vp8_mbpost_proc_across_ip_c -vp8_mbpost_proc_across_ip_xmm -vp8_mbpost_proc_down -vp8_mbpost_proc_down_c -vp8_mbpost_proc_down_mmx -vp8_mbpost_proc_down_xmm -vp8_mbsplit_count -vp8_mbsplit_encodings -vp8_mbsplit_offset -vp8_mbsplit_probs -vp8_mbsplit_tree -vp8_mbsplits -vp8_mbuverror -vp8_mbuverror_c -vp8_mbuverror_mmx -vp8_mbuverror_mmx_impl -vp8_mbuverror_xmm -vp8_mbuverror_xmm_impl -vp8_mode_contexts -vp8_mode_order -vp8_mse16x16 -vp8_mse16x16_c -vp8_mse16x16_mmx -vp8_mse16x16_wmt -vp8_mse2psnr -vp8_multiframe_quality_enhance -vp8_mv_bit_cost -vp8_mv_cont -vp8_mv_pred -vp8_mv_ref_encoding_array -vp8_mv_ref_probs -vp8_mv_ref_tree -vp8_mv_update_probs -vp8_new_framerate -vp8_norm -vp8_optimize_mbuv -vp8_optimize_mby -vp8_pack_bitstream -vp8_pack_tokens_c -vp8_pick_frame_size -vp8_pick_inter_mode -vp8_pick_intra_mode -vp8_plane_add_noise -vp8_plane_add_noise_c -vp8_plane_add_noise_mmx -vp8_plane_add_noise_wmt -vp8_post_proc_down_and_across_mb_row -vp8_post_proc_down_and_across_mb_row_c -vp8_post_proc_down_and_across_mb_row_sse2 -vp8_post_proc_frame -vp8_prev_token_class -vp8_prob_cost -vp8_quantize_mb_c -vp8_quantize_mbuv_c -vp8_quantize_mby_c -vp8_rd_pick_inter_mode -vp8_rd_pick_intra_mode -vp8_receive_raw_frame -vp8_ref_frame_order -vp8_refining_search_sad -vp8_refining_search_sad_c -vp8_refining_search_sadx4 -vp8_regular_quantize_b -vp8_regular_quantize_b_c -vp8_regular_quantize_b_pair_c -vp8_regular_quantize_b_sse2 -vp8_regulate_q -vp8_remove_common -vp8_remove_compressor -vp8_remove_decoder_instances -vp8_reset_mb_tokens_context -vp8_restore_coding_context -vp8_reverse_trans -vp8_rtcd -vp8_rv -vp8_sad16x16 -vp8_sad16x16_c -vp8_sad16x16_mmx -vp8_sad16x16_sse3 -vp8_sad16x16_wmt -vp8_sad16x16x3 -vp8_sad16x16x3_c -vp8_sad16x16x3_sse3 -vp8_sad16x16x3_ssse3 -vp8_sad16x16x4d -vp8_sad16x16x4d_c -vp8_sad16x16x4d_sse3 -vp8_sad16x16x8 -vp8_sad16x16x8_c -vp8_sad16x16x8_sse4 -vp8_sad16x8 -vp8_sad16x8_c -vp8_sad16x8_mmx -vp8_sad16x8_wmt -vp8_sad16x8x3 -vp8_sad16x8x3_c -vp8_sad16x8x3_sse3 -vp8_sad16x8x3_ssse3 -vp8_sad16x8x4d -vp8_sad16x8x4d_c -vp8_sad16x8x4d_sse3 -vp8_sad16x8x8 -vp8_sad16x8x8_c -vp8_sad16x8x8_sse4 -vp8_sad4x4 -vp8_sad4x4_c -vp8_sad4x4_mmx -vp8_sad4x4_wmt -vp8_sad4x4x3 -vp8_sad4x4x3_c -vp8_sad4x4x3_sse3 -vp8_sad4x4x4d -vp8_sad4x4x4d_c -vp8_sad4x4x4d_sse3 -vp8_sad4x4x8 -vp8_sad4x4x8_c -vp8_sad4x4x8_sse4 -vp8_sad8x16 -vp8_sad8x16_c -vp8_sad8x16_mmx -vp8_sad8x16_wmt -vp8_sad8x16x3 -vp8_sad8x16x3_c -vp8_sad8x16x3_sse3 -vp8_sad8x16x4d -vp8_sad8x16x4d_c -vp8_sad8x16x4d_sse3 -vp8_sad8x16x8 -vp8_sad8x16x8_c -vp8_sad8x16x8_sse4 -vp8_sad8x8 -vp8_sad8x8_c -vp8_sad8x8_mmx -vp8_sad8x8_wmt -vp8_sad8x8x3 -vp8_sad8x8x3_c -vp8_sad8x8x3_sse3 -vp8_sad8x8x4d -vp8_sad8x8x4d_c -vp8_sad8x8x4d_sse3 -vp8_sad8x8x8 -vp8_sad8x8x8_c -vp8_sad8x8x8_sse4 -vp8_save_coding_context -vp8_second_pass -vp8_set_active_map -vp8_set_internal_size -vp8_set_mbmode_and_mvs -vp8_set_quantizer -vp8_set_reference -vp8_set_roimap -vp8_set_speed_features -vp8_setup_block_dptrs -vp8_setup_block_ptrs -vp8_setup_intra_recon -vp8_setup_intra_recon_top_line -vp8_setup_key_frame -vp8_setup_version -vp8_short_fdct4x4 -vp8_short_fdct4x4_c -vp8_short_fdct4x4_mmx -vp8_short_fdct4x4_sse2 -vp8_short_fdct8x4 -vp8_short_fdct8x4_c -vp8_short_fdct8x4_mmx -vp8_short_fdct8x4_sse2 -vp8_short_idct4x4llm -vp8_short_idct4x4llm_c -vp8_short_idct4x4llm_mmx -vp8_short_inv_walsh4x4 -vp8_short_inv_walsh4x4_1_c -vp8_short_inv_walsh4x4_c -vp8_short_inv_walsh4x4_mmx -vp8_short_inv_walsh4x4_sse2 -vp8_short_walsh4x4 -vp8_short_walsh4x4_c -vp8_short_walsh4x4_sse2 -vp8_six_tap_mmx -vp8_sixtap_predict16x16 -vp8_sixtap_predict16x16_c -vp8_sixtap_predict16x16_mmx -vp8_sixtap_predict16x16_sse2 -vp8_sixtap_predict16x16_ssse3 -vp8_sixtap_predict4x4 -vp8_sixtap_predict4x4_c -vp8_sixtap_predict4x4_mmx -vp8_sixtap_predict4x4_ssse3 -vp8_sixtap_predict8x4 -vp8_sixtap_predict8x4_c -vp8_sixtap_predict8x4_mmx -vp8_sixtap_predict8x4_sse2 -vp8_sixtap_predict8x4_ssse3 -vp8_sixtap_predict8x8 -vp8_sixtap_predict8x8_c -vp8_sixtap_predict8x8_mmx -vp8_sixtap_predict8x8_sse2 -vp8_sixtap_predict8x8_ssse3 -vp8_skip_fractional_mv_step -vp8_small_mvencodings -vp8_small_mvtree -vp8_start_encode -vp8_stop_encode -vp8_strict_quantize_b_c -vp8_stuff_mb -vp8_sub_mv_ref_encoding_array -vp8_sub_mv_ref_prob2 -vp8_sub_mv_ref_prob3 -vp8_sub_mv_ref_tree -vp8_sub_pel_filters -vp8_sub_pixel_mse16x16 -vp8_sub_pixel_mse16x16_c -vp8_sub_pixel_mse16x16_mmx -vp8_sub_pixel_mse16x16_wmt -vp8_sub_pixel_variance16x16 -vp8_sub_pixel_variance16x16_c -vp8_sub_pixel_variance16x16_mmx -vp8_sub_pixel_variance16x16_ssse3 -vp8_sub_pixel_variance16x16_wmt -vp8_sub_pixel_variance16x8 -vp8_sub_pixel_variance16x8_c -vp8_sub_pixel_variance16x8_mmx -vp8_sub_pixel_variance16x8_ssse3 -vp8_sub_pixel_variance16x8_wmt -vp8_sub_pixel_variance4x4 -vp8_sub_pixel_variance4x4_c -vp8_sub_pixel_variance4x4_mmx -vp8_sub_pixel_variance4x4_wmt -vp8_sub_pixel_variance8x16 -vp8_sub_pixel_variance8x16_c -vp8_sub_pixel_variance8x16_mmx -vp8_sub_pixel_variance8x16_wmt -vp8_sub_pixel_variance8x8 -vp8_sub_pixel_variance8x8_c -vp8_sub_pixel_variance8x8_mmx -vp8_sub_pixel_variance8x8_wmt -vp8_subtract_b -vp8_subtract_b_c -vp8_subtract_b_mmx -vp8_subtract_b_mmx_impl -vp8_subtract_b_sse2 -vp8_subtract_b_sse2_impl -vp8_subtract_mbuv -vp8_subtract_mbuv_c -vp8_subtract_mbuv_mmx -vp8_subtract_mbuv_sse2 -vp8_subtract_mby -vp8_subtract_mby_c -vp8_subtract_mby_mmx -vp8_subtract_mby_sse2 -vp8_swap_yv12_buffer -vp8_temporal_filter_apply -vp8_temporal_filter_apply_c -vp8_temporal_filter_apply_sse2 -vp8_temporal_filter_prepare_c -vp8_tokenize_mb -vp8_tokens_from_tree -vp8_tokens_from_tree_offset -vp8_transform_intra_mby -vp8_transform_mbuv -vp8_tree_probs_from_distribution -vp8_unpack_block1d16_h6_sse2 -vp8_update_coef_probs -vp8_update_entropy -vp8_update_gf_useage_maps -vp8_update_rate_correction_factors -vp8_update_reference -vp8_update_zbin_extra -vp8_use_as_reference -vp8_uv_mode_encodings -vp8_uv_mode_prob -vp8_uv_mode_tree -vp8_variance16x16 -vp8_variance16x16_c -vp8_variance16x16_mmx -vp8_variance16x16_wmt -vp8_variance16x8 -vp8_variance16x8_c -vp8_variance16x8_mmx -vp8_variance16x8_wmt -vp8_variance4x4 -vp8_variance4x4_c -vp8_variance4x4_mmx -vp8_variance4x4_wmt -vp8_variance8x16 -vp8_variance8x16_c -vp8_variance8x16_mmx -vp8_variance8x16_wmt -vp8_variance8x8 -vp8_variance8x8_c -vp8_variance8x8_mmx -vp8_variance8x8_wmt -vp8_variance_and_sad_16x16_sse2 -vp8_variance_halfpixvar16x16_h -vp8_variance_halfpixvar16x16_h_c -vp8_variance_halfpixvar16x16_h_mmx -vp8_variance_halfpixvar16x16_h_wmt -vp8_variance_halfpixvar16x16_hv -vp8_variance_halfpixvar16x16_hv_c -vp8_variance_halfpixvar16x16_hv_mmx -vp8_variance_halfpixvar16x16_hv_wmt -vp8_variance_halfpixvar16x16_v -vp8_variance_halfpixvar16x16_v_c -vp8_variance_halfpixvar16x16_v_mmx -vp8_variance_halfpixvar16x16_v_wmt -vp8_vertical_band_2_1_scale_c -vp8_vertical_band_2_1_scale_i_c -vp8_vertical_band_5_3_scale_c -vp8_vertical_band_5_4_scale_c -vp8_write_mvprobs -vp8_ymode_encodings -vp8_ymode_prob -vp8_ymode_tree -vp8_yv12_alloc_frame_buffer -vp8_yv12_copy_frame_c -vp8_yv12_copy_partial_frame_c -vp8_yv12_de_alloc_frame_buffer -vp8_yv12_extend_frame_borders_c -vp8_yv12_realloc_frame_buffer -vp8cx_base_skip_false_prob -vp8cx_create_encoder_threads -vp8cx_encode_inter_macroblock -vp8cx_encode_intra_macroblock -vp8cx_frame_init_quantizer -vp8cx_init_de_quantizer -vp8cx_init_mbrthread_data -vp8cx_init_quantizer -vp8cx_initialize_me_consts -vp8cx_mb_init_quantizer -vp8cx_pick_filter_level -vp8cx_pick_filter_level_fast -vp8cx_remove_encoder_threads -vp8cx_set_alt_lf_level -vp8dx_bool_decoder_fill -vp8dx_get_raw_frame -vp8dx_get_reference -vp8dx_receive_compressed_data -vp8dx_references_buffer -vp8dx_set_reference -vp8dx_start_decode -vp8mt_alloc_temp_buffers -vp8mt_de_alloc_temp_buffers -vp8mt_decode_mb_rows -vp9_alloc_frame_buffer -vp9_extend_frame_borders_c -vp9_extend_frame_inner_borders_c -vp9_free_frame_buffer -vp9_realloc_frame_buffer -vpx_calloc -vpx_codec_control_ -vpx_codec_dec_init_ver -vpx_codec_decode -vpx_codec_destroy -vpx_codec_enc_config_default -vpx_codec_enc_config_set -vpx_codec_enc_init_multi_ver -vpx_codec_enc_init_ver -vpx_codec_encode -vpx_codec_err_to_string -vpx_codec_error -vpx_codec_error_detail -vpx_codec_get_caps -vpx_codec_get_cx_data -vpx_codec_get_frame -vpx_codec_get_global_headers -vpx_codec_get_mem_map -vpx_codec_get_preview_frame -vpx_codec_get_stream_info -vpx_codec_iface_name -vpx_codec_peek_stream_info -vpx_codec_pkt_list_add -vpx_codec_pkt_list_get -vpx_codec_register_put_frame_cb -vpx_codec_register_put_slice_cb -vpx_codec_set_cx_data_buf -vpx_codec_set_mem_map -vpx_codec_version -vpx_codec_version_extra_str -vpx_codec_version_str -vpx_codec_vp8_cx -vpx_codec_vp8_cx_algo -vpx_codec_vp8_dx -vpx_codec_vp8_dx_algo -vpx_free -vpx_malloc -vpx_mem_get_version -vpx_mem_set_functions -vpx_mem_set_heap_size -vpx_mem_unset_functions -vpx_memalign -vpx_memcpy -vpx_memmove -vpx_memset -vpx_mmap_alloc -vpx_mmap_dtor -vpx_realloc -vpx_reset_mmx_state -vpx_scale_frame -vpx_scale_rtcd -vpx_validate_mmaps -vpx_yv12_copy_y_c -write_cryptpacket diff --git a/protocols/Tox/lib/libtox.exp b/protocols/Tox/lib/libtox.exp deleted file mode 100644 index be51aeee04..0000000000 Binary files a/protocols/Tox/lib/libtox.exp and /dev/null differ diff --git a/protocols/Tox/lib/libtox.lib b/protocols/Tox/lib/libtox.lib deleted file mode 100644 index d9bf55a1e1..0000000000 Binary files a/protocols/Tox/lib/libtox.lib and /dev/null differ diff --git a/protocols/Tox/lib/x64/libtox-x64.exp b/protocols/Tox/lib/x64/libtox-x64.exp new file mode 100644 index 0000000000..15913b01b5 Binary files /dev/null and b/protocols/Tox/lib/x64/libtox-x64.exp differ diff --git a/protocols/Tox/lib/x64/libtox-x64.lib b/protocols/Tox/lib/x64/libtox-x64.lib new file mode 100644 index 0000000000..08feecde77 Binary files /dev/null and b/protocols/Tox/lib/x64/libtox-x64.lib differ diff --git a/protocols/Tox/lib/x64/libtox.def b/protocols/Tox/lib/x64/libtox.def new file mode 100644 index 0000000000..0158e32dc7 --- /dev/null +++ b/protocols/Tox/lib/x64/libtox.def @@ -0,0 +1,1556 @@ +LIBRARY "libtox" + +EXPORTS + Assoc_add_entry @1 + Assoc_get_close_entries @2 + Assoc_self_client_id_changed @3 + ClientPair_quick_sort @4 + DHT_addfriend @5 + DHT_bootstrap @6 + DHT_bootstrap_from_address @7 + DHT_delfriend @8 + DHT_get_close_list @9 + DHT_get_shared_key_recv @10 + DHT_get_shared_key_sent @11 + DHT_getfriendip @12 + DHT_getnodes @13 + DHT_isconnected @14 + DHT_load @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_path @114 + create_queue @115 + create_request @116 + crypto_box @117 + crypto_box_afternm @118 + crypto_box_beforenm @119 + crypto_box_beforenmbytes @120 + crypto_box_boxzerobytes @121 + crypto_box_curve25519xsalsa20poly1305 @122 + crypto_box_curve25519xsalsa20poly1305_afternm @123 + crypto_box_curve25519xsalsa20poly1305_beforenm @124 + crypto_box_curve25519xsalsa20poly1305_keypair @125 + crypto_box_curve25519xsalsa20poly1305_open @126 + crypto_box_curve25519xsalsa20poly1305_open_afternm @127 + crypto_box_curve25519xsalsa20poly1305_seed_keypair @128 + crypto_box_keypair @129 + crypto_box_macbytes @130 + crypto_box_noncebytes @131 + crypto_box_open @132 + crypto_box_open_afternm @133 + crypto_box_primitive @134 + crypto_box_publickeybytes @135 + crypto_box_secretkeybytes @136 + crypto_box_seed_keypair @137 + crypto_box_seedbytes @138 + crypto_box_zerobytes @139 + crypto_cmp @140 + crypto_connection_status @141 + crypto_core_hsalsa20 @142 + crypto_core_salsa20 @143 + crypto_hash_sha256 @144 + crypto_hash_sha256_final @145 + crypto_hash_sha256_init @146 + crypto_hash_sha256_update @147 + crypto_hash_sha512 @148 + crypto_hash_sha512_final @149 + crypto_hash_sha512_init @150 + crypto_hash_sha512_update @151 + crypto_kill @152 + crypto_num_free_sendqueue_slots @153 + crypto_onetimeauth_pick_best_implementation @154 + crypto_onetimeauth_poly1305 @155 + crypto_onetimeauth_poly1305_donna @156 + crypto_onetimeauth_poly1305_donna_final @157 + crypto_onetimeauth_poly1305_donna_implementation @158 + crypto_onetimeauth_poly1305_donna_implementation_name @159 + crypto_onetimeauth_poly1305_donna_init @160 + crypto_onetimeauth_poly1305_donna_update @161 + crypto_onetimeauth_poly1305_donna_verify @162 + crypto_onetimeauth_poly1305_final @163 + crypto_onetimeauth_poly1305_implementation_name @164 + crypto_onetimeauth_poly1305_init @165 + crypto_onetimeauth_poly1305_set_implementation @166 + crypto_onetimeauth_poly1305_update @167 + crypto_onetimeauth_poly1305_verify @168 + crypto_run_interval @169 + crypto_scalarmult_curve25519 @170 + crypto_scalarmult_curve25519_base @171 + crypto_secretbox_xsalsa20poly1305 @172 + crypto_secretbox_xsalsa20poly1305_open @173 + crypto_stream_salsa20 @174 + crypto_stream_salsa20_keybytes @175 + crypto_stream_salsa20_noncebytes @176 + crypto_stream_salsa20_xor @177 + crypto_stream_salsa20_xor_ic @178 + crypto_stream_xsalsa20 @179 + crypto_stream_xsalsa20_xor @180 + crypto_verify_16 @181 + crypto_verify_32 @182 + cryptopacket_registerhandler @183 + current_time_monotonic @184 + custom_lossless_packet_registerhandler @185 + custom_lossy_packet_registerhandler @186 + decode_pulses @187 + decrypt_data @188 + decrypt_data_symmetric @189 + del_groupchat @190 + denormalise_bands @191 + dequeue @192 + do_Assoc @193 + do_DHT @194 + do_TCP_connection @195 + do_TCP_server @196 + do_friends @197 + do_groupchat @198 + do_hardening @199 + do_messenger @200 + do_net_crypto @201 + do_onion_client @202 + do_sema_b_wait_intern @203 + do_to_ping @204 + downmix_float @205 + downmix_int @206 + eMeans @207 + ec_dec_bit_logp @208 + ec_dec_bits @209 + ec_dec_icdf @210 + ec_dec_init @211 + ec_dec_uint @212 + ec_dec_update @213 + ec_decode @214 + ec_decode_bin @215 + ec_enc_bit_logp @216 + ec_enc_bits @217 + ec_enc_done @218 + ec_enc_icdf @219 + ec_enc_init @220 + ec_enc_patch_initial_bits @221 + ec_enc_shrink @222 + ec_enc_uint @223 + ec_encode @224 + ec_encode_bin @225 + ec_laplace_decode @226 + ec_laplace_encode @227 + ec_tell_frac @228 + encode_pulses @229 + encode_size @230 + encrypt_data @231 + encrypt_data_symmetric @232 + encrypt_precompute @233 + energy_VAD @234 + extract_ext_header @235 + extract_header @236 + file_control @237 + file_data @238 + file_dataremaining @239 + file_sendrequest @240 + format_output @241 + frame_size_select @242 + friend_ips @243 + friendreq_init @244 + get_close_nodes @245 + get_connection_dht_key @246 + get_friendlist @247 + get_nospam @248 + get_num_online_friends @249 + get_shared_key @250 + getaddress @251 + getclient_id @252 + getfriend_id @253 + getname @254 + getself_name @255 + group_action_send @256 + group_client_names @257 + group_message_send @258 + group_names @259 + group_newpeer @260 + group_number_peers @261 + group_numpeers @262 + group_peername @263 + group_sendaction @264 + group_sendmessage @265 + haar1 @266 + handle_groupchatpacket @267 + handle_request @268 + host_to_net @269 + hysteresis_decision @270 + id_closest @271 + id_copy @272 + id_equal @273 + increment_nonce @274 + increment_nonce_number @275 + init_audio_decoder @276 + init_audio_encoder @277 + init_caps @278 + init_video_decoder @279 + init_video_encoder @280 + invite_friend @281 + invoke_callback @282 + ip_copy @283 + ip_equal @284 + ip_init @285 + ip_isset @286 + ip_ntoa @287 + ip_pack @288 + ip_reset @289 + ip_unpack @290 + ipport_copy @291 + ipport_equal @292 + ipport_isset @293 + ipport_pack @294 + ipport_unpack @295 + is_timeout @296 + isqrt32 @297 + join_groupchat @298 + kill_Assoc @299 + kill_DHT @300 + kill_TCP_connection @301 + kill_TCP_server @302 + kill_groupchat @303 + kill_messenger @304 + kill_net_crypto @305 + kill_networking @306 + kill_onion @307 + kill_onion_announce @308 + kill_onion_client @309 + kill_ping @310 + kill_sock @311 + load_keys @312 + load_state @313 + m_addfriend @314 + m_addfriend_norequest @315 + m_callback_action @316 + m_callback_connectionstatus @317 + m_callback_connectionstatus_internal_av @318 + m_callback_friendmessage @319 + m_callback_friendrequest @320 + m_callback_group_action @321 + m_callback_group_invite @322 + m_callback_group_message @323 + m_callback_group_namelistchange @324 + m_callback_msi_packet @325 + m_callback_namechange @326 + m_callback_read_receipt @327 + m_callback_statusmessage @328 + m_callback_typingchange @329 + m_callback_userstatus @330 + m_copy_self_statusmessage @331 + m_copy_statusmessage @332 + m_delfriend @333 + m_friend_exists @334 + m_get_friend_connectionstatus @335 + m_get_istyping @336 + m_get_last_online @337 + m_get_name_size @338 + m_get_self_name_size @339 + m_get_self_statusmessage_size @340 + m_get_self_userstatus @341 + m_get_statusmessage_size @342 + m_get_userstatus @343 + m_group_peername @344 + m_msi_packet @345 + m_sendaction @346 + m_sendaction_withid @347 + m_sendmessage @348 + m_sendmessage_withid @349 + m_set_sends_receipts @350 + m_set_statusmessage @351 + m_set_userstatus @352 + m_set_usertyping @353 + messenger_load @354 + messenger_run_interval @355 + messenger_save @356 + messenger_size @357 + mlp_process @358 + msg_parse @359 + msi_answer @360 + msi_cancel @361 + msi_change_csettings @362 + msi_hangup @363 + msi_init_session @364 + msi_invite @365 + msi_msg_get_csettings @366 + msi_msg_set_callid @367 + msi_msg_set_csettings @368 + msi_msg_set_reason @369 + msi_new_message @370 + msi_register_callback @371 + msi_reject @372 + msi_stopcall @373 + msi_terminate_session @374 + mutex_print @375 + mutex_print_set @376 + net @377 + networking_at_startup @378 + networking_poll @379 + networking_registerhandler @380 + new_Assoc @381 + new_Assoc_default @382 + new_DHT @383 + new_TCP_connection @384 + new_TCP_server @385 + new_connection_handler @386 + new_crypto_connection @387 + new_filesender @388 + new_groupchat @389 + new_keys @390 + new_messenger @391 + new_net_crypto @392 + new_networking @393 + new_nonce @394 + new_onion @395 + new_onion_announce @396 + new_onion_client @397 + new_ping @398 + new_symmetric_key @399 + normalise_bands @400 + onion_addfriend @401 + onion_delfriend @402 + onion_friend_num @403 + onion_getfriend_DHT_pubkey @404 + onion_getfriendip @405 + onion_response_handler @406 + onion_send_1 @407 + onion_set_friend_DHT_pubkey @408 + onion_set_friend_online @409 + oniondata_registerhandler @410 + oob_data_handler @411 + optimize_framesize @412 + opus_custom_decoder_ctl @413 + opus_custom_encoder_ctl @414 + opus_custom_mode_create @415 + opus_decode @416 + opus_decode_float @417 + opus_decode_native @418 + opus_decoder_create @419 + opus_decoder_ctl @420 + opus_decoder_destroy @421 + opus_decoder_get_nb_samples @422 + opus_decoder_get_size @423 + opus_decoder_init @424 + opus_encode @425 + opus_encode_float @426 + opus_encode_native @427 + opus_encoder_create @428 + opus_encoder_ctl @429 + opus_encoder_destroy @430 + opus_encoder_get_size @431 + opus_encoder_init @432 + opus_fft @433 + opus_get_version_string @434 + opus_ifft @435 + opus_multistream_packet_pad @436 + opus_multistream_packet_unpad @437 + opus_packet_get_bandwidth @438 + opus_packet_get_nb_channels @439 + opus_packet_get_nb_frames @440 + opus_packet_get_nb_samples @441 + opus_packet_get_samples_per_frame @442 + opus_packet_pad @443 + opus_packet_parse @444 + opus_packet_parse_impl @445 + opus_packet_unpad @446 + opus_pcm_soft_clip @447 + opus_repacketizer_cat @448 + opus_repacketizer_create @449 + opus_repacketizer_destroy @450 + opus_repacketizer_get_nb_frames @451 + opus_repacketizer_get_size @452 + opus_repacketizer_init @453 + opus_repacketizer_out @454 + opus_repacketizer_out_range @455 + opus_repacketizer_out_range_impl @456 + opus_strerror @457 + pack_nodes @458 + parse_recv @459 + parse_send @460 + patch_transient_decision @461 + ping_array_add @462 + ping_array_check @463 + ping_array_free_all @464 + ping_array_init @465 + pitch_downsample @466 + pitch_search @467 + pthread_attr_destroy @468 + pthread_attr_getdetachstate @469 + pthread_attr_getinheritsched @470 + pthread_attr_getscope @471 + pthread_attr_getstackaddr @472 + pthread_attr_getstacksize @473 + pthread_attr_init @474 + pthread_attr_setdetachstate @475 + pthread_attr_setinheritsched @476 + pthread_attr_setscope @477 + pthread_attr_setstackaddr @478 + pthread_attr_setstacksize @479 + pthread_cancel @480 + pthread_cond_broadcast @481 + pthread_cond_destroy @482 + pthread_cond_init @483 + pthread_cond_signal @484 + pthread_cond_timedwait @485 + pthread_cond_timedwait_relative @486 + pthread_cond_wait @487 + pthread_condattr_destroy @488 + pthread_condattr_getclock @489 + pthread_condattr_getpshared @490 + pthread_condattr_init @491 + pthread_condattr_setclock @492 + pthread_condattr_setpshared @493 + pthread_create @494 + pthread_create_wrapper @495 + pthread_delay_np @496 + pthread_delay_np_ms @497 + pthread_detach @498 + pthread_equal @499 + pthread_exit @500 + pthread_get_concurrency @501 + pthread_getclean @502 + pthread_getconcurrency @503 + pthread_getevent @504 + pthread_gethandle @505 + pthread_getspecific @506 + pthread_join @507 + pthread_key_create @508 + pthread_key_delete @509 + pthread_kill @510 + pthread_mutex_destroy @511 + pthread_mutex_init @512 + pthread_mutex_lock @513 + pthread_mutex_timedlock @514 + pthread_mutex_trylock @515 + pthread_mutex_unlock @516 + pthread_mutexattr_destroy @517 + pthread_mutexattr_getprioceiling @518 + pthread_mutexattr_getprotocol @519 + pthread_mutexattr_getpshared @520 + pthread_mutexattr_gettype @521 + pthread_mutexattr_init @522 + pthread_mutexattr_setprioceiling @523 + pthread_mutexattr_setprotocol @524 + pthread_mutexattr_setpshared @525 + pthread_mutexattr_settype @526 + pthread_num_processors_np @527 + pthread_once @528 + pthread_rwlock_destroy @529 + pthread_rwlock_init @530 + pthread_rwlock_rdlock @531 + pthread_rwlock_timedrdlock @532 + pthread_rwlock_timedwrlock @533 + pthread_rwlock_tryrdlock @534 + pthread_rwlock_trywrlock @535 + pthread_rwlock_unlock @536 + pthread_rwlock_wrlock @537 + pthread_rwlockattr_destroy @538 + pthread_rwlockattr_getpshared @539 + pthread_rwlockattr_init @540 + pthread_rwlockattr_setpshared @541 + pthread_self @542 + pthread_set_concurrency @543 + pthread_set_num_processors_np @544 + pthread_setcancelstate @545 + pthread_setcanceltype @546 + pthread_setconcurrency @547 + pthread_setspecific @548 + pthread_spin_destroy @549 + pthread_spin_init @550 + pthread_spin_lock @551 + pthread_spin_trylock @552 + pthread_spin_unlock @553 + pthread_testcancel @554 + pthread_timechange_handler_np @555 + pthread_tls_init @556 + public_key_valid @557 + quant_all_bands @558 + quant_coarse_energy @559 + quant_energy_finalise @560 + quant_fine_energy @561 + queue @562 + random_64b @563 + random_int @564 + random_node @565 + random_nodes_path @566 + random_nonce @567 + randombytes @568 + randombytes_buf @569 + randombytes_close @570 + randombytes_implementation_name @571 + randombytes_random @572 + randombytes_set_implementation @573 + randombytes_stir @574 + randombytes_sysrandom @575 + randombytes_sysrandom_buf @576 + randombytes_sysrandom_close @577 + randombytes_sysrandom_implementation @578 + randombytes_sysrandom_implementation_name @579 + randombytes_sysrandom_stir @580 + randombytes_sysrandom_uniform @581 + randombytes_uniform @582 + read_TCP_length @583 + read_TCP_packet @584 + read_packet_TCP_secure_connection @585 + realloc_friendlist @586 + reconfigure_video_encoder_bitrate @587 + reconfigure_video_encoder_resolution @588 + recv_tcp_relay_handler @589 + remove_doubling @590 + remove_request_received @591 + renormalise_vector @592 + resampling_factor @593 + route_packet @594 + route_tofriend @595 + routing_data_handler @596 + routing_response_handler @597 + routing_status_handler @598 + rtp_free_msg @599 + rtp_handle_packet @600 + rtp_init_session @601 + rtp_new_message @602 + rtp_send_msg @603 + rtp_terminate_session @604 + run_analysis @605 + rwl_print @606 + rwl_print_set @607 + save_keys @608 + send_LANdiscovery @609 + send_announce_request @610 + send_custom_lossless_packet @611 + send_custom_lossy_packet @612 + send_data @613 + send_data_request @614 + send_disconnect_request @615 + send_friendrequest @616 + send_lossy_cryptpacket @617 + send_onion_data @618 + send_onion_packet @619 + send_onion_request @620 + send_onion_response @621 + send_oob_packet @622 + send_ping_request @623 + send_reponse @624 + send_routing_request @625 + sendpacket @626 + set_callback_handle_recv_1 @627 + set_connection_dht_public_key @628 + set_direct_ip_port @629 + set_filter_function @630 + set_nick @631 + set_nospam @632 + set_socket_dualstack @633 + set_socket_nonblock @634 + set_socket_nosigpipe @635 + set_tcp_connection_number @636 + setfriendname @637 + setname @638 + silk_A2NLSF @639 + silk_A2NLSF_FLP @640 + silk_CB_lags_stage2 @641 + silk_CB_lags_stage2_10_ms @642 + silk_CB_lags_stage3 @643 + silk_CB_lags_stage3_10_ms @644 + silk_CNG @645 + silk_CNG_Reset @646 + silk_Decode @647 + silk_Encode @648 + silk_Get_Decoder_Size @649 + silk_Get_Encoder_Size @650 + silk_HP_variable_cutoff @651 + silk_InitDecoder @652 + silk_InitEncoder @653 + silk_LBRR_flags_iCDF_ptr @654 + silk_LPC_analysis_filter @655 + silk_LPC_analysis_filter_FLP @656 + silk_LPC_inverse_pred_gain @657 + silk_LPC_inverse_pred_gain_FLP @658 + silk_LP_variable_cutoff @659 + silk_LSFCosTab_FIX_Q12 @660 + silk_LTPScales_table_Q14 @661 + silk_LTP_analysis_filter_FLP @662 + silk_LTP_gain_BITS_Q5_ptrs @663 + silk_LTP_gain_iCDF_ptrs @664 + silk_LTP_gain_middle_avg_RD_Q14 @665 + silk_LTP_per_index_iCDF @666 + silk_LTP_scale_ctrl_FLP @667 + silk_LTP_vq_gain_ptrs_Q7 @668 + silk_LTP_vq_ptrs_Q7 @669 + silk_LTP_vq_sizes @670 + silk_LTPscale_iCDF @671 + silk_Lag_range_stage3 @672 + silk_Lag_range_stage3_10_ms @673 + silk_NLSF2A @674 + silk_NLSF2A_FLP @675 + silk_NLSF_CB_NB_MB @676 + silk_NLSF_CB_WB @677 + silk_NLSF_EXT_iCDF @678 + silk_NLSF_VQ @679 + silk_NLSF_VQ_weights_laroia @680 + silk_NLSF_decode @681 + silk_NLSF_del_dec_quant @682 + silk_NLSF_encode @683 + silk_NLSF_interpolation_factor_iCDF @684 + silk_NLSF_stabilize @685 + silk_NLSF_unpack @686 + silk_NSQ @687 + silk_NSQ_del_dec @688 + silk_NSQ_wrapper_FLP @689 + silk_PLC @690 + silk_PLC_Reset @691 + silk_PLC_glue_frames @692 + silk_Quantization_Offsets_Q10 @693 + silk_Resampler_1_2_COEFS @694 + silk_Resampler_1_3_COEFS @695 + silk_Resampler_1_4_COEFS @696 + silk_Resampler_1_6_COEFS @697 + silk_Resampler_2_3_COEFS @698 + silk_Resampler_2_3_COEFS_LQ @699 + silk_Resampler_3_4_COEFS @700 + silk_SNR_table_Q1 @701 + silk_TargetRate_table_MB @702 + silk_TargetRate_table_NB @703 + silk_TargetRate_table_WB @704 + silk_Transition_LP_A_Q28 @705 + silk_Transition_LP_B_Q28 @706 + silk_VAD_GetSA_Q8 @707 + silk_VAD_Init @708 + silk_VQ_WMat_EC @709 + silk_ana_filt_bank_1 @710 + silk_apply_sine_window_FLP @711 + silk_autocorrelation_FLP @712 + silk_biquad_alt @713 + silk_burg_modified_FLP @714 + silk_bwexpander @715 + silk_bwexpander_32 @716 + silk_bwexpander_FLP @717 + silk_control_SNR @718 + silk_control_audio_bandwidth @719 + silk_control_encoder @720 + silk_corrMatrix_FLP @721 + silk_corrVector_FLP @722 + silk_decode_core @723 + silk_decode_frame @724 + silk_decode_indices @725 + silk_decode_parameters @726 + silk_decode_pitch @727 + silk_decode_pulses @728 + silk_decode_signs @729 + silk_decoder_set_fs @730 + silk_delta_gain_iCDF @731 + silk_encode_do_VAD_FLP @732 + silk_encode_frame_FLP @733 + silk_encode_indices @734 + silk_encode_pulses @735 + silk_encode_signs @736 + silk_energy_FLP @737 + silk_find_LPC_FLP @738 + silk_find_LTP_FLP @739 + silk_find_pitch_lags_FLP @740 + silk_find_pred_coefs_FLP @741 + silk_gain_iCDF @742 + silk_gains_ID @743 + silk_gains_dequant @744 + silk_gains_quant @745 + silk_init_decoder @746 + silk_init_encoder @747 + silk_inner_prod_aligned_scale @748 + silk_inner_product_FLP @749 + silk_insertion_sort_decreasing_FLP @750 + silk_insertion_sort_increasing @751 + silk_insertion_sort_increasing_all_values_int16 @752 + silk_interpolate @753 + silk_k2a_FLP @754 + silk_levinsondurbin_FLP @755 + silk_lin2log @756 + silk_log2lin @757 + silk_lsb_iCDF @758 + silk_max_pulses_table @759 + silk_nb_cbk_searchs_stage3 @760 + silk_noise_shape_analysis_FLP @761 + silk_pitch_analysis_core_FLP @762 + silk_pitch_contour_10_ms_NB_iCDF @763 + silk_pitch_contour_10_ms_iCDF @764 + silk_pitch_contour_NB_iCDF @765 + silk_pitch_contour_iCDF @766 + silk_pitch_delta_iCDF @767 + silk_pitch_lag_iCDF @768 + silk_prefilter_FLP @769 + silk_process_NLSFs @770 + silk_process_NLSFs_FLP @771 + silk_process_gains_FLP @772 + silk_pulses_per_block_BITS_Q5 @773 + silk_pulses_per_block_iCDF @774 + silk_quant_LTP_gains @775 + silk_quant_LTP_gains_FLP @776 + silk_rate_levels_BITS_Q5 @777 + silk_rate_levels_iCDF @778 + silk_regularize_correlations_FLP @779 + silk_resampler @780 + silk_resampler_down2 @781 + silk_resampler_down2_3 @782 + silk_resampler_frac_FIR_12 @783 + silk_resampler_init @784 + silk_resampler_private_AR2 @785 + silk_resampler_private_IIR_FIR @786 + silk_resampler_private_down_FIR @787 + silk_resampler_private_up2_HQ @788 + silk_resampler_private_up2_HQ_wrapper @789 + silk_residual_energy_FLP @790 + silk_residual_energy_covar_FLP @791 + silk_scale_copy_vector_FLP @792 + silk_scale_vector_FLP @793 + silk_schur_FLP @794 + silk_shell_code_table0 @795 + silk_shell_code_table1 @796 + silk_shell_code_table2 @797 + silk_shell_code_table3 @798 + silk_shell_code_table_offsets @799 + silk_shell_decoder @800 + silk_shell_encoder @801 + silk_sigm_Q15 @802 + silk_sign_iCDF @803 + silk_solve_LDL_FLP @804 + silk_stereo_LR_to_MS @805 + silk_stereo_MS_to_LR @806 + silk_stereo_decode_mid_only @807 + silk_stereo_decode_pred @808 + silk_stereo_encode_mid_only @809 + silk_stereo_encode_pred @810 + silk_stereo_find_predictor @811 + silk_stereo_only_code_mid_iCDF @812 + silk_stereo_pred_joint_iCDF @813 + silk_stereo_pred_quant_Q13 @814 + silk_stereo_quant_pred @815 + silk_sum_sqr_shift @816 + silk_type_offset_VAD_iCDF @817 + silk_type_offset_no_VAD_iCDF @818 + silk_uniform3_iCDF @819 + silk_uniform4_iCDF @820 + silk_uniform5_iCDF @821 + silk_uniform6_iCDF @822 + silk_uniform8_iCDF @823 + silk_warped_autocorrelation_FLP @824 + sock_valid @825 + sodium_bin2hex @826 + sodium_hex2bin @827 + sodium_init @828 + sodium_memcmp @829 + sodium_memzero @830 + sodium_mlock @831 + sodium_munlock @832 + sodium_runtime_get_cpu_features @833 + sodium_runtime_has_neon @834 + sodium_runtime_has_sse2 @835 + sodium_runtime_has_sse3 @836 + spreading_decision @837 + stereo_itheta @838 + terminate_queue @839 + tf_select_table @840 + thread_print @841 + thread_print_set @842 + to_host_family @843 + to_net_family @844 + tonality_analysis @845 + tonality_get_info @846 + tox_add_friend @847 + tox_add_friend_norequest @848 + tox_add_groupchat @849 + tox_bootstrap_from_address @850 + tox_callback_connection_status @851 + tox_callback_file_control @852 + tox_callback_file_data @853 + tox_callback_file_send_request @854 + tox_callback_friend_action @855 + tox_callback_friend_message @856 + tox_callback_friend_request @857 + tox_callback_group_action @858 + tox_callback_group_invite @859 + tox_callback_group_message @860 + tox_callback_group_namelist_change @861 + tox_callback_name_change @862 + tox_callback_read_receipt @863 + tox_callback_status_message @864 + tox_callback_typing_change @865 + tox_callback_user_status @866 + tox_count_chatlist @867 + tox_count_friendlist @868 + tox_decrypt_dns3_TXT @869 + tox_del_friend @870 + tox_del_groupchat @871 + tox_dns3_kill @872 + tox_dns3_new @873 + tox_do @874 + tox_do_interval @875 + tox_file_data_remaining @876 + tox_file_data_size @877 + tox_file_send_control @878 + tox_file_send_data @879 + tox_friend_exists @880 + tox_generate_dns3_string @881 + tox_get_address @882 + tox_get_chatlist @883 + tox_get_client_id @884 + tox_get_friend_connection_status @885 + tox_get_friend_number @886 + tox_get_friendlist @887 + tox_get_is_typing @888 + tox_get_keys @889 + tox_get_last_online @890 + tox_get_name @891 + tox_get_name_size @892 + tox_get_nospam @893 + tox_get_num_online_friends @894 + tox_get_self_name @895 + tox_get_self_name_size @896 + tox_get_self_status_message @897 + tox_get_self_status_message_size @898 + tox_get_self_user_status @899 + tox_get_status_message @900 + tox_get_status_message_size @901 + tox_get_user_status @902 + tox_group_action_send @903 + tox_group_get_names @904 + tox_group_message_send @905 + tox_group_number_peers @906 + tox_group_peername @907 + tox_invite_friend @908 + tox_isconnected @909 + tox_join_groupchat @910 + tox_kill @911 + tox_load @912 + tox_new @913 + tox_new_file_sender @914 + tox_save @915 + tox_send_action @916 + tox_send_action_withid @917 + tox_send_message @918 + tox_send_message_withid @919 + tox_set_name @920 + tox_set_nospam @921 + tox_set_sends_receipts @922 + tox_set_status_message @923 + tox_set_user_is_typing @924 + tox_set_user_status @925 + tox_size @926 + toxav_answer @927 + toxav_call @928 + toxav_cancel @929 + toxav_capability_supported @930 + toxav_change_settings @931 + toxav_get_call_state @932 + toxav_get_peer_csettings @933 + toxav_get_peer_id @934 + toxav_get_tox @935 + toxav_handle_packet @936 + toxav_hangup @937 + toxav_has_activity @938 + toxav_kill @939 + toxav_kill_transmission @940 + toxav_new @941 + toxav_prepare_audio_frame @942 + toxav_prepare_transmission @943 + toxav_prepare_video_frame @944 + toxav_register_audio_recv_callback @945 + toxav_register_callstate_callback @946 + toxav_register_video_recv_callback @947 + toxav_reject @948 + toxav_send_audio @949 + toxav_send_video @950 + toxav_stop_call @951 + unix_time @952 + unix_time_update @953 + unpack_nodes @954 + unquant_coarse_energy @955 + unquant_energy_finalise @956 + unquant_fine_energy @957 + vp8_ac2quant @958 + vp8_ac_uv_quant @959 + vp8_ac_yquant @960 + vp8_activity_masking @961 + vp8_adjust_key_frame_context @962 + vp8_alloc_compressor_data @963 + vp8_alloc_frame_buffers @964 + vp8_auto_select_speed @965 + vp8_bilinear_filters_x86_4 @966 + vp8_bilinear_filters_x86_8 @967 + vp8_bilinear_predict16x16 @968 + vp8_bilinear_predict16x16_mmx @969 + vp8_bilinear_predict16x16_sse2 @970 + vp8_bilinear_predict16x16_ssse3 @971 + vp8_bilinear_predict4x4_mmx @972 + vp8_bilinear_predict8x4_mmx @973 + vp8_bilinear_predict8x8 @974 + vp8_bilinear_predict8x8_mmx @975 + vp8_bilinear_predict8x8_sse2 @976 + vp8_bilinear_predict8x8_ssse3 @977 + vp8_bits_per_mb @978 + vp8_blend_b_c @979 + vp8_blend_mb_inner_c @980 + vp8_blend_mb_outer_c @981 + vp8_block2above @982 + vp8_block2left @983 + vp8_block_error_c @984 + vp8_block_error_mmx @985 + vp8_block_error_xmm @986 + vp8_bmode_encodings @987 + vp8_bmode_prob @988 + vp8_bmode_tree @989 + vp8_build_block_doffsets @990 + vp8_build_block_offsets @991 + vp8_build_component_cost_table @992 + vp8_build_inter16x16_predictors_mb @993 + vp8_build_inter16x16_predictors_mbuv @994 + vp8_build_inter16x16_predictors_mby @995 + vp8_build_inter4x4_predictors_mbuv @996 + vp8_build_inter_predictors_b @997 + vp8_build_inter_predictors_mb @998 + vp8_build_intra_predictors_mbuv_s @999 + vp8_build_intra_predictors_mbuv_s_sse2 @1000 + vp8_build_intra_predictors_mbuv_s_ssse3 @1001 + vp8_build_intra_predictors_mby_s @1002 + vp8_build_intra_predictors_mby_s_sse2 @1003 + vp8_build_intra_predictors_mby_s_ssse3 @1004 + vp8_cal_sad @1005 + vp8_calc_ref_frame_costs @1006 + vp8_calc_ss_err @1007 + vp8_change_config @1008 + vp8_clear_system_state_c @1009 + vp8_coef_bands @1010 + vp8_coef_encodings @1011 + vp8_coef_tree @1012 + vp8_coef_update_probs @1013 + vp8_compute_frame_size_bounds @1014 + vp8_convert_rfct_to_prob @1015 + vp8_copy32xn @1016 + vp8_copy32xn_c @1017 + vp8_copy32xn_sse2 @1018 + vp8_copy32xn_sse3 @1019 + vp8_copy_and_extend_frame @1020 + vp8_copy_and_extend_frame_with_rect @1021 + vp8_copy_mem16x16_c @1022 + vp8_copy_mem16x16_mmx @1023 + vp8_copy_mem16x16_sse2 @1024 + vp8_copy_mem8x4_c @1025 + vp8_copy_mem8x4_mmx @1026 + vp8_copy_mem8x8_c @1027 + vp8_copy_mem8x8_mmx @1028 + vp8_cost_mv_ref @1029 + vp8_cost_tokens @1030 + vp8_cost_tokens2 @1031 + vp8_create_common @1032 + vp8_create_compressor @1033 + vp8_create_decoder_instances @1034 + vp8_ctf_maps @1035 + vp8_dc2quant @1036 + vp8_dc_only_idct_add_c @1037 + vp8_dc_only_idct_add_mmx @1038 + vp8_dc_quant @1039 + vp8_dc_uv_quant @1040 + vp8_dct_value_cost_ptr @1041 + vp8_dct_value_tokens_ptr @1042 + vp8_de_alloc_frame_buffers @1043 + vp8_deblock @1044 + vp8_decode_frame @1045 + vp8_decode_mb_tokens @1046 + vp8_decode_mode_mvs @1047 + vp8_decoder_create_threads @1048 + vp8_decoder_remove_threads @1049 + vp8_default_bmode_probs @1050 + vp8_default_coef_probs @1051 + vp8_default_inv_zig_zag @1052 + vp8_default_mv_context @1053 + vp8_default_zig_zag1d @1054 + vp8_default_zig_zag_mask @1055 + vp8_denoiser_allocate @1056 + vp8_denoiser_denoise_mb @1057 + vp8_denoiser_filter_c @1058 + vp8_denoiser_filter_sse2 @1059 + vp8_denoiser_free @1060 + vp8_dequant_idct_add_mmx @1061 + vp8_dequant_idct_add_uv_block_mmx @1062 + vp8_dequant_idct_add_uv_block_sse2 @1063 + vp8_dequant_idct_add_y_block_mmx @1064 + vp8_dequant_idct_add_y_block_sse2 @1065 + vp8_dequantize_b_impl_mmx @1066 + vp8_dequantize_b_mmx @1067 + vp8_diamond_search_sad @1068 + vp8_diamond_search_sad_c @1069 + vp8_diamond_search_sadx4 @1070 + vp8_encode_frame @1071 + vp8_encode_inter16x16 @1072 + vp8_encode_inter16x16y @1073 + vp8_encode_intra @1074 + vp8_encode_intra16x16mbuv @1075 + vp8_encode_intra16x16mby @1076 + vp8_encode_intra4x4block @1077 + vp8_encode_intra4x4mby @1078 + vp8_encode_motion_vector @1079 + vp8_encode_value @1080 + vp8_end_first_pass @1081 + vp8_end_second_pass @1082 + vp8_estimate_entropy_savings @1083 + vp8_extend_mb_row @1084 + vp8_extra_bits @1085 + vp8_fast_quantize_b @1086 + vp8_fast_quantize_b_c @1087 + vp8_fast_quantize_b_pair_c @1088 + vp8_fast_quantize_b_sse2 @1089 + vp8_fast_quantize_b_ssse3 @1090 + vp8_filter_block1d16_h6_only_sse2 @1091 + vp8_filter_block1d16_h6_sse2 @1092 + vp8_filter_block1d16_h6_ssse3 @1093 + vp8_filter_block1d16_v6_sse2 @1094 + vp8_filter_block1d16_v6_ssse3 @1095 + vp8_filter_block1d4_h6_ssse3 @1096 + vp8_filter_block1d4_v6_ssse3 @1097 + vp8_filter_block1d8_h6_only_sse2 @1098 + vp8_filter_block1d8_h6_sse2 @1099 + vp8_filter_block1d8_h6_ssse3 @1100 + vp8_filter_block1d8_v6_only_sse2 @1101 + vp8_filter_block1d8_v6_sse2 @1102 + vp8_filter_block1d8_v6_ssse3 @1103 + vp8_filter_block1d_h6_mmx @1104 + vp8_filter_block1dc_v6_mmx @1105 + vp8_filter_block2d_bil4x4_var_mmx @1106 + vp8_filter_block2d_bil_var_mmx @1107 + vp8_filter_block2d_bil_var_sse2 @1108 + vp8_filter_block2d_bil_var_ssse3 @1109 + vp8_filter_by_weight16x16_c @1110 + vp8_filter_by_weight16x16_sse2 @1111 + vp8_filter_by_weight4x4_c @1112 + vp8_filter_by_weight8x8_c @1113 + vp8_filter_by_weight8x8_sse2 @1114 + vp8_find_best_half_pixel_step @1115 + vp8_find_best_sub_pixel_step @1116 + vp8_find_best_sub_pixel_step_iteratively @1117 + vp8_find_near_mvs @1118 + vp8_find_near_mvs_bias @1119 + vp8_first_pass @1120 + vp8_fix_contexts @1121 + vp8_full_search_sad @1122 + vp8_full_search_sad_c @1123 + vp8_full_search_sadx3 @1124 + vp8_full_search_sadx8 @1125 + vp8_gaussian @1126 + vp8_get16x16var_sse2 @1127 + vp8_get4x4sse_cs_c @1128 + vp8_get4x4sse_cs_mmx @1129 + vp8_get4x4var_mmx @1130 + vp8_get8x8var_mmx @1131 + vp8_get8x8var_sse2 @1132 + vp8_get_compressed_data @1133 + vp8_get_inter_mbpred_error @1134 + vp8_get_mb_ss_mmx @1135 + vp8_get_mb_ss_sse2 @1136 + vp8_get_preview_raw_frame @1137 + vp8_get_quantizer @1138 + vp8_get_reference @1139 + vp8_gf_boost_qadjustment @1140 + vp8_half_horiz_variance16x_h_sse2 @1141 + vp8_half_horiz_variance8x_h_sse2 @1142 + vp8_half_horiz_vert_variance16x_h_sse2 @1143 + vp8_half_horiz_vert_variance8x_h_sse2 @1144 + vp8_half_vert_variance16x_h_sse2 @1145 + vp8_half_vert_variance8x_h_sse2 @1146 + vp8_hex_search @1147 + vp8_horizontal_line_2_1_scale_c @1148 + vp8_horizontal_line_5_3_scale_c @1149 + vp8_horizontal_line_5_4_scale_c @1150 + vp8_idct_dequant_0_2x_sse2 @1151 + vp8_idct_dequant_dc_0_2x_sse2 @1152 + vp8_idct_dequant_dc_full_2x_sse2 @1153 + vp8_idct_dequant_full_2x_sse2 @1154 + vp8_init3smotion_compensation @1155 + vp8_init_dsmotion_compensation @1156 + vp8_init_first_pass @1157 + vp8_init_mbmode_probs @1158 + vp8_init_mode_costs @1159 + vp8_init_second_pass @1160 + vp8_initialize_rd_consts @1161 + vp8_intra4x4_predict_c @1162 + vp8_intra_pred_uv_dc128_mmx @1163 + vp8_intra_pred_uv_dc_mmx2 @1164 + vp8_intra_pred_uv_dcleft_mmx2 @1165 + vp8_intra_pred_uv_dctop_mmx2 @1166 + vp8_intra_pred_uv_ho_mmx2 @1167 + vp8_intra_pred_uv_ho_ssse3 @1168 + vp8_intra_pred_uv_tm_sse2 @1169 + vp8_intra_pred_uv_tm_ssse3 @1170 + vp8_intra_pred_uv_ve_mmx @1171 + vp8_intra_pred_y_dc128_sse2 @1172 + vp8_intra_pred_y_dc_sse2 @1173 + vp8_intra_pred_y_dcleft_sse2 @1174 + vp8_intra_pred_y_dctop_sse2 @1175 + vp8_intra_pred_y_ho_sse2 @1176 + vp8_intra_pred_y_tm_sse2 @1177 + vp8_intra_pred_y_tm_ssse3 @1178 + vp8_intra_pred_y_ve_sse2 @1179 + vp8_kf_bmode_prob @1180 + vp8_kf_uv_mode_prob @1181 + vp8_kf_ymode_encodings @1182 + vp8_kf_ymode_prob @1183 + vp8_kf_ymode_tree @1184 + vp8_lookahead_depth @1185 + vp8_lookahead_destroy @1186 + vp8_lookahead_init @1187 + vp8_lookahead_peek @1188 + vp8_lookahead_pop @1189 + vp8_lookahead_push @1190 + vp8_loop_filter_bh_mmx @1191 + vp8_loop_filter_bh_sse2 @1192 + vp8_loop_filter_bh_y_sse2 @1193 + vp8_loop_filter_bhs_mmx @1194 + vp8_loop_filter_bhs_sse2 @1195 + vp8_loop_filter_bv_mmx @1196 + vp8_loop_filter_bv_sse2 @1197 + vp8_loop_filter_bv_y_sse2 @1198 + vp8_loop_filter_bvs_mmx @1199 + vp8_loop_filter_bvs_sse2 @1200 + vp8_loop_filter_frame @1201 + vp8_loop_filter_frame_init @1202 + vp8_loop_filter_frame_yonly @1203 + vp8_loop_filter_horizontal_edge_mmx @1204 + vp8_loop_filter_horizontal_edge_uv_sse2 @1205 + vp8_loop_filter_init @1206 + vp8_loop_filter_mbh_mmx @1207 + vp8_loop_filter_mbh_sse2 @1208 + vp8_loop_filter_mbv_mmx @1209 + vp8_loop_filter_mbv_sse2 @1210 + vp8_loop_filter_partial_frame @1211 + vp8_loop_filter_row_normal @1212 + vp8_loop_filter_row_simple @1213 + vp8_loop_filter_simple_horizontal_edge_mmx @1214 + vp8_loop_filter_simple_horizontal_edge_sse2 @1215 + vp8_loop_filter_simple_vertical_edge_mmx @1216 + vp8_loop_filter_simple_vertical_edge_sse2 @1217 + vp8_loop_filter_update_sharpness @1218 + vp8_loop_filter_vertical_edge_mmx @1219 + vp8_loop_filter_vertical_edge_uv_sse2 @1220 + vp8_loopfilter_frame @1221 + vp8_machine_specific_config @1222 + vp8_mb_feature_data_bits @1223 + vp8_mb_init_dequantizer @1224 + vp8_mbblock_error_c @1225 + vp8_mbblock_error_mmx_impl @1226 + vp8_mbblock_error_xmm @1227 + vp8_mbblock_error_xmm_impl @1228 + vp8_mbloop_filter_horizontal_edge_mmx @1229 + vp8_mbloop_filter_horizontal_edge_sse2 @1230 + vp8_mbloop_filter_horizontal_edge_uv_sse2 @1231 + vp8_mbloop_filter_vertical_edge_mmx @1232 + vp8_mbloop_filter_vertical_edge_sse2 @1233 + vp8_mbloop_filter_vertical_edge_uv_sse2 @1234 + vp8_mbpost_proc_across_ip_c @1235 + vp8_mbpost_proc_across_ip_xmm @1236 + vp8_mbpost_proc_down_c @1237 + vp8_mbpost_proc_down_xmm @1238 + vp8_mbsplit_count @1239 + vp8_mbsplit_encodings @1240 + vp8_mbsplit_offset @1241 + vp8_mbsplit_probs @1242 + vp8_mbsplit_tree @1243 + vp8_mbsplits @1244 + vp8_mbuverror_c @1245 + vp8_mbuverror_mmx_impl @1246 + vp8_mbuverror_xmm @1247 + vp8_mbuverror_xmm_impl @1248 + vp8_mode_contexts @1249 + vp8_mode_order @1250 + vp8_mse16x16_wmt @1251 + vp8_mse2psnr @1252 + vp8_multiframe_quality_enhance @1253 + vp8_mv_bit_cost @1254 + vp8_mv_cont @1255 + vp8_mv_pred @1256 + vp8_mv_ref_encoding_array @1257 + vp8_mv_ref_probs @1258 + vp8_mv_ref_tree @1259 + vp8_mv_update_probs @1260 + vp8_new_framerate @1261 + vp8_norm @1262 + vp8_optimize_mbuv @1263 + vp8_optimize_mby @1264 + vp8_pack_bitstream @1265 + vp8_pack_tokens_c @1266 + vp8_pick_frame_size @1267 + vp8_pick_inter_mode @1268 + vp8_pick_intra_mode @1269 + vp8_plane_add_noise_c @1270 + vp8_plane_add_noise_wmt @1271 + vp8_post_proc_down_and_across_mb_row_c @1272 + vp8_post_proc_down_and_across_mb_row_sse2 @1273 + vp8_post_proc_frame @1274 + vp8_prev_token_class @1275 + vp8_prob_cost @1276 + vp8_quantize_mb_c @1277 + vp8_quantize_mbuv_c @1278 + vp8_quantize_mby_c @1279 + vp8_rd_pick_inter_mode @1280 + vp8_rd_pick_intra_mode @1281 + vp8_receive_raw_frame @1282 + vp8_ref_frame_order @1283 + vp8_refining_search_sad @1284 + vp8_refining_search_sad_c @1285 + vp8_refining_search_sadx4 @1286 + vp8_regular_quantize_b_c @1287 + vp8_regular_quantize_b_pair_c @1288 + vp8_regular_quantize_b_sse2 @1289 + vp8_regulate_q @1290 + vp8_remove_common @1291 + vp8_remove_compressor @1292 + vp8_remove_decoder_instances @1293 + vp8_reset_mb_tokens_context @1294 + vp8_restore_coding_context @1295 + vp8_reverse_trans @1296 + vp8_rtcd @1297 + vp8_rv @1298 + vp8_sad16x16 @1299 + vp8_sad16x16_c @1300 + vp8_sad16x16_sse3 @1301 + vp8_sad16x16_wmt @1302 + vp8_sad16x16x3 @1303 + vp8_sad16x16x3_c @1304 + vp8_sad16x16x3_sse3 @1305 + vp8_sad16x16x3_ssse3 @1306 + vp8_sad16x16x4d @1307 + vp8_sad16x16x4d_c @1308 + vp8_sad16x16x4d_sse3 @1309 + vp8_sad16x16x8 @1310 + vp8_sad16x16x8_c @1311 + vp8_sad16x16x8_sse4 @1312 + vp8_sad16x8_c @1313 + vp8_sad16x8_wmt @1314 + vp8_sad16x8x3 @1315 + vp8_sad16x8x3_c @1316 + vp8_sad16x8x3_sse3 @1317 + vp8_sad16x8x3_ssse3 @1318 + vp8_sad16x8x4d @1319 + vp8_sad16x8x4d_c @1320 + vp8_sad16x8x4d_sse3 @1321 + vp8_sad16x8x8 @1322 + vp8_sad16x8x8_c @1323 + vp8_sad16x8x8_sse4 @1324 + vp8_sad4x4_c @1325 + vp8_sad4x4_wmt @1326 + vp8_sad4x4x3 @1327 + vp8_sad4x4x3_c @1328 + vp8_sad4x4x3_sse3 @1329 + vp8_sad4x4x4d @1330 + vp8_sad4x4x4d_c @1331 + vp8_sad4x4x4d_sse3 @1332 + vp8_sad4x4x8 @1333 + vp8_sad4x4x8_c @1334 + vp8_sad4x4x8_sse4 @1335 + vp8_sad8x16_c @1336 + vp8_sad8x16_wmt @1337 + vp8_sad8x16x3 @1338 + vp8_sad8x16x3_c @1339 + vp8_sad8x16x3_sse3 @1340 + vp8_sad8x16x4d @1341 + vp8_sad8x16x4d_c @1342 + vp8_sad8x16x4d_sse3 @1343 + vp8_sad8x16x8 @1344 + vp8_sad8x16x8_c @1345 + vp8_sad8x16x8_sse4 @1346 + vp8_sad8x8_c @1347 + vp8_sad8x8_wmt @1348 + vp8_sad8x8x3 @1349 + vp8_sad8x8x3_c @1350 + vp8_sad8x8x3_sse3 @1351 + vp8_sad8x8x4d @1352 + vp8_sad8x8x4d_c @1353 + vp8_sad8x8x4d_sse3 @1354 + vp8_sad8x8x8 @1355 + vp8_sad8x8x8_c @1356 + vp8_sad8x8x8_sse4 @1357 + vp8_save_coding_context @1358 + vp8_second_pass @1359 + vp8_set_active_map @1360 + vp8_set_internal_size @1361 + vp8_set_mbmode_and_mvs @1362 + vp8_set_quantizer @1363 + vp8_set_reference @1364 + vp8_set_roimap @1365 + vp8_set_speed_features @1366 + vp8_setup_block_dptrs @1367 + vp8_setup_block_ptrs @1368 + vp8_setup_intra_recon @1369 + vp8_setup_intra_recon_top_line @1370 + vp8_setup_key_frame @1371 + vp8_setup_version @1372 + vp8_short_fdct4x4_sse2 @1373 + vp8_short_fdct8x4_sse2 @1374 + vp8_short_idct4x4llm_c @1375 + vp8_short_idct4x4llm_mmx @1376 + vp8_short_inv_walsh4x4_1_c @1377 + vp8_short_inv_walsh4x4_c @1378 + vp8_short_inv_walsh4x4_sse2 @1379 + vp8_short_walsh4x4_sse2 @1380 + vp8_six_tap_mmx @1381 + vp8_sixtap_predict16x16 @1382 + vp8_sixtap_predict16x16_mmx @1383 + vp8_sixtap_predict16x16_sse2 @1384 + vp8_sixtap_predict16x16_ssse3 @1385 + vp8_sixtap_predict4x4 @1386 + vp8_sixtap_predict4x4_mmx @1387 + vp8_sixtap_predict4x4_ssse3 @1388 + vp8_sixtap_predict8x4 @1389 + vp8_sixtap_predict8x4_mmx @1390 + vp8_sixtap_predict8x4_sse2 @1391 + vp8_sixtap_predict8x4_ssse3 @1392 + vp8_sixtap_predict8x8 @1393 + vp8_sixtap_predict8x8_mmx @1394 + vp8_sixtap_predict8x8_sse2 @1395 + vp8_sixtap_predict8x8_ssse3 @1396 + vp8_skip_fractional_mv_step @1397 + vp8_small_mvencodings @1398 + vp8_small_mvtree @1399 + vp8_start_encode @1400 + vp8_stop_encode @1401 + vp8_strict_quantize_b_c @1402 + vp8_stuff_mb @1403 + vp8_sub_mv_ref_encoding_array @1404 + vp8_sub_mv_ref_prob2 @1405 + vp8_sub_mv_ref_prob3 @1406 + vp8_sub_mv_ref_tree @1407 + vp8_sub_pixel_mse16x16_wmt @1408 + vp8_sub_pixel_variance16x16 @1409 + vp8_sub_pixel_variance16x16_ssse3 @1410 + vp8_sub_pixel_variance16x16_wmt @1411 + vp8_sub_pixel_variance16x8 @1412 + vp8_sub_pixel_variance16x8_ssse3 @1413 + vp8_sub_pixel_variance16x8_wmt @1414 + vp8_sub_pixel_variance4x4_wmt @1415 + vp8_sub_pixel_variance8x16_wmt @1416 + vp8_sub_pixel_variance8x8_wmt @1417 + vp8_subtract_b_c @1418 + vp8_subtract_b_sse2 @1419 + vp8_subtract_b_sse2_impl @1420 + vp8_subtract_mbuv_c @1421 + vp8_subtract_mbuv_sse2 @1422 + vp8_subtract_mby_c @1423 + vp8_subtract_mby_sse2 @1424 + vp8_swap_yv12_buffer @1425 + vp8_temporal_filter_apply_c @1426 + vp8_temporal_filter_apply_sse2 @1427 + vp8_temporal_filter_prepare_c @1428 + vp8_tokenize_mb @1429 + vp8_tokens_from_tree @1430 + vp8_tokens_from_tree_offset @1431 + vp8_transform_intra_mby @1432 + vp8_transform_mbuv @1433 + vp8_tree_probs_from_distribution @1434 + vp8_unpack_block1d16_h6_sse2 @1435 + vp8_update_coef_probs @1436 + vp8_update_entropy @1437 + vp8_update_gf_useage_maps @1438 + vp8_update_rate_correction_factors @1439 + vp8_update_reference @1440 + vp8_update_zbin_extra @1441 + vp8_use_as_reference @1442 + vp8_uv_mode_encodings @1443 + vp8_uv_mode_prob @1444 + vp8_uv_mode_tree @1445 + vp8_variance16x16_wmt @1446 + vp8_variance16x8_wmt @1447 + vp8_variance4x4_wmt @1448 + vp8_variance8x16_wmt @1449 + vp8_variance8x8_wmt @1450 + vp8_variance_and_sad_16x16_sse2 @1451 + vp8_variance_halfpixvar16x16_h_wmt @1452 + vp8_variance_halfpixvar16x16_hv_wmt @1453 + vp8_variance_halfpixvar16x16_v_wmt @1454 + vp8_vertical_band_2_1_scale_c @1455 + vp8_vertical_band_2_1_scale_i_c @1456 + vp8_vertical_band_5_3_scale_c @1457 + vp8_vertical_band_5_4_scale_c @1458 + vp8_write_mvprobs @1459 + vp8_ymode_encodings @1460 + vp8_ymode_prob @1461 + vp8_ymode_tree @1462 + vp8_yv12_alloc_frame_buffer @1463 + vp8_yv12_copy_frame_c @1464 + vp8_yv12_copy_partial_frame_c @1465 + vp8_yv12_de_alloc_frame_buffer @1466 + vp8_yv12_extend_frame_borders_c @1467 + vp8_yv12_realloc_frame_buffer @1468 + vp8cx_base_skip_false_prob @1469 + vp8cx_create_encoder_threads @1470 + vp8cx_encode_inter_macroblock @1471 + vp8cx_encode_intra_macroblock @1472 + vp8cx_frame_init_quantizer @1473 + vp8cx_init_de_quantizer @1474 + vp8cx_init_mbrthread_data @1475 + vp8cx_init_quantizer @1476 + vp8cx_initialize_me_consts @1477 + vp8cx_mb_init_quantizer @1478 + vp8cx_pick_filter_level @1479 + vp8cx_pick_filter_level_fast @1480 + vp8cx_remove_encoder_threads @1481 + vp8cx_set_alt_lf_level @1482 + vp8dx_bool_decoder_fill @1483 + vp8dx_get_raw_frame @1484 + vp8dx_get_reference @1485 + vp8dx_receive_compressed_data @1486 + vp8dx_references_buffer @1487 + vp8dx_set_reference @1488 + vp8dx_start_decode @1489 + vp8mt_alloc_temp_buffers @1490 + vp8mt_de_alloc_temp_buffers @1491 + vp8mt_decode_mb_rows @1492 + vp9_alloc_frame_buffer @1493 + vp9_extend_frame_borders_c @1494 + vp9_extend_frame_inner_borders_c @1495 + vp9_free_frame_buffer @1496 + vp9_realloc_frame_buffer @1497 + vpx_calloc @1498 + vpx_codec_control_ @1499 + vpx_codec_dec_init_ver @1500 + vpx_codec_decode @1501 + vpx_codec_destroy @1502 + vpx_codec_enc_config_default @1503 + vpx_codec_enc_config_set @1504 + vpx_codec_enc_init_multi_ver @1505 + vpx_codec_enc_init_ver @1506 + vpx_codec_encode @1507 + vpx_codec_err_to_string @1508 + vpx_codec_error @1509 + vpx_codec_error_detail @1510 + vpx_codec_get_caps @1511 + vpx_codec_get_cx_data @1512 + vpx_codec_get_frame @1513 + vpx_codec_get_global_headers @1514 + vpx_codec_get_mem_map @1515 + vpx_codec_get_preview_frame @1516 + vpx_codec_get_stream_info @1517 + vpx_codec_iface_name @1518 + vpx_codec_peek_stream_info @1519 + vpx_codec_pkt_list_add @1520 + vpx_codec_pkt_list_get @1521 + vpx_codec_register_put_frame_cb @1522 + vpx_codec_register_put_slice_cb @1523 + vpx_codec_set_cx_data_buf @1524 + vpx_codec_set_mem_map @1525 + vpx_codec_version @1526 + vpx_codec_version_extra_str @1527 + vpx_codec_version_str @1528 + vpx_codec_vp8_cx @1529 + vpx_codec_vp8_cx_algo @1530 + vpx_codec_vp8_dx @1531 + vpx_codec_vp8_dx_algo @1532 + vpx_free @1533 + vpx_malloc @1534 + vpx_mem_get_version @1535 + vpx_mem_set_functions @1536 + vpx_mem_set_heap_size @1537 + vpx_mem_unset_functions @1538 + vpx_memalign @1539 + vpx_memcpy @1540 + vpx_memmove @1541 + vpx_memset @1542 + vpx_mmap_alloc @1543 + vpx_mmap_dtor @1544 + vpx_realloc @1545 + vpx_reset_mmx_state @1546 + vpx_scale_frame @1547 + vpx_scale_rtcd @1548 + vpx_validate_mmaps @1549 + vpx_winx64_fldcw @1550 + vpx_winx64_fstcw @1551 + vpx_yv12_copy_y_c @1552 + write_cryptpacket @1553 diff --git a/protocols/Tox/lib/x86/libtox.def b/protocols/Tox/lib/x86/libtox.def new file mode 100644 index 0000000000..8dde234cc7 --- /dev/null +++ b/protocols/Tox/lib/x86/libtox.def @@ -0,0 +1,1704 @@ +LIBRARY "libtox" + +EXPORTS + Assoc_add_entry @1 + Assoc_get_close_entries @2 + Assoc_self_client_id_changed @3 + ClientPair_quick_sort @4 + DHT_addfriend @5 + DHT_bootstrap @6 + DHT_bootstrap_from_address @7 + DHT_delfriend @8 + DHT_get_close_list @9 + DHT_get_shared_key_recv @10 + DHT_get_shared_key_sent @11 + DHT_getfriendip @12 + DHT_getnodes @13 + DHT_isconnected @14 + DHT_load @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_path @114 + create_queue @115 + create_request @116 + crypto_box @117 + crypto_box_afternm @118 + crypto_box_beforenm @119 + crypto_box_beforenmbytes @120 + crypto_box_boxzerobytes @121 + crypto_box_curve25519xsalsa20poly1305 @122 + crypto_box_curve25519xsalsa20poly1305_afternm @123 + crypto_box_curve25519xsalsa20poly1305_beforenm @124 + crypto_box_curve25519xsalsa20poly1305_keypair @125 + crypto_box_curve25519xsalsa20poly1305_open @126 + crypto_box_curve25519xsalsa20poly1305_open_afternm @127 + crypto_box_curve25519xsalsa20poly1305_seed_keypair @128 + crypto_box_keypair @129 + crypto_box_macbytes @130 + crypto_box_noncebytes @131 + crypto_box_open @132 + crypto_box_open_afternm @133 + crypto_box_primitive @134 + crypto_box_publickeybytes @135 + crypto_box_secretkeybytes @136 + crypto_box_seed_keypair @137 + crypto_box_seedbytes @138 + crypto_box_zerobytes @139 + crypto_cmp @140 + crypto_connection_status @141 + crypto_core_hsalsa20 @142 + crypto_core_salsa20 @143 + crypto_hash_sha256 @144 + crypto_hash_sha256_final @145 + crypto_hash_sha256_init @146 + crypto_hash_sha256_update @147 + crypto_hash_sha512 @148 + crypto_hash_sha512_final @149 + crypto_hash_sha512_init @150 + crypto_hash_sha512_update @151 + crypto_kill @152 + crypto_num_free_sendqueue_slots @153 + crypto_onetimeauth_pick_best_implementation @154 + crypto_onetimeauth_poly1305 @155 + crypto_onetimeauth_poly1305_donna @156 + crypto_onetimeauth_poly1305_donna_final @157 + crypto_onetimeauth_poly1305_donna_implementation @158 + crypto_onetimeauth_poly1305_donna_implementation_name @159 + crypto_onetimeauth_poly1305_donna_init @160 + crypto_onetimeauth_poly1305_donna_update @161 + crypto_onetimeauth_poly1305_donna_verify @162 + crypto_onetimeauth_poly1305_final @163 + crypto_onetimeauth_poly1305_implementation_name @164 + crypto_onetimeauth_poly1305_init @165 + crypto_onetimeauth_poly1305_set_implementation @166 + crypto_onetimeauth_poly1305_update @167 + crypto_onetimeauth_poly1305_verify @168 + crypto_run_interval @169 + crypto_scalarmult_curve25519 @170 + crypto_scalarmult_curve25519_base @171 + crypto_scalarmult_curve25519_ref10_fe_0 @172 + crypto_scalarmult_curve25519_ref10_fe_1 @173 + crypto_scalarmult_curve25519_ref10_fe_add @174 + crypto_scalarmult_curve25519_ref10_fe_copy @175 + crypto_scalarmult_curve25519_ref10_fe_cswap @176 + crypto_scalarmult_curve25519_ref10_fe_frombytes @177 + crypto_scalarmult_curve25519_ref10_fe_invert @178 + crypto_scalarmult_curve25519_ref10_fe_mul @179 + crypto_scalarmult_curve25519_ref10_fe_mul121666 @180 + crypto_scalarmult_curve25519_ref10_fe_sq @181 + crypto_scalarmult_curve25519_ref10_fe_sub @182 + crypto_scalarmult_curve25519_ref10_fe_tobytes @183 + crypto_secretbox_xsalsa20poly1305 @184 + crypto_secretbox_xsalsa20poly1305_open @185 + crypto_stream_salsa20 @186 + crypto_stream_salsa20_keybytes @187 + crypto_stream_salsa20_noncebytes @188 + crypto_stream_salsa20_xor @189 + crypto_stream_salsa20_xor_ic @190 + crypto_stream_xsalsa20 @191 + crypto_stream_xsalsa20_xor @192 + crypto_verify_16 @193 + crypto_verify_32 @194 + cryptopacket_registerhandler @195 + current_time_monotonic @196 + custom_lossless_packet_registerhandler @197 + custom_lossy_packet_registerhandler @198 + decode_pulses @199 + decrypt_data @200 + decrypt_data_symmetric @201 + del_groupchat @202 + denormalise_bands @203 + dequeue @204 + do_Assoc @205 + do_DHT @206 + do_TCP_connection @207 + do_TCP_server @208 + do_friends @209 + do_groupchat @210 + do_hardening @211 + do_messenger @212 + do_net_crypto @213 + do_onion_client @214 + do_sema_b_wait_intern @215 + do_to_ping @216 + downmix_float @217 + downmix_int @218 + eMeans @219 + ec_dec_bit_logp @220 + ec_dec_bits @221 + ec_dec_icdf @222 + ec_dec_init @223 + ec_dec_uint @224 + ec_dec_update @225 + ec_decode @226 + ec_decode_bin @227 + ec_enc_bit_logp @228 + ec_enc_bits @229 + ec_enc_done @230 + ec_enc_icdf @231 + ec_enc_init @232 + ec_enc_patch_initial_bits @233 + ec_enc_shrink @234 + ec_enc_uint @235 + ec_encode @236 + ec_encode_bin @237 + ec_laplace_decode @238 + ec_laplace_encode @239 + ec_tell_frac @240 + encode_pulses @241 + encode_size @242 + encrypt_data @243 + encrypt_data_symmetric @244 + encrypt_precompute @245 + energy_VAD @246 + extract_ext_header @247 + extract_header @248 + file_control @249 + file_data @250 + file_dataremaining @251 + file_sendrequest @252 + format_output @253 + frame_size_select @254 + friend_ips @255 + friendreq_init @256 + get_close_nodes @257 + get_connection_dht_key @258 + get_friendlist @259 + get_nospam @260 + get_num_online_friends @261 + get_shared_key @262 + getaddress @263 + getclient_id @264 + getfriend_id @265 + getname @266 + getself_name @267 + group_action_send @268 + group_client_names @269 + group_message_send @270 + group_names @271 + group_newpeer @272 + group_number_peers @273 + group_numpeers @274 + group_peername @275 + group_sendaction @276 + group_sendmessage @277 + haar1 @278 + handle_groupchatpacket @279 + handle_request @280 + host_to_net @281 + hysteresis_decision @282 + id_closest @283 + id_copy @284 + id_equal @285 + increment_nonce @286 + increment_nonce_number @287 + init_audio_decoder @288 + init_audio_encoder @289 + init_caps @290 + init_video_decoder @291 + init_video_encoder @292 + invite_friend @293 + invoke_callback @294 + ip_copy @295 + ip_equal @296 + ip_init @297 + ip_isset @298 + ip_ntoa @299 + ip_pack @300 + ip_reset @301 + ip_unpack @302 + ipport_copy @303 + ipport_equal @304 + ipport_isset @305 + ipport_pack @306 + ipport_unpack @307 + is_timeout @308 + isqrt32 @309 + join_groupchat @310 + kill_Assoc @311 + kill_DHT @312 + kill_TCP_connection @313 + kill_TCP_server @314 + kill_groupchat @315 + kill_messenger @316 + kill_net_crypto @317 + kill_networking @318 + kill_onion @319 + kill_onion_announce @320 + kill_onion_client @321 + kill_ping @322 + kill_sock @323 + load_keys @324 + load_state @325 + m_addfriend @326 + m_addfriend_norequest @327 + m_callback_action @328 + m_callback_connectionstatus @329 + m_callback_connectionstatus_internal_av @330 + m_callback_friendmessage @331 + m_callback_friendrequest @332 + m_callback_group_action @333 + m_callback_group_invite @334 + m_callback_group_message @335 + m_callback_group_namelistchange @336 + m_callback_msi_packet @337 + m_callback_namechange @338 + m_callback_read_receipt @339 + m_callback_statusmessage @340 + m_callback_typingchange @341 + m_callback_userstatus @342 + m_copy_self_statusmessage @343 + m_copy_statusmessage @344 + m_delfriend @345 + m_friend_exists @346 + m_get_friend_connectionstatus @347 + m_get_istyping @348 + m_get_last_online @349 + m_get_name_size @350 + m_get_self_name_size @351 + m_get_self_statusmessage_size @352 + m_get_self_userstatus @353 + m_get_statusmessage_size @354 + m_get_userstatus @355 + m_group_peername @356 + m_msi_packet @357 + m_sendaction @358 + m_sendaction_withid @359 + m_sendmessage @360 + m_sendmessage_withid @361 + m_set_sends_receipts @362 + m_set_statusmessage @363 + m_set_userstatus @364 + m_set_usertyping @365 + messenger_load @366 + messenger_run_interval @367 + messenger_save @368 + messenger_size @369 + mlp_process @370 + msg_parse @371 + msi_answer @372 + msi_cancel @373 + msi_change_csettings @374 + msi_hangup @375 + msi_init_session @376 + msi_invite @377 + msi_msg_get_csettings @378 + msi_msg_set_callid @379 + msi_msg_set_csettings @380 + msi_msg_set_reason @381 + msi_new_message @382 + msi_register_callback @383 + msi_reject @384 + msi_stopcall @385 + msi_terminate_session @386 + mutex_print @387 + mutex_print_set @388 + net @389 + networking_at_startup @390 + networking_poll @391 + networking_registerhandler @392 + new_Assoc @393 + new_Assoc_default @394 + new_DHT @395 + new_TCP_connection @396 + new_TCP_server @397 + new_connection_handler @398 + new_crypto_connection @399 + new_filesender @400 + new_groupchat @401 + new_keys @402 + new_messenger @403 + new_net_crypto @404 + new_networking @405 + new_nonce @406 + new_onion @407 + new_onion_announce @408 + new_onion_client @409 + new_ping @410 + new_symmetric_key @411 + normalise_bands @412 + onion_addfriend @413 + onion_delfriend @414 + onion_friend_num @415 + onion_getfriend_DHT_pubkey @416 + onion_getfriendip @417 + onion_response_handler @418 + onion_send_1 @419 + onion_set_friend_DHT_pubkey @420 + onion_set_friend_online @421 + oniondata_registerhandler @422 + oob_data_handler @423 + optimize_framesize @424 + opus_custom_decoder_ctl @425 + opus_custom_encoder_ctl @426 + opus_custom_mode_create @427 + opus_decode @428 + opus_decode_float @429 + opus_decode_native @430 + opus_decoder_create @431 + opus_decoder_ctl @432 + opus_decoder_destroy @433 + opus_decoder_get_nb_samples @434 + opus_decoder_get_size @435 + opus_decoder_init @436 + opus_encode @437 + opus_encode_float @438 + opus_encode_native @439 + opus_encoder_create @440 + opus_encoder_ctl @441 + opus_encoder_destroy @442 + opus_encoder_get_size @443 + opus_encoder_init @444 + opus_fft @445 + opus_get_version_string @446 + opus_ifft @447 + opus_multistream_packet_pad @448 + opus_multistream_packet_unpad @449 + opus_packet_get_bandwidth @450 + opus_packet_get_nb_channels @451 + opus_packet_get_nb_frames @452 + opus_packet_get_nb_samples @453 + opus_packet_get_samples_per_frame @454 + opus_packet_pad @455 + opus_packet_parse @456 + opus_packet_parse_impl @457 + opus_packet_unpad @458 + opus_pcm_soft_clip @459 + opus_repacketizer_cat @460 + opus_repacketizer_create @461 + opus_repacketizer_destroy @462 + opus_repacketizer_get_nb_frames @463 + opus_repacketizer_get_size @464 + opus_repacketizer_init @465 + opus_repacketizer_out @466 + opus_repacketizer_out_range @467 + opus_repacketizer_out_range_impl @468 + opus_strerror @469 + pack_nodes @470 + parse_recv @471 + parse_send @472 + patch_transient_decision @473 + ping_array_add @474 + ping_array_check @475 + ping_array_free_all @476 + ping_array_init @477 + pitch_downsample @478 + pitch_search @479 + pthread_attr_destroy @480 + pthread_attr_getdetachstate @481 + pthread_attr_getinheritsched @482 + pthread_attr_getscope @483 + pthread_attr_getstackaddr @484 + pthread_attr_getstacksize @485 + pthread_attr_init @486 + pthread_attr_setdetachstate @487 + pthread_attr_setinheritsched @488 + pthread_attr_setscope @489 + pthread_attr_setstackaddr @490 + pthread_attr_setstacksize @491 + pthread_cancel @492 + pthread_cond_broadcast @493 + pthread_cond_destroy @494 + pthread_cond_init @495 + pthread_cond_signal @496 + pthread_cond_timedwait @497 + pthread_cond_timedwait_relative @498 + pthread_cond_wait @499 + pthread_condattr_destroy @500 + pthread_condattr_getclock @501 + pthread_condattr_getpshared @502 + pthread_condattr_init @503 + pthread_condattr_setclock @504 + pthread_condattr_setpshared @505 + pthread_create @506 + pthread_create_wrapper @507 + pthread_delay_np @508 + pthread_delay_np_ms @509 + pthread_detach @510 + pthread_equal @511 + pthread_exit @512 + pthread_get_concurrency @513 + pthread_getclean @514 + pthread_getconcurrency @515 + pthread_getevent @516 + pthread_gethandle @517 + pthread_getspecific @518 + pthread_join @519 + pthread_key_create @520 + pthread_key_delete @521 + pthread_kill @522 + pthread_mutex_destroy @523 + pthread_mutex_init @524 + pthread_mutex_lock @525 + pthread_mutex_timedlock @526 + pthread_mutex_trylock @527 + pthread_mutex_unlock @528 + pthread_mutexattr_destroy @529 + pthread_mutexattr_getprioceiling @530 + pthread_mutexattr_getprotocol @531 + pthread_mutexattr_getpshared @532 + pthread_mutexattr_gettype @533 + pthread_mutexattr_init @534 + pthread_mutexattr_setprioceiling @535 + pthread_mutexattr_setprotocol @536 + pthread_mutexattr_setpshared @537 + pthread_mutexattr_settype @538 + pthread_num_processors_np @539 + pthread_once @540 + pthread_rwlock_destroy @541 + pthread_rwlock_init @542 + pthread_rwlock_rdlock @543 + pthread_rwlock_timedrdlock @544 + pthread_rwlock_timedwrlock @545 + pthread_rwlock_tryrdlock @546 + pthread_rwlock_trywrlock @547 + pthread_rwlock_unlock @548 + pthread_rwlock_wrlock @549 + pthread_rwlockattr_destroy @550 + pthread_rwlockattr_getpshared @551 + pthread_rwlockattr_init @552 + pthread_rwlockattr_setpshared @553 + pthread_self @554 + pthread_set_concurrency @555 + pthread_set_num_processors_np @556 + pthread_setcancelstate @557 + pthread_setcanceltype @558 + pthread_setconcurrency @559 + pthread_setspecific @560 + pthread_spin_destroy @561 + pthread_spin_init @562 + pthread_spin_lock @563 + pthread_spin_trylock @564 + pthread_spin_unlock @565 + pthread_testcancel @566 + pthread_timechange_handler_np @567 + pthread_tls_init @568 + public_key_valid @569 + quant_all_bands @570 + quant_coarse_energy @571 + quant_energy_finalise @572 + quant_fine_energy @573 + queue @574 + random_64b @575 + random_int @576 + random_node @577 + random_nodes_path @578 + random_nonce @579 + randombytes @580 + randombytes_buf @581 + randombytes_close @582 + randombytes_implementation_name @583 + randombytes_random @584 + randombytes_set_implementation @585 + randombytes_stir @586 + randombytes_sysrandom @587 + randombytes_sysrandom_buf @588 + randombytes_sysrandom_close @589 + randombytes_sysrandom_implementation @590 + randombytes_sysrandom_implementation_name @591 + randombytes_sysrandom_stir @592 + randombytes_sysrandom_uniform @593 + randombytes_uniform @594 + read_TCP_length @595 + read_TCP_packet @596 + read_packet_TCP_secure_connection @597 + realloc_friendlist @598 + reconfigure_video_encoder_bitrate @599 + reconfigure_video_encoder_resolution @600 + recv_tcp_relay_handler @601 + remove_doubling @602 + remove_request_received @603 + renormalise_vector @604 + resampling_factor @605 + route_packet @606 + route_tofriend @607 + routing_data_handler @608 + routing_response_handler @609 + routing_status_handler @610 + rtp_free_msg @611 + rtp_handle_packet @612 + rtp_init_session @613 + rtp_new_message @614 + rtp_send_msg @615 + rtp_terminate_session @616 + run_analysis @617 + rwl_print @618 + rwl_print_set @619 + save_keys @620 + send_LANdiscovery @621 + send_announce_request @622 + send_custom_lossless_packet @623 + send_custom_lossy_packet @624 + send_data @625 + send_data_request @626 + send_disconnect_request @627 + send_friendrequest @628 + send_lossy_cryptpacket @629 + send_onion_data @630 + send_onion_packet @631 + send_onion_request @632 + send_onion_response @633 + send_oob_packet @634 + send_ping_request @635 + send_reponse @636 + send_routing_request @637 + sendpacket @638 + set_callback_handle_recv_1 @639 + set_connection_dht_public_key @640 + set_direct_ip_port @641 + set_filter_function @642 + set_nick @643 + set_nospam @644 + set_socket_dualstack @645 + set_socket_nonblock @646 + set_socket_nosigpipe @647 + set_tcp_connection_number @648 + setfriendname @649 + setname @650 + silk_A2NLSF @651 + silk_A2NLSF_FLP @652 + silk_CB_lags_stage2 @653 + silk_CB_lags_stage2_10_ms @654 + silk_CB_lags_stage3 @655 + silk_CB_lags_stage3_10_ms @656 + silk_CNG @657 + silk_CNG_Reset @658 + silk_Decode @659 + silk_Encode @660 + silk_Get_Decoder_Size @661 + silk_Get_Encoder_Size @662 + silk_HP_variable_cutoff @663 + silk_InitDecoder @664 + silk_InitEncoder @665 + silk_LBRR_flags_iCDF_ptr @666 + silk_LPC_analysis_filter @667 + silk_LPC_analysis_filter_FLP @668 + silk_LPC_inverse_pred_gain @669 + silk_LPC_inverse_pred_gain_FLP @670 + silk_LP_variable_cutoff @671 + silk_LSFCosTab_FIX_Q12 @672 + silk_LTPScales_table_Q14 @673 + silk_LTP_analysis_filter_FLP @674 + silk_LTP_gain_BITS_Q5_ptrs @675 + silk_LTP_gain_iCDF_ptrs @676 + silk_LTP_gain_middle_avg_RD_Q14 @677 + silk_LTP_per_index_iCDF @678 + silk_LTP_scale_ctrl_FLP @679 + silk_LTP_vq_gain_ptrs_Q7 @680 + silk_LTP_vq_ptrs_Q7 @681 + silk_LTP_vq_sizes @682 + silk_LTPscale_iCDF @683 + silk_Lag_range_stage3 @684 + silk_Lag_range_stage3_10_ms @685 + silk_NLSF2A @686 + silk_NLSF2A_FLP @687 + silk_NLSF_CB_NB_MB @688 + silk_NLSF_CB_WB @689 + silk_NLSF_EXT_iCDF @690 + silk_NLSF_VQ @691 + silk_NLSF_VQ_weights_laroia @692 + silk_NLSF_decode @693 + silk_NLSF_del_dec_quant @694 + silk_NLSF_encode @695 + silk_NLSF_interpolation_factor_iCDF @696 + silk_NLSF_stabilize @697 + silk_NLSF_unpack @698 + silk_NSQ @699 + silk_NSQ_del_dec @700 + silk_NSQ_wrapper_FLP @701 + silk_PLC @702 + silk_PLC_Reset @703 + silk_PLC_glue_frames @704 + silk_Quantization_Offsets_Q10 @705 + silk_Resampler_1_2_COEFS @706 + silk_Resampler_1_3_COEFS @707 + silk_Resampler_1_4_COEFS @708 + silk_Resampler_1_6_COEFS @709 + silk_Resampler_2_3_COEFS @710 + silk_Resampler_2_3_COEFS_LQ @711 + silk_Resampler_3_4_COEFS @712 + silk_SNR_table_Q1 @713 + silk_TargetRate_table_MB @714 + silk_TargetRate_table_NB @715 + silk_TargetRate_table_WB @716 + silk_Transition_LP_A_Q28 @717 + silk_Transition_LP_B_Q28 @718 + silk_VAD_GetSA_Q8 @719 + silk_VAD_Init @720 + silk_VQ_WMat_EC @721 + silk_ana_filt_bank_1 @722 + silk_apply_sine_window_FLP @723 + silk_autocorrelation_FLP @724 + silk_biquad_alt @725 + silk_burg_modified_FLP @726 + silk_bwexpander @727 + silk_bwexpander_32 @728 + silk_bwexpander_FLP @729 + silk_control_SNR @730 + silk_control_audio_bandwidth @731 + silk_control_encoder @732 + silk_corrMatrix_FLP @733 + silk_corrVector_FLP @734 + silk_decode_core @735 + silk_decode_frame @736 + silk_decode_indices @737 + silk_decode_parameters @738 + silk_decode_pitch @739 + silk_decode_pulses @740 + silk_decode_signs @741 + silk_decoder_set_fs @742 + silk_delta_gain_iCDF @743 + silk_encode_do_VAD_FLP @744 + silk_encode_frame_FLP @745 + silk_encode_indices @746 + silk_encode_pulses @747 + silk_encode_signs @748 + silk_energy_FLP @749 + silk_find_LPC_FLP @750 + silk_find_LTP_FLP @751 + silk_find_pitch_lags_FLP @752 + silk_find_pred_coefs_FLP @753 + silk_gain_iCDF @754 + silk_gains_ID @755 + silk_gains_dequant @756 + silk_gains_quant @757 + silk_init_decoder @758 + silk_init_encoder @759 + silk_inner_prod_aligned_scale @760 + silk_inner_product_FLP @761 + silk_insertion_sort_decreasing_FLP @762 + silk_insertion_sort_increasing @763 + silk_insertion_sort_increasing_all_values_int16 @764 + silk_interpolate @765 + silk_k2a_FLP @766 + silk_levinsondurbin_FLP @767 + silk_lin2log @768 + silk_log2lin @769 + silk_lsb_iCDF @770 + silk_max_pulses_table @771 + silk_nb_cbk_searchs_stage3 @772 + silk_noise_shape_analysis_FLP @773 + silk_pitch_analysis_core_FLP @774 + silk_pitch_contour_10_ms_NB_iCDF @775 + silk_pitch_contour_10_ms_iCDF @776 + silk_pitch_contour_NB_iCDF @777 + silk_pitch_contour_iCDF @778 + silk_pitch_delta_iCDF @779 + silk_pitch_lag_iCDF @780 + silk_prefilter_FLP @781 + silk_process_NLSFs @782 + silk_process_NLSFs_FLP @783 + silk_process_gains_FLP @784 + silk_pulses_per_block_BITS_Q5 @785 + silk_pulses_per_block_iCDF @786 + silk_quant_LTP_gains @787 + silk_quant_LTP_gains_FLP @788 + silk_rate_levels_BITS_Q5 @789 + silk_rate_levels_iCDF @790 + silk_regularize_correlations_FLP @791 + silk_resampler @792 + silk_resampler_down2 @793 + silk_resampler_down2_3 @794 + silk_resampler_frac_FIR_12 @795 + silk_resampler_init @796 + silk_resampler_private_AR2 @797 + silk_resampler_private_IIR_FIR @798 + silk_resampler_private_down_FIR @799 + silk_resampler_private_up2_HQ @800 + silk_resampler_private_up2_HQ_wrapper @801 + silk_residual_energy_FLP @802 + silk_residual_energy_covar_FLP @803 + silk_scale_copy_vector_FLP @804 + silk_scale_vector_FLP @805 + silk_schur_FLP @806 + silk_shell_code_table0 @807 + silk_shell_code_table1 @808 + silk_shell_code_table2 @809 + silk_shell_code_table3 @810 + silk_shell_code_table_offsets @811 + silk_shell_decoder @812 + silk_shell_encoder @813 + silk_sigm_Q15 @814 + silk_sign_iCDF @815 + silk_solve_LDL_FLP @816 + silk_stereo_LR_to_MS @817 + silk_stereo_MS_to_LR @818 + silk_stereo_decode_mid_only @819 + silk_stereo_decode_pred @820 + silk_stereo_encode_mid_only @821 + silk_stereo_encode_pred @822 + silk_stereo_find_predictor @823 + silk_stereo_only_code_mid_iCDF @824 + silk_stereo_pred_joint_iCDF @825 + silk_stereo_pred_quant_Q13 @826 + silk_stereo_quant_pred @827 + silk_sum_sqr_shift @828 + silk_type_offset_VAD_iCDF @829 + silk_type_offset_no_VAD_iCDF @830 + silk_uniform3_iCDF @831 + silk_uniform4_iCDF @832 + silk_uniform5_iCDF @833 + silk_uniform6_iCDF @834 + silk_uniform8_iCDF @835 + silk_warped_autocorrelation_FLP @836 + sock_valid @837 + sodium_bin2hex @838 + sodium_hex2bin @839 + sodium_init @840 + sodium_memcmp @841 + sodium_memzero @842 + sodium_mlock @843 + sodium_munlock @844 + sodium_runtime_get_cpu_features @845 + sodium_runtime_has_neon @846 + sodium_runtime_has_sse2 @847 + sodium_runtime_has_sse3 @848 + spreading_decision @849 + stereo_itheta @850 + terminate_queue @851 + tf_select_table @852 + thread_print @853 + thread_print_set @854 + to_host_family @855 + to_net_family @856 + tonality_analysis @857 + tonality_get_info @858 + tox_add_friend @859 + tox_add_friend_norequest @860 + tox_add_groupchat @861 + tox_bootstrap_from_address @862 + tox_callback_connection_status @863 + tox_callback_file_control @864 + tox_callback_file_data @865 + tox_callback_file_send_request @866 + tox_callback_friend_action @867 + tox_callback_friend_message @868 + tox_callback_friend_request @869 + tox_callback_group_action @870 + tox_callback_group_invite @871 + tox_callback_group_message @872 + tox_callback_group_namelist_change @873 + tox_callback_name_change @874 + tox_callback_read_receipt @875 + tox_callback_status_message @876 + tox_callback_typing_change @877 + tox_callback_user_status @878 + tox_count_chatlist @879 + tox_count_friendlist @880 + tox_decrypt_dns3_TXT @881 + tox_del_friend @882 + tox_del_groupchat @883 + tox_dns3_kill @884 + tox_dns3_new @885 + tox_do @886 + tox_do_interval @887 + tox_file_data_remaining @888 + tox_file_data_size @889 + tox_file_send_control @890 + tox_file_send_data @891 + tox_friend_exists @892 + tox_generate_dns3_string @893 + tox_get_address @894 + tox_get_chatlist @895 + tox_get_client_id @896 + tox_get_friend_connection_status @897 + tox_get_friend_number @898 + tox_get_friendlist @899 + tox_get_is_typing @900 + tox_get_keys @901 + tox_get_last_online @902 + tox_get_name @903 + tox_get_name_size @904 + tox_get_nospam @905 + tox_get_num_online_friends @906 + tox_get_self_name @907 + tox_get_self_name_size @908 + tox_get_self_status_message @909 + tox_get_self_status_message_size @910 + tox_get_self_user_status @911 + tox_get_status_message @912 + tox_get_status_message_size @913 + tox_get_user_status @914 + tox_group_action_send @915 + tox_group_get_names @916 + tox_group_message_send @917 + tox_group_number_peers @918 + tox_group_peername @919 + tox_invite_friend @920 + tox_isconnected @921 + tox_join_groupchat @922 + tox_kill @923 + tox_load @924 + tox_new @925 + tox_new_file_sender @926 + tox_save @927 + tox_send_action @928 + tox_send_action_withid @929 + tox_send_message @930 + tox_send_message_withid @931 + tox_set_name @932 + tox_set_nospam @933 + tox_set_sends_receipts @934 + tox_set_status_message @935 + tox_set_user_is_typing @936 + tox_set_user_status @937 + tox_size @938 + toxav_answer @939 + toxav_call @940 + toxav_cancel @941 + toxav_capability_supported @942 + toxav_change_settings @943 + toxav_get_call_state @944 + toxav_get_peer_csettings @945 + toxav_get_peer_id @946 + toxav_get_tox @947 + toxav_handle_packet @948 + toxav_hangup @949 + toxav_has_activity @950 + toxav_kill @951 + toxav_kill_transmission @952 + toxav_new @953 + toxav_prepare_audio_frame @954 + toxav_prepare_transmission @955 + toxav_prepare_video_frame @956 + toxav_register_audio_recv_callback @957 + toxav_register_callstate_callback @958 + toxav_register_video_recv_callback @959 + toxav_reject @960 + toxav_send_audio @961 + toxav_send_video @962 + toxav_stop_call @963 + unix_time @964 + unix_time_update @965 + unpack_nodes @966 + unquant_coarse_energy @967 + unquant_energy_finalise @968 + unquant_fine_energy @969 + vp8_ac2quant @970 + vp8_ac_uv_quant @971 + vp8_ac_yquant @972 + vp8_activity_masking @973 + vp8_adjust_key_frame_context @974 + vp8_alloc_compressor_data @975 + vp8_alloc_frame_buffers @976 + vp8_auto_select_speed @977 + vp8_bilinear_filters @978 + vp8_bilinear_filters_x86_4 @979 + vp8_bilinear_filters_x86_8 @980 + vp8_bilinear_predict16x16 @981 + vp8_bilinear_predict16x16_c @982 + vp8_bilinear_predict16x16_mmx @983 + vp8_bilinear_predict16x16_sse2 @984 + vp8_bilinear_predict16x16_ssse3 @985 + vp8_bilinear_predict4x4 @986 + vp8_bilinear_predict4x4_c @987 + vp8_bilinear_predict4x4_mmx @988 + vp8_bilinear_predict8x4 @989 + vp8_bilinear_predict8x4_c @990 + vp8_bilinear_predict8x4_mmx @991 + vp8_bilinear_predict8x8 @992 + vp8_bilinear_predict8x8_c @993 + vp8_bilinear_predict8x8_mmx @994 + vp8_bilinear_predict8x8_sse2 @995 + vp8_bilinear_predict8x8_ssse3 @996 + vp8_bits_per_mb @997 + vp8_blend_b_c @998 + vp8_blend_mb_inner_c @999 + vp8_blend_mb_outer_c @1000 + vp8_block2above @1001 + vp8_block2left @1002 + vp8_block_error @1003 + vp8_block_error_c @1004 + vp8_block_error_mmx @1005 + vp8_block_error_xmm @1006 + vp8_bmode_encodings @1007 + vp8_bmode_prob @1008 + vp8_bmode_tree @1009 + vp8_build_block_doffsets @1010 + vp8_build_block_offsets @1011 + vp8_build_component_cost_table @1012 + vp8_build_inter16x16_predictors_mb @1013 + vp8_build_inter16x16_predictors_mbuv @1014 + vp8_build_inter16x16_predictors_mby @1015 + vp8_build_inter4x4_predictors_mbuv @1016 + vp8_build_inter_predictors_b @1017 + vp8_build_inter_predictors_mb @1018 + vp8_build_intra_predictors_mbuv_s @1019 + vp8_build_intra_predictors_mbuv_s_c @1020 + vp8_build_intra_predictors_mbuv_s_sse2 @1021 + vp8_build_intra_predictors_mbuv_s_ssse3 @1022 + vp8_build_intra_predictors_mby_s @1023 + vp8_build_intra_predictors_mby_s_c @1024 + vp8_build_intra_predictors_mby_s_sse2 @1025 + vp8_build_intra_predictors_mby_s_ssse3 @1026 + vp8_cal_sad @1027 + vp8_calc_ref_frame_costs @1028 + vp8_calc_ss_err @1029 + vp8_change_config @1030 + vp8_clear_system_state @1031 + vp8_clear_system_state_c @1032 + vp8_coef_bands @1033 + vp8_coef_encodings @1034 + vp8_coef_tree @1035 + vp8_coef_update_probs @1036 + vp8_compute_frame_size_bounds @1037 + vp8_convert_rfct_to_prob @1038 + vp8_copy32xn @1039 + vp8_copy32xn_c @1040 + vp8_copy32xn_sse2 @1041 + vp8_copy32xn_sse3 @1042 + vp8_copy_and_extend_frame @1043 + vp8_copy_and_extend_frame_with_rect @1044 + vp8_copy_mem16x16 @1045 + vp8_copy_mem16x16_c @1046 + vp8_copy_mem16x16_mmx @1047 + vp8_copy_mem16x16_sse2 @1048 + vp8_copy_mem8x4 @1049 + vp8_copy_mem8x4_c @1050 + vp8_copy_mem8x4_mmx @1051 + vp8_copy_mem8x8 @1052 + vp8_copy_mem8x8_c @1053 + vp8_copy_mem8x8_mmx @1054 + vp8_cost_mv_ref @1055 + vp8_cost_tokens @1056 + vp8_cost_tokens2 @1057 + vp8_create_common @1058 + vp8_create_compressor @1059 + vp8_create_decoder_instances @1060 + vp8_ctf_maps @1061 + vp8_dc2quant @1062 + vp8_dc_only_idct_add @1063 + vp8_dc_only_idct_add_c @1064 + vp8_dc_only_idct_add_mmx @1065 + vp8_dc_quant @1066 + vp8_dc_uv_quant @1067 + vp8_dct_value_cost_ptr @1068 + vp8_dct_value_tokens_ptr @1069 + vp8_de_alloc_frame_buffers @1070 + vp8_deblock @1071 + vp8_decode_frame @1072 + vp8_decode_mb_tokens @1073 + vp8_decode_mode_mvs @1074 + vp8_decoder_create_threads @1075 + vp8_decoder_remove_threads @1076 + vp8_default_bmode_probs @1077 + vp8_default_coef_probs @1078 + vp8_default_inv_zig_zag @1079 + vp8_default_mv_context @1080 + vp8_default_zig_zag1d @1081 + vp8_default_zig_zag_mask @1082 + vp8_denoiser_allocate @1083 + vp8_denoiser_denoise_mb @1084 + vp8_denoiser_filter @1085 + vp8_denoiser_filter_c @1086 + vp8_denoiser_filter_sse2 @1087 + vp8_denoiser_free @1088 + vp8_dequant_idct_add @1089 + vp8_dequant_idct_add_c @1090 + vp8_dequant_idct_add_mmx @1091 + vp8_dequant_idct_add_uv_block @1092 + vp8_dequant_idct_add_uv_block_c @1093 + vp8_dequant_idct_add_uv_block_mmx @1094 + vp8_dequant_idct_add_uv_block_sse2 @1095 + vp8_dequant_idct_add_y_block @1096 + vp8_dequant_idct_add_y_block_c @1097 + vp8_dequant_idct_add_y_block_mmx @1098 + vp8_dequant_idct_add_y_block_sse2 @1099 + vp8_dequantize_b @1100 + vp8_dequantize_b_c @1101 + vp8_dequantize_b_impl_mmx @1102 + vp8_dequantize_b_mmx @1103 + vp8_diamond_search_sad @1104 + vp8_diamond_search_sad_c @1105 + vp8_diamond_search_sadx4 @1106 + vp8_encode_frame @1107 + vp8_encode_inter16x16 @1108 + vp8_encode_inter16x16y @1109 + vp8_encode_intra @1110 + vp8_encode_intra16x16mbuv @1111 + vp8_encode_intra16x16mby @1112 + vp8_encode_intra4x4block @1113 + vp8_encode_intra4x4mby @1114 + vp8_encode_motion_vector @1115 + vp8_encode_value @1116 + vp8_end_first_pass @1117 + vp8_end_second_pass @1118 + vp8_estimate_entropy_savings @1119 + vp8_extend_mb_row @1120 + vp8_extra_bits @1121 + vp8_fast_quantize_b @1122 + vp8_fast_quantize_b_c @1123 + vp8_fast_quantize_b_impl_mmx @1124 + vp8_fast_quantize_b_mmx @1125 + vp8_fast_quantize_b_pair_c @1126 + vp8_fast_quantize_b_sse2 @1127 + vp8_fast_quantize_b_ssse3 @1128 + vp8_filter_block1d16_h6_only_sse2 @1129 + vp8_filter_block1d16_h6_sse2 @1130 + vp8_filter_block1d16_h6_ssse3 @1131 + vp8_filter_block1d16_v6_sse2 @1132 + vp8_filter_block1d16_v6_ssse3 @1133 + vp8_filter_block1d4_h6_ssse3 @1134 + vp8_filter_block1d4_v6_ssse3 @1135 + vp8_filter_block1d8_h6_only_sse2 @1136 + vp8_filter_block1d8_h6_sse2 @1137 + vp8_filter_block1d8_h6_ssse3 @1138 + vp8_filter_block1d8_v6_only_sse2 @1139 + vp8_filter_block1d8_v6_sse2 @1140 + vp8_filter_block1d8_v6_ssse3 @1141 + vp8_filter_block1d_h6_mmx @1142 + vp8_filter_block1dc_v6_mmx @1143 + vp8_filter_block2d_bil4x4_var_mmx @1144 + vp8_filter_block2d_bil_var_mmx @1145 + vp8_filter_block2d_bil_var_sse2 @1146 + vp8_filter_block2d_bil_var_ssse3 @1147 + vp8_filter_by_weight16x16 @1148 + vp8_filter_by_weight16x16_c @1149 + vp8_filter_by_weight16x16_sse2 @1150 + vp8_filter_by_weight4x4_c @1151 + vp8_filter_by_weight8x8 @1152 + vp8_filter_by_weight8x8_c @1153 + vp8_filter_by_weight8x8_sse2 @1154 + vp8_find_best_half_pixel_step @1155 + vp8_find_best_sub_pixel_step @1156 + vp8_find_best_sub_pixel_step_iteratively @1157 + vp8_find_near_mvs @1158 + vp8_find_near_mvs_bias @1159 + vp8_first_pass @1160 + vp8_fix_contexts @1161 + vp8_full_search_sad @1162 + vp8_full_search_sad_c @1163 + vp8_full_search_sadx3 @1164 + vp8_full_search_sadx8 @1165 + vp8_gaussian @1166 + vp8_get16x16var_sse2 @1167 + vp8_get4x4sse_cs @1168 + vp8_get4x4sse_cs_c @1169 + vp8_get4x4sse_cs_mmx @1170 + vp8_get4x4var_mmx @1171 + vp8_get8x8var_mmx @1172 + vp8_get8x8var_sse2 @1173 + vp8_get_compressed_data @1174 + vp8_get_inter_mbpred_error @1175 + vp8_get_mb_ss @1176 + vp8_get_mb_ss_c @1177 + vp8_get_mb_ss_mmx @1178 + vp8_get_mb_ss_sse2 @1179 + vp8_get_preview_raw_frame @1180 + vp8_get_quantizer @1181 + vp8_get_reference @1182 + vp8_gf_boost_qadjustment @1183 + vp8_half_horiz_variance16x_h_sse2 @1184 + vp8_half_horiz_variance8x_h_sse2 @1185 + vp8_half_horiz_vert_variance16x_h_sse2 @1186 + vp8_half_horiz_vert_variance8x_h_sse2 @1187 + vp8_half_vert_variance16x_h_sse2 @1188 + vp8_half_vert_variance8x_h_sse2 @1189 + vp8_hex_search @1190 + vp8_horizontal_line_2_1_scale_c @1191 + vp8_horizontal_line_5_3_scale_c @1192 + vp8_horizontal_line_5_4_scale_c @1193 + vp8_idct_dequant_0_2x_sse2 @1194 + vp8_idct_dequant_dc_0_2x_sse2 @1195 + vp8_idct_dequant_dc_full_2x_sse2 @1196 + vp8_idct_dequant_full_2x_sse2 @1197 + vp8_init3smotion_compensation @1198 + vp8_init_dsmotion_compensation @1199 + vp8_init_first_pass @1200 + vp8_init_mbmode_probs @1201 + vp8_init_mode_costs @1202 + vp8_init_second_pass @1203 + vp8_initialize_rd_consts @1204 + vp8_intra4x4_predict_c @1205 + vp8_intra_pred_uv_dc128_mmx @1206 + vp8_intra_pred_uv_dc_mmx2 @1207 + vp8_intra_pred_uv_dcleft_mmx2 @1208 + vp8_intra_pred_uv_dctop_mmx2 @1209 + vp8_intra_pred_uv_ho_mmx2 @1210 + vp8_intra_pred_uv_ho_ssse3 @1211 + vp8_intra_pred_uv_tm_sse2 @1212 + vp8_intra_pred_uv_tm_ssse3 @1213 + vp8_intra_pred_uv_ve_mmx @1214 + vp8_intra_pred_y_dc128_sse2 @1215 + vp8_intra_pred_y_dc_sse2 @1216 + vp8_intra_pred_y_dcleft_sse2 @1217 + vp8_intra_pred_y_dctop_sse2 @1218 + vp8_intra_pred_y_ho_sse2 @1219 + vp8_intra_pred_y_tm_sse2 @1220 + vp8_intra_pred_y_tm_ssse3 @1221 + vp8_intra_pred_y_ve_sse2 @1222 + vp8_kf_bmode_prob @1223 + vp8_kf_uv_mode_prob @1224 + vp8_kf_ymode_encodings @1225 + vp8_kf_ymode_prob @1226 + vp8_kf_ymode_tree @1227 + vp8_lookahead_depth @1228 + vp8_lookahead_destroy @1229 + vp8_lookahead_init @1230 + vp8_lookahead_peek @1231 + vp8_lookahead_pop @1232 + vp8_lookahead_push @1233 + vp8_loop_filter_bh @1234 + vp8_loop_filter_bh_c @1235 + vp8_loop_filter_bh_mmx @1236 + vp8_loop_filter_bh_sse2 @1237 + vp8_loop_filter_bhs_c @1238 + vp8_loop_filter_bhs_mmx @1239 + vp8_loop_filter_bhs_sse2 @1240 + vp8_loop_filter_bv @1241 + vp8_loop_filter_bv_c @1242 + vp8_loop_filter_bv_mmx @1243 + vp8_loop_filter_bv_sse2 @1244 + vp8_loop_filter_bvs_c @1245 + vp8_loop_filter_bvs_mmx @1246 + vp8_loop_filter_bvs_sse2 @1247 + vp8_loop_filter_frame @1248 + vp8_loop_filter_frame_init @1249 + vp8_loop_filter_frame_yonly @1250 + vp8_loop_filter_horizontal_edge_c @1251 + vp8_loop_filter_horizontal_edge_mmx @1252 + vp8_loop_filter_horizontal_edge_sse2 @1253 + vp8_loop_filter_horizontal_edge_uv_sse2 @1254 + vp8_loop_filter_init @1255 + vp8_loop_filter_mbh @1256 + vp8_loop_filter_mbh_c @1257 + vp8_loop_filter_mbh_mmx @1258 + vp8_loop_filter_mbh_sse2 @1259 + vp8_loop_filter_mbv @1260 + vp8_loop_filter_mbv_c @1261 + vp8_loop_filter_mbv_mmx @1262 + vp8_loop_filter_mbv_sse2 @1263 + vp8_loop_filter_partial_frame @1264 + vp8_loop_filter_row_normal @1265 + vp8_loop_filter_row_simple @1266 + vp8_loop_filter_simple_bh @1267 + vp8_loop_filter_simple_bv @1268 + vp8_loop_filter_simple_horizontal_edge_c @1269 + vp8_loop_filter_simple_horizontal_edge_mmx @1270 + vp8_loop_filter_simple_horizontal_edge_sse2 @1271 + vp8_loop_filter_simple_mbh @1272 + vp8_loop_filter_simple_mbv @1273 + vp8_loop_filter_simple_vertical_edge_c @1274 + vp8_loop_filter_simple_vertical_edge_mmx @1275 + vp8_loop_filter_simple_vertical_edge_sse2 @1276 + vp8_loop_filter_update_sharpness @1277 + vp8_loop_filter_vertical_edge_c @1278 + vp8_loop_filter_vertical_edge_mmx @1279 + vp8_loop_filter_vertical_edge_sse2 @1280 + vp8_loop_filter_vertical_edge_uv_sse2 @1281 + vp8_loopfilter_frame @1282 + vp8_machine_specific_config @1283 + vp8_mb_feature_data_bits @1284 + vp8_mb_init_dequantizer @1285 + vp8_mbblock_error @1286 + vp8_mbblock_error_c @1287 + vp8_mbblock_error_mmx @1288 + vp8_mbblock_error_mmx_impl @1289 + vp8_mbblock_error_xmm @1290 + vp8_mbblock_error_xmm_impl @1291 + vp8_mbloop_filter_horizontal_edge_c @1292 + vp8_mbloop_filter_horizontal_edge_mmx @1293 + vp8_mbloop_filter_horizontal_edge_sse2 @1294 + vp8_mbloop_filter_horizontal_edge_uv_sse2 @1295 + vp8_mbloop_filter_vertical_edge_c @1296 + vp8_mbloop_filter_vertical_edge_mmx @1297 + vp8_mbloop_filter_vertical_edge_sse2 @1298 + vp8_mbloop_filter_vertical_edge_uv_sse2 @1299 + vp8_mbpost_proc_across_ip @1300 + vp8_mbpost_proc_across_ip_c @1301 + vp8_mbpost_proc_across_ip_xmm @1302 + vp8_mbpost_proc_down @1303 + vp8_mbpost_proc_down_c @1304 + vp8_mbpost_proc_down_mmx @1305 + vp8_mbpost_proc_down_xmm @1306 + vp8_mbsplit_count @1307 + vp8_mbsplit_encodings @1308 + vp8_mbsplit_offset @1309 + vp8_mbsplit_probs @1310 + vp8_mbsplit_tree @1311 + vp8_mbsplits @1312 + vp8_mbuverror @1313 + vp8_mbuverror_c @1314 + vp8_mbuverror_mmx @1315 + vp8_mbuverror_mmx_impl @1316 + vp8_mbuverror_xmm @1317 + vp8_mbuverror_xmm_impl @1318 + vp8_mode_contexts @1319 + vp8_mode_order @1320 + vp8_mse16x16 @1321 + vp8_mse16x16_c @1322 + vp8_mse16x16_mmx @1323 + vp8_mse16x16_wmt @1324 + vp8_mse2psnr @1325 + vp8_multiframe_quality_enhance @1326 + vp8_mv_bit_cost @1327 + vp8_mv_cont @1328 + vp8_mv_pred @1329 + vp8_mv_ref_encoding_array @1330 + vp8_mv_ref_probs @1331 + vp8_mv_ref_tree @1332 + vp8_mv_update_probs @1333 + vp8_new_framerate @1334 + vp8_norm @1335 + vp8_optimize_mbuv @1336 + vp8_optimize_mby @1337 + vp8_pack_bitstream @1338 + vp8_pack_tokens_c @1339 + vp8_pick_frame_size @1340 + vp8_pick_inter_mode @1341 + vp8_pick_intra_mode @1342 + vp8_plane_add_noise @1343 + vp8_plane_add_noise_c @1344 + vp8_plane_add_noise_mmx @1345 + vp8_plane_add_noise_wmt @1346 + vp8_post_proc_down_and_across_mb_row @1347 + vp8_post_proc_down_and_across_mb_row_c @1348 + vp8_post_proc_down_and_across_mb_row_sse2 @1349 + vp8_post_proc_frame @1350 + vp8_prev_token_class @1351 + vp8_prob_cost @1352 + vp8_quantize_mb_c @1353 + vp8_quantize_mbuv_c @1354 + vp8_quantize_mby_c @1355 + vp8_rd_pick_inter_mode @1356 + vp8_rd_pick_intra_mode @1357 + vp8_receive_raw_frame @1358 + vp8_ref_frame_order @1359 + vp8_refining_search_sad @1360 + vp8_refining_search_sad_c @1361 + vp8_refining_search_sadx4 @1362 + vp8_regular_quantize_b @1363 + vp8_regular_quantize_b_c @1364 + vp8_regular_quantize_b_pair_c @1365 + vp8_regular_quantize_b_sse2 @1366 + vp8_regulate_q @1367 + vp8_remove_common @1368 + vp8_remove_compressor @1369 + vp8_remove_decoder_instances @1370 + vp8_reset_mb_tokens_context @1371 + vp8_restore_coding_context @1372 + vp8_reverse_trans @1373 + vp8_rtcd @1374 + vp8_rv @1375 + vp8_sad16x16 @1376 + vp8_sad16x16_c @1377 + vp8_sad16x16_mmx @1378 + vp8_sad16x16_sse3 @1379 + vp8_sad16x16_wmt @1380 + vp8_sad16x16x3 @1381 + vp8_sad16x16x3_c @1382 + vp8_sad16x16x3_sse3 @1383 + vp8_sad16x16x3_ssse3 @1384 + vp8_sad16x16x4d @1385 + vp8_sad16x16x4d_c @1386 + vp8_sad16x16x4d_sse3 @1387 + vp8_sad16x16x8 @1388 + vp8_sad16x16x8_c @1389 + vp8_sad16x16x8_sse4 @1390 + vp8_sad16x8 @1391 + vp8_sad16x8_c @1392 + vp8_sad16x8_mmx @1393 + vp8_sad16x8_wmt @1394 + vp8_sad16x8x3 @1395 + vp8_sad16x8x3_c @1396 + vp8_sad16x8x3_sse3 @1397 + vp8_sad16x8x3_ssse3 @1398 + vp8_sad16x8x4d @1399 + vp8_sad16x8x4d_c @1400 + vp8_sad16x8x4d_sse3 @1401 + vp8_sad16x8x8 @1402 + vp8_sad16x8x8_c @1403 + vp8_sad16x8x8_sse4 @1404 + vp8_sad4x4 @1405 + vp8_sad4x4_c @1406 + vp8_sad4x4_mmx @1407 + vp8_sad4x4_wmt @1408 + vp8_sad4x4x3 @1409 + vp8_sad4x4x3_c @1410 + vp8_sad4x4x3_sse3 @1411 + vp8_sad4x4x4d @1412 + vp8_sad4x4x4d_c @1413 + vp8_sad4x4x4d_sse3 @1414 + vp8_sad4x4x8 @1415 + vp8_sad4x4x8_c @1416 + vp8_sad4x4x8_sse4 @1417 + vp8_sad8x16 @1418 + vp8_sad8x16_c @1419 + vp8_sad8x16_mmx @1420 + vp8_sad8x16_wmt @1421 + vp8_sad8x16x3 @1422 + vp8_sad8x16x3_c @1423 + vp8_sad8x16x3_sse3 @1424 + vp8_sad8x16x4d @1425 + vp8_sad8x16x4d_c @1426 + vp8_sad8x16x4d_sse3 @1427 + vp8_sad8x16x8 @1428 + vp8_sad8x16x8_c @1429 + vp8_sad8x16x8_sse4 @1430 + vp8_sad8x8 @1431 + vp8_sad8x8_c @1432 + vp8_sad8x8_mmx @1433 + vp8_sad8x8_wmt @1434 + vp8_sad8x8x3 @1435 + vp8_sad8x8x3_c @1436 + vp8_sad8x8x3_sse3 @1437 + vp8_sad8x8x4d @1438 + vp8_sad8x8x4d_c @1439 + vp8_sad8x8x4d_sse3 @1440 + vp8_sad8x8x8 @1441 + vp8_sad8x8x8_c @1442 + vp8_sad8x8x8_sse4 @1443 + vp8_save_coding_context @1444 + vp8_second_pass @1445 + vp8_set_active_map @1446 + vp8_set_internal_size @1447 + vp8_set_mbmode_and_mvs @1448 + vp8_set_quantizer @1449 + vp8_set_reference @1450 + vp8_set_roimap @1451 + vp8_set_speed_features @1452 + vp8_setup_block_dptrs @1453 + vp8_setup_block_ptrs @1454 + vp8_setup_intra_recon @1455 + vp8_setup_intra_recon_top_line @1456 + vp8_setup_key_frame @1457 + vp8_setup_version @1458 + vp8_short_fdct4x4 @1459 + vp8_short_fdct4x4_c @1460 + vp8_short_fdct4x4_mmx @1461 + vp8_short_fdct4x4_sse2 @1462 + vp8_short_fdct8x4 @1463 + vp8_short_fdct8x4_c @1464 + vp8_short_fdct8x4_mmx @1465 + vp8_short_fdct8x4_sse2 @1466 + vp8_short_idct4x4llm @1467 + vp8_short_idct4x4llm_c @1468 + vp8_short_idct4x4llm_mmx @1469 + vp8_short_inv_walsh4x4 @1470 + vp8_short_inv_walsh4x4_1_c @1471 + vp8_short_inv_walsh4x4_c @1472 + vp8_short_inv_walsh4x4_mmx @1473 + vp8_short_inv_walsh4x4_sse2 @1474 + vp8_short_walsh4x4 @1475 + vp8_short_walsh4x4_c @1476 + vp8_short_walsh4x4_sse2 @1477 + vp8_six_tap_mmx @1478 + vp8_sixtap_predict16x16 @1479 + vp8_sixtap_predict16x16_c @1480 + vp8_sixtap_predict16x16_mmx @1481 + vp8_sixtap_predict16x16_sse2 @1482 + vp8_sixtap_predict16x16_ssse3 @1483 + vp8_sixtap_predict4x4 @1484 + vp8_sixtap_predict4x4_c @1485 + vp8_sixtap_predict4x4_mmx @1486 + vp8_sixtap_predict4x4_ssse3 @1487 + vp8_sixtap_predict8x4 @1488 + vp8_sixtap_predict8x4_c @1489 + vp8_sixtap_predict8x4_mmx @1490 + vp8_sixtap_predict8x4_sse2 @1491 + vp8_sixtap_predict8x4_ssse3 @1492 + vp8_sixtap_predict8x8 @1493 + vp8_sixtap_predict8x8_c @1494 + vp8_sixtap_predict8x8_mmx @1495 + vp8_sixtap_predict8x8_sse2 @1496 + vp8_sixtap_predict8x8_ssse3 @1497 + vp8_skip_fractional_mv_step @1498 + vp8_small_mvencodings @1499 + vp8_small_mvtree @1500 + vp8_start_encode @1501 + vp8_stop_encode @1502 + vp8_strict_quantize_b_c @1503 + vp8_stuff_mb @1504 + vp8_sub_mv_ref_encoding_array @1505 + vp8_sub_mv_ref_prob2 @1506 + vp8_sub_mv_ref_prob3 @1507 + vp8_sub_mv_ref_tree @1508 + vp8_sub_pel_filters @1509 + vp8_sub_pixel_mse16x16 @1510 + vp8_sub_pixel_mse16x16_c @1511 + vp8_sub_pixel_mse16x16_mmx @1512 + vp8_sub_pixel_mse16x16_wmt @1513 + vp8_sub_pixel_variance16x16 @1514 + vp8_sub_pixel_variance16x16_c @1515 + vp8_sub_pixel_variance16x16_mmx @1516 + vp8_sub_pixel_variance16x16_ssse3 @1517 + vp8_sub_pixel_variance16x16_wmt @1518 + vp8_sub_pixel_variance16x8 @1519 + vp8_sub_pixel_variance16x8_c @1520 + vp8_sub_pixel_variance16x8_mmx @1521 + vp8_sub_pixel_variance16x8_ssse3 @1522 + vp8_sub_pixel_variance16x8_wmt @1523 + vp8_sub_pixel_variance4x4 @1524 + vp8_sub_pixel_variance4x4_c @1525 + vp8_sub_pixel_variance4x4_mmx @1526 + vp8_sub_pixel_variance4x4_wmt @1527 + vp8_sub_pixel_variance8x16 @1528 + vp8_sub_pixel_variance8x16_c @1529 + vp8_sub_pixel_variance8x16_mmx @1530 + vp8_sub_pixel_variance8x16_wmt @1531 + vp8_sub_pixel_variance8x8 @1532 + vp8_sub_pixel_variance8x8_c @1533 + vp8_sub_pixel_variance8x8_mmx @1534 + vp8_sub_pixel_variance8x8_wmt @1535 + vp8_subtract_b @1536 + vp8_subtract_b_c @1537 + vp8_subtract_b_mmx @1538 + vp8_subtract_b_mmx_impl @1539 + vp8_subtract_b_sse2 @1540 + vp8_subtract_b_sse2_impl @1541 + vp8_subtract_mbuv @1542 + vp8_subtract_mbuv_c @1543 + vp8_subtract_mbuv_mmx @1544 + vp8_subtract_mbuv_sse2 @1545 + vp8_subtract_mby @1546 + vp8_subtract_mby_c @1547 + vp8_subtract_mby_mmx @1548 + vp8_subtract_mby_sse2 @1549 + vp8_swap_yv12_buffer @1550 + vp8_temporal_filter_apply @1551 + vp8_temporal_filter_apply_c @1552 + vp8_temporal_filter_apply_sse2 @1553 + vp8_temporal_filter_prepare_c @1554 + vp8_tokenize_mb @1555 + vp8_tokens_from_tree @1556 + vp8_tokens_from_tree_offset @1557 + vp8_transform_intra_mby @1558 + vp8_transform_mbuv @1559 + vp8_tree_probs_from_distribution @1560 + vp8_unpack_block1d16_h6_sse2 @1561 + vp8_update_coef_probs @1562 + vp8_update_entropy @1563 + vp8_update_gf_useage_maps @1564 + vp8_update_rate_correction_factors @1565 + vp8_update_reference @1566 + vp8_update_zbin_extra @1567 + vp8_use_as_reference @1568 + vp8_uv_mode_encodings @1569 + vp8_uv_mode_prob @1570 + vp8_uv_mode_tree @1571 + vp8_variance16x16 @1572 + vp8_variance16x16_c @1573 + vp8_variance16x16_mmx @1574 + vp8_variance16x16_wmt @1575 + vp8_variance16x8 @1576 + vp8_variance16x8_c @1577 + vp8_variance16x8_mmx @1578 + vp8_variance16x8_wmt @1579 + vp8_variance4x4 @1580 + vp8_variance4x4_c @1581 + vp8_variance4x4_mmx @1582 + vp8_variance4x4_wmt @1583 + vp8_variance8x16 @1584 + vp8_variance8x16_c @1585 + vp8_variance8x16_mmx @1586 + vp8_variance8x16_wmt @1587 + vp8_variance8x8 @1588 + vp8_variance8x8_c @1589 + vp8_variance8x8_mmx @1590 + vp8_variance8x8_wmt @1591 + vp8_variance_and_sad_16x16_sse2 @1592 + vp8_variance_halfpixvar16x16_h @1593 + vp8_variance_halfpixvar16x16_h_c @1594 + vp8_variance_halfpixvar16x16_h_mmx @1595 + vp8_variance_halfpixvar16x16_h_wmt @1596 + vp8_variance_halfpixvar16x16_hv @1597 + vp8_variance_halfpixvar16x16_hv_c @1598 + vp8_variance_halfpixvar16x16_hv_mmx @1599 + vp8_variance_halfpixvar16x16_hv_wmt @1600 + vp8_variance_halfpixvar16x16_v @1601 + vp8_variance_halfpixvar16x16_v_c @1602 + vp8_variance_halfpixvar16x16_v_mmx @1603 + vp8_variance_halfpixvar16x16_v_wmt @1604 + vp8_vertical_band_2_1_scale_c @1605 + vp8_vertical_band_2_1_scale_i_c @1606 + vp8_vertical_band_5_3_scale_c @1607 + vp8_vertical_band_5_4_scale_c @1608 + vp8_write_mvprobs @1609 + vp8_ymode_encodings @1610 + vp8_ymode_prob @1611 + vp8_ymode_tree @1612 + vp8_yv12_alloc_frame_buffer @1613 + vp8_yv12_copy_frame_c @1614 + vp8_yv12_copy_partial_frame_c @1615 + vp8_yv12_de_alloc_frame_buffer @1616 + vp8_yv12_extend_frame_borders_c @1617 + vp8_yv12_realloc_frame_buffer @1618 + vp8cx_base_skip_false_prob @1619 + vp8cx_create_encoder_threads @1620 + vp8cx_encode_inter_macroblock @1621 + vp8cx_encode_intra_macroblock @1622 + vp8cx_frame_init_quantizer @1623 + vp8cx_init_de_quantizer @1624 + vp8cx_init_mbrthread_data @1625 + vp8cx_init_quantizer @1626 + vp8cx_initialize_me_consts @1627 + vp8cx_mb_init_quantizer @1628 + vp8cx_pick_filter_level @1629 + vp8cx_pick_filter_level_fast @1630 + vp8cx_remove_encoder_threads @1631 + vp8cx_set_alt_lf_level @1632 + vp8dx_bool_decoder_fill @1633 + vp8dx_get_raw_frame @1634 + vp8dx_get_reference @1635 + vp8dx_receive_compressed_data @1636 + vp8dx_references_buffer @1637 + vp8dx_set_reference @1638 + vp8dx_start_decode @1639 + vp8mt_alloc_temp_buffers @1640 + vp8mt_de_alloc_temp_buffers @1641 + vp8mt_decode_mb_rows @1642 + vp9_alloc_frame_buffer @1643 + vp9_extend_frame_borders_c @1644 + vp9_extend_frame_inner_borders_c @1645 + vp9_free_frame_buffer @1646 + vp9_realloc_frame_buffer @1647 + vpx_calloc @1648 + vpx_codec_control_ @1649 + vpx_codec_dec_init_ver @1650 + vpx_codec_decode @1651 + vpx_codec_destroy @1652 + vpx_codec_enc_config_default @1653 + vpx_codec_enc_config_set @1654 + vpx_codec_enc_init_multi_ver @1655 + vpx_codec_enc_init_ver @1656 + vpx_codec_encode @1657 + vpx_codec_err_to_string @1658 + vpx_codec_error @1659 + vpx_codec_error_detail @1660 + vpx_codec_get_caps @1661 + vpx_codec_get_cx_data @1662 + vpx_codec_get_frame @1663 + vpx_codec_get_global_headers @1664 + vpx_codec_get_mem_map @1665 + vpx_codec_get_preview_frame @1666 + vpx_codec_get_stream_info @1667 + vpx_codec_iface_name @1668 + vpx_codec_peek_stream_info @1669 + vpx_codec_pkt_list_add @1670 + vpx_codec_pkt_list_get @1671 + vpx_codec_register_put_frame_cb @1672 + vpx_codec_register_put_slice_cb @1673 + vpx_codec_set_cx_data_buf @1674 + vpx_codec_set_mem_map @1675 + vpx_codec_version @1676 + vpx_codec_version_extra_str @1677 + vpx_codec_version_str @1678 + vpx_codec_vp8_cx @1679 + vpx_codec_vp8_cx_algo @1680 + vpx_codec_vp8_dx @1681 + vpx_codec_vp8_dx_algo @1682 + vpx_free @1683 + vpx_malloc @1684 + vpx_mem_get_version @1685 + vpx_mem_set_functions @1686 + vpx_mem_set_heap_size @1687 + vpx_mem_unset_functions @1688 + vpx_memalign @1689 + vpx_memcpy @1690 + vpx_memmove @1691 + vpx_memset @1692 + vpx_mmap_alloc @1693 + vpx_mmap_dtor @1694 + vpx_realloc @1695 + vpx_reset_mmx_state @1696 + vpx_scale_frame @1697 + vpx_scale_rtcd @1698 + vpx_validate_mmaps @1699 + vpx_yv12_copy_y_c @1700 + write_cryptpacket @1701 diff --git a/protocols/Tox/lib/x86/libtox.exp b/protocols/Tox/lib/x86/libtox.exp new file mode 100644 index 0000000000..41c63f3903 Binary files /dev/null and b/protocols/Tox/lib/x86/libtox.exp differ diff --git a/protocols/Tox/lib/x86/libtox.lib b/protocols/Tox/lib/x86/libtox.lib new file mode 100644 index 0000000000..fe7278c8dc Binary files /dev/null and b/protocols/Tox/lib/x86/libtox.lib differ diff --git a/protocols/Tox/res/version.rc b/protocols/Tox/res/version.rc new file mode 100644 index 0000000000..5bfbab4754 --- /dev/null +++ b/protocols/Tox/res/version.rc @@ -0,0 +1,38 @@ +// Microsoft Visual C++ generated resource script. +// +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include "afxres.h" +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "FileDescription", __DESCRIPTION + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/protocols/Tox/src/common.h b/protocols/Tox/src/common.h index f27fc74af8..04d3106560 100644 --- a/protocols/Tox/src/common.h +++ b/protocols/Tox/src/common.h @@ -16,7 +16,7 @@ #include "version.h" #include "resource.h" -#include "..\include\tox\tox.h" +#include "tox\tox.h" extern HINSTANCE g_hInstance; diff --git a/protocols/Tox/src/tox/tox.h b/protocols/Tox/src/tox/tox.h new file mode 100644 index 0000000000..8caa01e05f --- /dev/null +++ b/protocols/Tox/src/tox/tox.h @@ -0,0 +1,673 @@ +/* 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); + +/* Sets whether we send read receipts for friendnumber. + * This function is not lazy, and it will fail if yesno is not (0 or 1). + */ +void tox_set_sends_receipts(Tox *tox, int32_t friendnumber, int yesno); + +/* 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 network byte order, HINT: use htons()) + * and public_key to setup connections + * + * address can be a hostname or an IP address (IPv4 or IPv6). + * if ipv6enabled is 0 (zero), the resolving sticks STRICTLY to IPv4 addresses + * if ipv6enabled is not 0 (zero), the resolving looks for IPv6 addresses first, + * then IPv4 addresses. + * + * 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, uint8_t ipv6enabled, + 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); + +/* + * Run this function at startup. + * + * Initializes a tox structure + * The type of communication socket depends on ipv6enabled: + * If set to 0 (zero), creates an IPv4 socket which subsequently only allows + * IPv4 communication + * If set to anything else, creates an IPv6 socket which allows both IPv4 AND + * IPv6 communication + * + * return allocated instance of tox on success. + * return 0 if there are problems. + */ +Tox *tox_new(uint8_t ipv6enabled); + +/* 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 new file mode 100644 index 0000000000..e31c7aad1f --- /dev/null +++ b/protocols/Tox/src/tox/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/src/tox/toxdns.h b/protocols/Tox/src/tox/toxdns.h new file mode 100644 index 0000000000..a0cc323b43 --- /dev/null +++ b/protocols/Tox/src/tox/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/src/version.h b/protocols/Tox/src/version.h index f81fce4d79..d08f40b256 100644 --- a/protocols/Tox/src/version.h +++ b/protocols/Tox/src/version.h @@ -6,10 +6,9 @@ #include #define __PLUGIN_NAME "Tox Protocol" -#define __INTERNAL_NAME "Tox" #define __FILENAME "Tox.dll" #define __DESCRIPTION "Tox protocol support for Miranda NG." #define __AUTHOR "ForNeVeR, unsane" #define __AUTHOREMAIL "" #define __AUTHORWEB "http://miranda-ng.org/p/Tox/" -#define __COPYRIGHT "© 2014 Miranda NG project" +#define __COPYRIGHT "© 2014 Miranda NG Team" -- cgit v1.2.3