summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/Tox/Tox_12.vcxproj37
-rw-r--r--protocols/Tox/Tox_12.vcxproj.filters24
-rw-r--r--protocols/Tox/bin/x64/libtox.dllbin0 -> 3947782 bytes
-rw-r--r--protocols/Tox/bin/x86/libtox.dllbin0 -> 3293572 bytes
-rw-r--r--protocols/Tox/include/tox.h (renamed from protocols/Tox/tox/include/tox.h)108
-rw-r--r--protocols/Tox/include/toxav.h329
-rw-r--r--protocols/Tox/include/toxdns.h (renamed from protocols/Tox/tox/include/toxdns.h)0
-rw-r--r--protocols/Tox/include/toxencryptsave.h196
-rw-r--r--protocols/Tox/res/resource.rc20
-rw-r--r--protocols/Tox/src/api_avatars.cpp48
-rw-r--r--protocols/Tox/src/api_connection.cpp28
-rw-r--r--protocols/Tox/src/api_dns.cpp23
-rw-r--r--protocols/Tox/src/api_encryption.cpp88
-rw-r--r--protocols/Tox/src/api_groupchats.cpp88
-rw-r--r--protocols/Tox/src/api_main.cpp252
-rw-r--r--protocols/Tox/src/api_transfer.cpp43
-rw-r--r--protocols/Tox/src/tox_account.cpp100
-rw-r--r--protocols/Tox/src/tox_accounts.cpp14
-rw-r--r--protocols/Tox/src/tox_api.cpp561
-rw-r--r--protocols/Tox/src/tox_avatars.cpp37
-rw-r--r--protocols/Tox/src/tox_events.cpp12
-rw-r--r--protocols/Tox/src/tox_options.cpp30
-rw-r--r--protocols/Tox/src/tox_profile.cpp56
-rw-r--r--protocols/Tox/src/tox_proto.cpp9
-rw-r--r--protocols/Tox/src/tox_proto.h3
-rw-r--r--protocols/Tox/src/tox_utils.cpp2
-rw-r--r--protocols/Tox/tox/README.md18
-rw-r--r--protocols/Tox/tox/deflibcreator/as.exebin792360 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/as64.exebin1510620 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/deflibcreator.exebin77824 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/dlltool.exebin611153 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/dlltool64.exebin1023386 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/link.exebin733440 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/link.exe.manifest11
-rw-r--r--protocols/Tox/tox/deflibcreator/mspdb80.dllbin173056 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest11
-rw-r--r--protocols/Tox/tox/deflibcreator/src/build.cmd5
-rw-r--r--protocols/Tox/tox/deflibcreator/src/deflib.manifest8
-rw-r--r--protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp310
-rw-r--r--protocols/Tox/tox/deflibcreator/src/dlc.icobin34494 -> 0 bytes
-rw-r--r--protocols/Tox/tox/deflibcreator/src/resource.rc94
-rw-r--r--protocols/Tox/tox/dll/x64/libtox.dllbin3854890 -> 0 bytes
-rw-r--r--protocols/Tox/tox/dll/x86/libtox.dllbin3220556 -> 0 bytes
-rw-r--r--protocols/Tox/tox/generate_libs.cmd4
-rw-r--r--protocols/Tox/tox/include/toxav.h389
-rw-r--r--protocols/Tox/tox/include/toxencryptsave.h74
-rw-r--r--protocols/Tox/tox/lib/x64/libtox-x64.expbin223873 -> 0 bytes
-rw-r--r--protocols/Tox/tox/lib/x64/libtox-x64.libbin368158 -> 0 bytes
-rw-r--r--protocols/Tox/tox/lib/x64/libtox.def1617
-rw-r--r--protocols/Tox/tox/lib/x86/libtox.def1765
-rw-r--r--protocols/Tox/tox/lib/x86/libtox.expbin249739 -> 0 bytes
-rw-r--r--protocols/Tox/tox/lib/x86/libtox.libbin413236 -> 0 bytes
52 files changed, 1379 insertions, 5035 deletions
diff --git a/protocols/Tox/Tox_12.vcxproj b/protocols/Tox/Tox_12.vcxproj
index bcc2ddd6e5..893326bd6e 100644
--- a/protocols/Tox/Tox_12.vcxproj
+++ b/protocols/Tox/Tox_12.vcxproj
@@ -82,7 +82,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<StringPooling>false</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -93,18 +93,18 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>tox\lib\x86;$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- <AdditionalDependencies>ws2_32.lib;dnsapi.lib;libtox.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>ws2_32.lib;dnsapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
- <Command>xcopy tox\dll\x86\*.dll "$(SolutionDir)$(Configuration)" /Y</Command>
+ <Command>copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)\libtox.dll" /y</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -112,7 +112,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<StringPooling>false</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -123,9 +123,9 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>tox\lib\x64;$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalDependencies>dnsapi.lib;libtox-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>dnsapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
</Link>
<ResourceCompile>
@@ -133,7 +133,7 @@
<AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
- <Command>xcopy tox\dll\x64\*.dll "$(SolutionDir)$(Configuration)64" /Y</Command>
+ <Command>copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)64\libtox.dll" /y</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -143,7 +143,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>common.h</PrecompiledHeaderFile>
@@ -154,16 +154,16 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalLibraryDirectories>tox\lib\x86;$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalDependencies>dnsapi.lib;libtox.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>dnsapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
- <Command>xcopy tox\dll\x86\*.dll "$(SolutionDir)$(Configuration)" /Y</Command>
+ <Command>copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)\libtox.dll" /y</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -173,7 +173,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>common.h</PrecompiledHeaderFile>
@@ -185,7 +185,7 @@
<OptimizeReferences>true</OptimizeReferences>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<AdditionalDependencies>dnsapi.lib;libtox-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>tox\lib\x64;$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib</AdditionalLibraryDirectories>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
</Link>
<ResourceCompile>
@@ -193,7 +193,7 @@
<AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
- <Command>xcopy tox\dll\x64\*.dll "$(SolutionDir)$(Configuration)64" /Y</Command>
+ <Command>copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)64\libtox.dll" /y</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
@@ -205,6 +205,13 @@
<ClInclude Include="src\version.h" />
</ItemGroup>
<ItemGroup>
+ <ClCompile Include="src\api_avatars.cpp" />
+ <ClCompile Include="src\api_connection.cpp" />
+ <ClCompile Include="src\api_dns.cpp" />
+ <ClCompile Include="src\api_encryption.cpp" />
+ <ClCompile Include="src\api_groupchats.cpp" />
+ <ClCompile Include="src\api_main.cpp" />
+ <ClCompile Include="src\api_transfer.cpp" />
<ClCompile Include="src\main.cpp" />
<ClCompile Include="src\stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
diff --git a/protocols/Tox/Tox_12.vcxproj.filters b/protocols/Tox/Tox_12.vcxproj.filters
index 06f6e9dc92..bcfaa958c1 100644
--- a/protocols/Tox/Tox_12.vcxproj.filters
+++ b/protocols/Tox/Tox_12.vcxproj.filters
@@ -10,6 +10,9 @@
<Filter Include="Resource Files">
<UniqueIdentifier>{b818611d-200d-4eb8-be7a-f15b396ae26d}</UniqueIdentifier>
</Filter>
+ <Filter Include="Source Files\api">
+ <UniqueIdentifier>{87c3094c-c0d1-4179-856d-55d02a4450cc}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\version.h">
@@ -77,6 +80,27 @@
<ClCompile Include="src\tox_avatars.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\api_main.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_connection.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_encryption.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_dns.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_avatars.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_groupchats.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
+ <ClCompile Include="src\api_transfer.cpp">
+ <Filter>Source Files\api</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="res\resource.rc">
diff --git a/protocols/Tox/bin/x64/libtox.dll b/protocols/Tox/bin/x64/libtox.dll
new file mode 100644
index 0000000000..0bb4918bfe
--- /dev/null
+++ b/protocols/Tox/bin/x64/libtox.dll
Binary files differ
diff --git a/protocols/Tox/bin/x86/libtox.dll b/protocols/Tox/bin/x86/libtox.dll
new file mode 100644
index 0000000000..307215fbbf
--- /dev/null
+++ b/protocols/Tox/bin/x86/libtox.dll
Binary files differ
diff --git a/protocols/Tox/tox/include/tox.h b/protocols/Tox/include/tox.h
index 52069f8698..db1b10331c 100644
--- a/protocols/Tox/tox/include/tox.h
+++ b/protocols/Tox/include/tox.h
@@ -36,6 +36,8 @@ extern "C" {
/* 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_MAX_FRIENDREQUEST_LENGTH 1016
+
#define TOX_CLIENT_ID_SIZE 32
#define TOX_AVATAR_MAX_DATA_LENGTH 16384
#define TOX_HASH_LENGTH /*crypto_hash_sha256_BYTES*/ 32
@@ -102,7 +104,7 @@ 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.
+ * data is the data and length is the length (maximum length of data is TOX_MAX_FRIENDREQUEST_LENGTH).
*
* return the friend number if success.
* return TOX_FAERR_TOOLONG if message length is too long.
@@ -290,32 +292,32 @@ uint32_t tox_get_num_online_friends(const Tox *tox);
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)
+ * Function format is function(Tox *tox, const uint8_t * public_key, const 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)
+ * Function format is: function(Tox *tox, int32_t friendnumber, const 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)
+ * Function format is: function(Tox *tox, int32_t friendnumber, const 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)
+ * function(Tox *tox, int32_t friendnumber, const 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)
+ * function(Tox *tox, int32_t friendnumber, const 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 *),
@@ -385,7 +387,8 @@ void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key);
* return 0 on success.
*/
int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
- int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object);
+ int (*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
+ void *object);
/* Function to send custom lossy packets.
* First byte of data must be in the range: 200-254.
@@ -405,7 +408,8 @@ int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *d
* return 0 on success.
*/
int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
- int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object);
+ int (*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
+ void *object);
/* Function to send custom lossless packets.
* First byte of data must be in the range: 160-191.
@@ -417,29 +421,49 @@ int tox_send_lossless_packet(const Tox *tox, int32_t friendnumber, const uint8_t
/**********GROUP CHAT FUNCTIONS: WARNING Group chats will be rewritten so this might change ************/
+/* Group chat types for tox_callback_group_invite function.
+ *
+ * TOX_GROUPCHAT_TYPE_TEXT groupchats must be accepted with the tox_join_groupchat() function.
+ * The function to accept TOX_GROUPCHAT_TYPE_AV is in toxav.
+ */
+enum {
+ TOX_GROUPCHAT_TYPE_TEXT,
+ TOX_GROUPCHAT_TYPE_AV
+};
+
/* Set the callback for group invites.
*
- * Function(Tox *tox, int32_t friendnumber, uint8_t *data, uint16_t length, void *userdata)
+ * Function(Tox *tox, int32_t friendnumber, uint8_t type, const uint8_t *data, uint16_t length, void *userdata)
*
* data of length is what needs to be passed to join_groupchat().
+ *
+ * for what type means see the enum right above this comment.
*/
-void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *),
- void *userdata);
+void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, const uint8_t *, uint16_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)
+ * Function(Tox *tox, int groupnumber, int peernumber, const 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)
+ * Function(Tox *tox, int groupnumber, int peernumber, const 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 title changes.
+ *
+ * Function(Tox *tox, int groupnumber, int peernumber, uint8_t * title, uint8_t length, void *userdata)
+ * if peernumber == -1, then author is unknown (e.g. initial joining the group)
+ */
+void tox_callback_group_title(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint8_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)
@@ -476,6 +500,14 @@ int tox_del_groupchat(Tox *tox, int groupnumber);
*/
int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name);
+/* Copy the public key of peernumber who is in groupnumber to pk.
+ * pk must be TOX_CLIENT_ID_SIZE long.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_group_peer_pubkey(const Tox *tox, int groupnumber, int peernumber, uint8_t *pk);
+
/* invite friendnumber to groupnumber
* return 0 on success
* return -1 on failure
@@ -502,6 +534,27 @@ int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, ui
*/
int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint16_t length);
+/* set the group's title, limited to MAX_NAME_LENGTH
+ * return 0 on success
+ * return -1 on failure
+ */
+int tox_group_set_title(Tox *tox, int groupnumber, const uint8_t *title, uint8_t length);
+
+/* Get group title from groupnumber and put it in title.
+ * title needs to be a valid memory location with a max_length size of at least MAX_NAME_LENGTH (128) bytes.
+ *
+ * return length of copied title if success.
+ * return -1 if failure.
+ */
+int tox_group_get_title(Tox *tox, int groupnumber, uint8_t *title, uint32_t max_length);
+
+/* Check if the current peernumber corresponds to ours.
+ *
+ * return 1 if the peernumber corresponds to ours.
+ * return 0 on failure.
+ */
+unsigned int tox_group_peernumber_is_ours(const Tox *tox, int groupnumber, int peernumber);
+
/* Return the number of peers in the group chat on success.
* return -1 on failure
*/
@@ -530,7 +583,14 @@ uint32_t tox_count_chatlist(const Tox *tox);
* 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);
+uint32_t tox_get_chatlist(const Tox *tox, int32_t *out_list, uint32_t list_size);
+
+/* return the type of groupchat (TOX_GROUPCHAT_TYPE_) that groupnumber is.
+ *
+ * return -1 on failure.
+ * return type on success.
+ */
+int tox_group_get_type(const Tox *tox, int groupnumber);
/****************AVATAR FUNCTIONS*****************/
@@ -717,7 +777,7 @@ enum {
};
/* 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)
+ * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, const 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);
@@ -727,7 +787,7 @@ void tox_callback_file_send_request(Tox *tox, void (*function)(Tox *m, int32_t,
* 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)
+ * Function(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, const 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 *,
@@ -735,7 +795,7 @@ void tox_callback_file_control(Tox *tox, void (*function)(Tox *m, int32_t, uint8
/* Set the callback for file data.
*
- * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata)
+ * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, const 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,
@@ -813,6 +873,12 @@ int tox_add_tcp_relay(Tox *tox, const char *address, uint16_t port, const uint8_
*/
int tox_isconnected(const Tox *tox);
+typedef enum {
+ TOX_PROXY_NONE,
+ TOX_PROXY_SOCKS5,
+ TOX_PROXY_HTTP
+} TOX_PROXY_TYPE;
+
typedef struct {
/*
* The type of UDP socket created depends on ipv6enabled:
@@ -825,13 +891,11 @@ typedef struct {
/* Set to 1 to disable udp support. (default: 0)
This will force Tox to use TCP only which may slow things down.
- Disabling udp support is necessary when using anonymous proxies or Tor.*/
+ Disabling udp support is necessary when using proxies or Tor.*/
uint8_t udp_disabled;
-
- /* Enable proxy support. (only basic TCP socks5 proxy currently supported.) (default: 0 (disabled))*/
- uint8_t proxy_enabled;
+ uint8_t proxy_type; /* a value from TOX_PROXY_TYPE */
char proxy_address[256]; /* Proxy ip or domain in NULL terminated string format. */
- uint16_t proxy_port; /* Proxy port: in host byte order. */
+ uint16_t proxy_port; /* Proxy port in host byte order. */
} Tox_Options;
/*
diff --git a/protocols/Tox/include/toxav.h b/protocols/Tox/include/toxav.h
new file mode 100644
index 0000000000..3696f96199
--- /dev/null
+++ b/protocols/Tox/include/toxav.h
@@ -0,0 +1,329 @@
+/** 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+#ifndef __TOXAV
+#define __TOXAV
+#include <inttypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _ToxAv ToxAv;
+
+/* vpx_image_t */
+#include <vpx/vpx_image.h>
+
+typedef void ( *ToxAVCallback ) ( void *agent, int32_t call_idx, void *arg );
+typedef void ( *ToxAvAudioCallback ) (void *agent, int32_t call_idx, const int16_t *PCM, uint16_t size, void *data);
+typedef void ( *ToxAvVideoCallback ) (void *agent, int32_t call_idx, const vpx_image_t *img, void *data);
+
+#ifndef __TOX_DEFINED__
+#define __TOX_DEFINED__
+typedef struct Tox Tox;
+#endif
+
+#define RTP_PAYLOAD_SIZE 65535
+
+
+/**
+ * Callbacks ids that handle the call states.
+ */
+typedef enum {
+ av_OnInvite, /* Incoming call */
+ av_OnRinging, /* When peer is ready to accept/reject the call */
+ av_OnStart, /* Call (RTP transmission) started */
+ av_OnCancel, /* The side that initiated call canceled invite */
+ av_OnReject, /* The side that was invited rejected the call */
+ av_OnEnd, /* Call that was active ended */
+ av_OnRequestTimeout, /* When the requested action didn't get response in specified time */
+ av_OnPeerTimeout, /* Peer timed out; stop the call */
+ av_OnPeerCSChange, /* Peer changing Csettings. Prepare for changed AV */
+ av_OnSelfCSChange /* Csettings change confirmation. Once triggered peer is ready to recv changed AV */
+} ToxAvCallbackID;
+
+
+/**
+ * Call type identifier.
+ */
+typedef enum {
+ av_TypeAudio = 192,
+ av_TypeVideo
+} ToxAvCallType;
+
+
+typedef enum {
+ av_CallNonExistent = -1,
+ av_CallInviting, /* when sending call invite */
+ av_CallStarting, /* when getting call invite */
+ av_CallActive,
+ av_CallHold,
+ av_CallHungUp
+} ToxAvCallState;
+
+/**
+ * Error indicators. Values under -20 are reserved for toxcore.
+ */
+typedef enum {
+ av_ErrorNone = 0,
+ av_ErrorUnknown = -1, /* Unknown error */
+ av_ErrorNoCall = -20, /* Trying to perform call action while not in a call */
+ av_ErrorInvalidState = -21, /* Trying to perform call action while in invalid state*/
+ av_ErrorAlreadyInCallWithPeer = -22, /* Trying to call peer when already in a call with peer */
+ av_ErrorReachedCallLimit = -23, /* Cannot handle more calls */
+ av_ErrorInitializingCodecs = -30, /* Failed creating CSSession */
+ av_ErrorSettingVideoResolution = -31, /* Error setting resolution */
+ av_ErrorSettingVideoBitrate = -32, /* Error setting bitrate */
+ av_ErrorSplittingVideoPayload = -33, /* Error splitting video payload */
+ av_ErrorEncodingVideo = -34, /* vpx_codec_encode failed */
+ av_ErrorEncodingAudio = -35, /* opus_encode failed */
+ av_ErrorSendingPayload = -40, /* Sending lossy packet failed */
+ av_ErrorCreatingRtpSessions = -41, /* One of the rtp sessions failed to initialize */
+ av_ErrorNoRtpSession = -50, /* Trying to perform rtp action on invalid session */
+ av_ErrorInvalidCodecState = -51, /* Codec state not initialized */
+ av_ErrorPacketTooLarge = -52, /* Split packet exceeds it's limit */
+} ToxAvError;
+
+
+/**
+ * Locally supported capabilities.
+ */
+typedef enum {
+ av_AudioEncoding = 1 << 0,
+ av_AudioDecoding = 1 << 1,
+ av_VideoEncoding = 1 << 2,
+ av_VideoDecoding = 1 << 3
+} ToxAvCapabilities;
+
+
+/**
+ * Encoding settings.
+ */
+typedef struct _ToxAvCSettings {
+ 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;
+
+/**
+ * Start new A/V session. There can only be one session at the time.
+ */
+ToxAv *toxav_new(Tox *messenger, int32_t max_calls);
+
+/**
+ * Remove A/V session.
+ */
+void toxav_kill(ToxAv *av);
+
+/**
+ * Returns the interval in milliseconds when the next toxav_do() should be called.
+ * If no call is active at the moment returns 200.
+ */
+uint32_t toxav_do_interval(ToxAv *av);
+
+/**
+ * Main loop for the session. Best called right after tox_do();
+ */
+void toxav_do(ToxAv *av);
+
+/**
+ * Register callback for call state.
+ */
+void toxav_register_callstate_callback (ToxAv *av, ToxAVCallback cb, ToxAvCallbackID id, void *userdata);
+
+/**
+ * Register callback for audio data.
+ */
+void toxav_register_audio_callback (ToxAv *av, ToxAvAudioCallback cb, void *userdata);
+
+/**
+ * Register callback for video data.
+ */
+void toxav_register_video_callback (ToxAv *av, ToxAvVideoCallback cb, void *userdata);
+
+/**
+ * Call user. Use its friend_id.
+ */
+int toxav_call(ToxAv *av,
+ int32_t *call_index,
+ int friend_id,
+ const ToxAvCSettings *csettings,
+ int ringing_seconds);
+
+/**
+ * Hangup active call.
+ */
+int toxav_hangup(ToxAv *av, int32_t call_index);
+
+/**
+ * Answer incoming call. Pass the csettings that you will use.
+ */
+int toxav_answer(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings );
+
+/**
+ * Reject incoming call.
+ */
+int toxav_reject(ToxAv *av, int32_t call_index, const char *reason);
+
+/**
+ * Cancel outgoing request.
+ */
+int toxav_cancel(ToxAv *av, int32_t call_index, int peer_id, const char *reason);
+
+/**
+ * Notify peer that we are changing codec settings.
+ */
+int toxav_change_settings(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings);
+
+/**
+ * Terminate transmission. Note that transmission will be
+ * terminated without informing remote peer. Usually called when we can't inform peer.
+ */
+int toxav_stop_call(ToxAv *av, int32_t call_index);
+
+/**
+ * Allocates transmission data. Must be call before calling toxav_prepare_* and toxav_send_*.
+ * Also, it must be called when call is started
+ */
+int toxav_prepare_transmission(ToxAv *av, int32_t call_index, int support_video);
+
+/**
+ * Clears transmission data. Call this at the end of the transmission.
+ */
+int toxav_kill_transmission(ToxAv *av, int32_t call_index);
+
+/**
+ * Encode video frame.
+ */
+int toxav_prepare_video_frame ( ToxAv *av,
+ int32_t call_index,
+ uint8_t *dest,
+ int dest_max,
+ vpx_image_t *input);
+
+/**
+ * Send encoded video packet.
+ */
+int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t *frame, uint32_t frame_size);
+
+/**
+ * Encode audio frame.
+ */
+int toxav_prepare_audio_frame ( ToxAv *av,
+ int32_t call_index,
+ uint8_t *dest,
+ int dest_max,
+ const int16_t *frame,
+ int frame_size);
+
+/**
+ * Send encoded audio frame.
+ */
+int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int size);
+
+/**
+ * Get codec settings from the peer. These were exchanged during call initialization
+ * or when peer send us new csettings.
+ */
+int toxav_get_peer_csettings ( ToxAv *av, int32_t call_index, int peer, ToxAvCSettings *dest );
+
+/**
+ * Get friend id of peer participating in conversation.
+ */
+int toxav_get_peer_id ( ToxAv *av, int32_t call_index, int peer );
+
+/**
+ * Get current call state.
+ */
+ToxAvCallState toxav_get_call_state ( ToxAv *av, int32_t call_index );
+
+/**
+ * Is certain capability supported. Used to determine if encoding/decoding is ready.
+ */
+int toxav_capability_supported ( ToxAv *av, int32_t call_index, ToxAvCapabilities capability );
+
+/**
+ * Returns tox reference.
+ */
+Tox *toxav_get_tox (ToxAv *av);
+
+/**
+ * Returns number of active calls or -1 on error.
+ */
+int toxav_get_active_count (ToxAv *av);
+
+/* Create a new toxav group.
+ *
+ * return group number on success.
+ * return -1 on failure.
+ *
+ * Audio data callback format:
+ * audio_callback(Tox *tox, int groupnumber, int peernumber, const int16_t *pcm, unsigned int samples, uint8_t channels, unsigned int sample_rate, void *userdata)
+ *
+ * Note that total size of pcm in bytes is equal to (samples * channels * sizeof(int16_t)).
+ */
+int toxav_add_av_groupchat(Tox *tox, void (*audio_callback)(Tox *, int, int, const int16_t *, unsigned int, uint8_t,
+ unsigned int, void *), void *userdata);
+
+/* Join a AV group (you need to have been invited first.)
+ *
+ * returns group number on success
+ * returns -1 on failure.
+ *
+ * Audio data callback format (same as the one for toxav_add_av_groupchat()):
+ * audio_callback(Tox *tox, int groupnumber, int peernumber, const int16_t *pcm, unsigned int samples, uint8_t channels, unsigned int sample_rate, void *userdata)
+ *
+ * Note that total size of pcm in bytes is equal to (samples * channels * sizeof(int16_t)).
+ */
+int toxav_join_av_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length,
+ void (*audio_callback)(Tox *, int, int, const int16_t *, unsigned int, uint8_t, unsigned int, void *), void *userdata);
+
+/* Send audio to the group chat.
+ *
+ * return 0 on success.
+ * return -1 on failure.
+ *
+ * Note that total size of pcm in bytes is equal to (samples * channels * sizeof(int16_t)).
+ *
+ * Valid number of samples are ((sample rate) * (audio length (Valid ones are: 2.5, 5, 10, 20, 40 or 60 ms)) / 1000)
+ * Valid number of channels are 1 or 2.
+ * Valid sample rates are 8000, 12000, 16000, 24000, or 48000.
+ *
+ * Recommended values are: samples = 960, channels = 1, sample_rate = 48000
+ */
+int toxav_group_send_audio(Tox *tox, int groupnumber, const int16_t *pcm, unsigned int samples, uint8_t channels,
+ unsigned int sample_rate);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TOXAV */
diff --git a/protocols/Tox/tox/include/toxdns.h b/protocols/Tox/include/toxdns.h
index 06071b82d6..06071b82d6 100644
--- a/protocols/Tox/tox/include/toxdns.h
+++ b/protocols/Tox/include/toxdns.h
diff --git a/protocols/Tox/include/toxencryptsave.h b/protocols/Tox/include/toxencryptsave.h
new file mode 100644
index 0000000000..169f736c0b
--- /dev/null
+++ b/protocols/Tox/include/toxencryptsave.h
@@ -0,0 +1,196 @@
+/* toxencryptsave.h
+ *
+ * The Tox encrypted save functions.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef TOXENCRYPTSAVE_H
+#define TOXENCRYPTSAVE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#ifndef __TOX_DEFINED__
+#define __TOX_DEFINED__
+typedef struct Tox Tox;
+#endif
+
+// these functions provide access to these defines in toxencryptsave.c, which
+// otherwise aren't actually available in clients...
+int tox_pass_encryption_extra_length();
+
+int tox_pass_key_length();
+
+int tox_pass_salt_length();
+
+/* return size of the messenger data (for encrypted Messenger saving). */
+uint32_t tox_encrypted_size(const Tox *tox);
+
+/* This "module" provides functions analogous to tox_load and tox_save in toxcore,
+ * as well as functions for encryption of arbitrary client data (e.g. chat logs).
+ *
+ * It is conceptually organized into two parts. The first part are the functions
+ * with "key" in the name. To use these functions, first derive an encryption key
+ * from a password with tox_derive_key_from_pass, and use the returned key to
+ * encrypt the data. The second part takes the password itself instead of the key,
+ * and then delegates to the first part to derive the key before de/encryption,
+ * which can simplify client code; however, key derivation is very expensive
+ * compared to the actual encryption, so clients that do a lot of encryption should
+ * favor using the first part intead of the second part.
+ *
+ * The encrypted data is prepended with a magic number, to aid validity checking
+ * (no guarantees are made of course).
+ *
+ * Clients should consider alerting their users that, unlike plain data, if even one bit
+ * becomes corrupted, the data will be entirely unrecoverable.
+ * Ditto if they forget their password, there is no way to recover the data.
+ */
+
+
+/******************************* BEGIN PART 2 *******************************
+ * For simplicty, the second part of the module is presented first. The API for
+ * the first part is analgous, with some extra functions for key handling. If
+ * your code spends too much time using these functions, consider using the part
+ * 1 functions instead.
+ */
+
+/* Encrypts the given data with the given passphrase. The output array must be
+ * at least data_len + tox_pass_encryption_extra_length() bytes long. This delegates
+ * to tox_derive_key_from_pass and tox_pass_key_encrypt.
+ *
+ * tox_encrypted_save() is a good example of how to use this function.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_pass_encrypt(const uint8_t *data, uint32_t data_len, uint8_t *passphrase, uint32_t pplength, uint8_t *out);
+
+/* Save the messenger data encrypted with the given password.
+ * data must be at least tox_encrypted_size().
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_encrypted_save(const Tox *tox, uint8_t *data, uint8_t *passphrase, uint32_t pplength);
+
+/* Decrypts the given data with the given passphrase. The output array must be
+ * at least data_len - tox_pass_encryption_extra_length() bytes long. This delegates
+ * to tox_pass_key_decrypt.
+ *
+ * tox_encrypted_load() is a good example of how to use this function.
+ *
+ * returns the length of the output data (== data_len - tox_pass_encryption_extra_length()) on success
+ * returns -1 on failure
+ */
+int tox_pass_decrypt(const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength, uint8_t *out);
+
+/* Load the messenger from encrypted data of size length.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_encrypted_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength);
+
+
+/******************************* BEGIN PART 1 *******************************
+ * And now part "1", which does the actual encryption, and is rather less cpu
+ * intensive than part one. The first 3 functions are for key handling.
+ */
+
+/* Generates a secret symmetric key from the given passphrase. out_key must be at least
+ * tox_pass_key_length() bytes long.
+ * Be sure to not compromise the key! Only keep it in memory, do not write to disk.
+ * The password is zeroed after key derivation.
+ * The key should only be used with the other functions in this module, as it
+ * includes a salt.
+ * Note that this function is not deterministic; to derive the same key from a
+ * password, you also must know the random salt that was used. See below.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_derive_key_from_pass(uint8_t *passphrase, uint32_t pplength, uint8_t *out_key);
+
+/* Same as above, except with use the given salt for deterministic key derivation.
+ * The salt must be tox_salt_length() bytes in length.
+ */
+int tox_derive_key_with_salt(uint8_t *passphrase, uint32_t pplength, uint8_t *salt, uint8_t *out_key);
+
+/* This retrieves the salt used to encrypt the given data, which can then be passed to
+ * derive_key_with_salt to produce the same key as was previously used. Any encrpyted
+ * data with this module can be used as input.
+ *
+ * returns -1 if the magic number is wrong
+ * returns 0 otherwise (no guarantee about validity of data)
+ */
+int tox_get_salt(uint8_t *data, uint8_t *salt);
+
+/* Now come the functions that are analogous to the part 2 functions. */
+
+/* Encrypt arbitrary with a key produced by tox_derive_key_. The output
+ * array must be at least data_len + tox_pass_encryption_extra_length() bytes long.
+ * key must be tox_pass_key_length() bytes.
+ * If you already have a symmetric key from somewhere besides this module, simply
+ * call encrypt_data_symmetric in toxcore/crypto_core directly.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_pass_key_encrypt(const uint8_t *data, uint32_t data_len, const uint8_t *key, uint8_t *out);
+
+/* Save the messenger data encrypted with the given key from tox_derive_key.
+ * data must be at least tox_encrypted_size().
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_encrypted_key_save(const Tox *tox, uint8_t *data, uint8_t *key);
+
+/* This is the inverse of tox_pass_key_encrypt, also using only keys produced by
+ * tox_derive_key_from_pass.
+ *
+ * returns the length of the output data (== data_len - tox_pass_encryption_extra_length()) on success
+ * returns -1 on failure
+ */
+int tox_pass_key_decrypt(const uint8_t *data, uint32_t length, const uint8_t *key, uint8_t *out);
+
+/* Load the messenger from encrypted data of size length, with key from tox_derive_key.
+ *
+ * returns 0 on success
+ * returns -1 on failure
+ */
+int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *key);
+
+/* Determines whether or not the given data is encrypted (by checking the magic number)
+ *
+ * returns 1 if it is encrypted
+ * returns 0 otherwise
+ */
+int tox_is_data_encrypted(const uint8_t *data);
+int tox_is_save_encrypted(const uint8_t *data); // poorly-named alias for backwards compat (oh irony...)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/protocols/Tox/res/resource.rc b/protocols/Tox/res/resource.rc
index 171d4ecc45..8a82bf0522 100644
--- a/protocols/Tox/res/resource.rc
+++ b/protocols/Tox/res/resource.rc
@@ -85,14 +85,14 @@ EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "Name:",IDC_STATIC,12,24,54,12
- EDITTEXT IDC_NAME,66,23,120,12,ES_AUTOHSCROLL
- LTEXT "Password:",IDC_STATIC,12,40,54,12
- EDITTEXT IDC_TOXID,66,7,100,12,ES_AUTOHSCROLL | ES_READONLY
+ EDITTEXT IDC_NAME,66,23,120,12,ES_AUTOHSCROLL | WS_DISABLED
+ LTEXT "Password:",IDC_STATIC,12,40,54,12,NOT WS_VISIBLE
+ EDITTEXT IDC_TOXID,66,7,100,12,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
LTEXT "Default group:",IDC_STATIC,12,56,54,12
EDITTEXT IDC_GROUP,66,54,120,12,ES_AUTOHSCROLL
- PUSHBUTTON "C",IDC_CLIPBOARD,170,7,16,13
+ PUSHBUTTON "C",IDC_CLIPBOARD,170,7,16,13,WS_DISABLED
LTEXT "Tox ID:",IDC_STATIC,12,9,54,8
- EDITTEXT IDC_PASSWORD,66,38,120,12,ES_PASSWORD | ES_AUTOHSCROLL
+ EDITTEXT IDC_PASSWORD,66,38,120,12,ES_PASSWORD | ES_AUTOHSCROLL | NOT WS_VISIBLE | WS_DISABLED
END
IDD_OPTIONS_MAIN DIALOGEX 0, 0, 312, 234
@@ -101,9 +101,9 @@ EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "Name:",IDC_STATIC,12,35,69,11
- EDITTEXT IDC_NAME,81,33,219,12,ES_AUTOHSCROLL
+ EDITTEXT IDC_NAME,81,33,219,12,ES_AUTOHSCROLL | WS_DISABLED
LTEXT "Tox ID:",IDC_STATIC,12,19,69,11
- EDITTEXT IDC_TOXID,81,17,199,12,ES_AUTOHSCROLL | ES_READONLY
+ EDITTEXT IDC_TOXID,81,17,199,12,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
GROUPBOX "Connection settings",IDC_STATIC,7,89,298,45
CONTROL "Disable UDP (force Tox to use TCP)",IDC_DISABLE_UDP,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,101,288,10
@@ -111,9 +111,9 @@ BEGIN
GROUPBOX "Tox",IDC_STATIC,7,7,298,77
LTEXT "Default group:",IDC_STATIC,12,68,69,12
EDITTEXT IDC_GROUP,81,65,219,12,ES_AUTOHSCROLL
- PUSHBUTTON "C",IDC_CLIPBOARD,284,17,16,13
- LTEXT "Password:",IDC_STATIC,12,51,69,8
- EDITTEXT IDC_PASSWORD,81,49,219,12,ES_PASSWORD | ES_AUTOHSCROLL
+ PUSHBUTTON "C",IDC_CLIPBOARD,284,17,16,13,WS_DISABLED
+ LTEXT "Password:",IDC_STATIC,12,51,69,8,NOT WS_VISIBLE
+ EDITTEXT IDC_PASSWORD,81,49,219,12,ES_PASSWORD | ES_AUTOHSCROLL | NOT WS_VISIBLE | WS_DISABLED
END
IDD_PROFILE_IMPORT DIALOGEX 0, 0, 313, 87
diff --git a/protocols/Tox/src/api_avatars.cpp b/protocols/Tox/src/api_avatars.cpp
new file mode 100644
index 0000000000..5b5aa0c487
--- /dev/null
+++ b/protocols/Tox/src/api_avatars.cpp
@@ -0,0 +1,48 @@
+#include "common.h"
+
+/* AVATAR FUNCTIONS */
+
+void tox_callback_avatar_info(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, uint8_t *, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t*, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_avatar_data(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, uint8_t *, uint8_t *, uint32_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t*, uint8_t*, uint32_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length)
+{
+ return CreateFunction<int(*)(Tox*, uint8_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, format, data, length);
+}
+
+int tox_unset_avatar(Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+int tox_get_self_avatar(const Tox *tox, uint8_t *format, uint8_t *buf, uint32_t *length, uint32_t maxlen, uint8_t *hash)
+{
+ return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*, uint32_t*, uint32_t, uint8_t*)>(__FUNCTION__)(tox, format, buf, length, maxlen, hash);
+}
+
+int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen)
+{
+ return CreateFunction<int(*)(uint8_t*, const uint8_t*, const uint32_t)>(__FUNCTION__)(hash, data, datalen);
+}
+
+int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_send_avatar_info(Tox *tox, const int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
+} \ No newline at end of file
diff --git a/protocols/Tox/src/api_connection.cpp b/protocols/Tox/src/api_connection.cpp
new file mode 100644
index 0000000000..3b3ffb4143
--- /dev/null
+++ b/protocols/Tox/src/api_connection.cpp
@@ -0,0 +1,28 @@
+#include "common.h"
+
+/* CONNECTION FUNCTIONS */
+
+int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key)
+{
+ return CreateFunction<int(*)(Tox*, const char*, uint16_t, const uint8_t*)>(__FUNCTION__)(tox, address, port, public_key);
+}
+
+int tox_add_tcp_relay(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key)
+{
+ return CreateFunction<int(*)(Tox*, const char*, uint16_t, const uint8_t*)>(__FUNCTION__)(tox, address, port, public_key);
+}
+
+int tox_isconnected(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+uint32_t tox_do_interval(Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+void tox_do(Tox *tox)
+{
+ CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+} \ No newline at end of file
diff --git a/protocols/Tox/src/api_dns.cpp b/protocols/Tox/src/api_dns.cpp
new file mode 100644
index 0000000000..3b4e601d9a
--- /dev/null
+++ b/protocols/Tox/src/api_dns.cpp
@@ -0,0 +1,23 @@
+#include "common.h"
+
+/* DNS TOXID RESOILVING FUNCTIONS */
+
+void *tox_dns3_new(uint8_t *server_public_key)
+{
+ return CreateFunction<void*(*)(uint8_t*)>(__FUNCTION__)(server_public_key);
+}
+
+void tox_dns3_kill(void *dns3_object)
+{
+ CreateFunction<void(*)(void*)>(__FUNCTION__)(dns3_object);
+}
+
+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)
+{
+ return CreateFunction<int(*)(void*, uint8_t*, uint16_t, uint32_t*, uint8_t*, uint8_t)>(__FUNCTION__)(dns3_object, string, string_max_len, request_id, name, name_len);
+}
+
+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)
+{
+ return CreateFunction<int(*)(void*, uint8_t*, uint8_t*, uint32_t, uint32_t)>(__FUNCTION__)(dns3_object, tox_id, id_record, id_record_len, request_id);
+} \ No newline at end of file
diff --git a/protocols/Tox/src/api_encryption.cpp b/protocols/Tox/src/api_encryption.cpp
new file mode 100644
index 0000000000..7125743096
--- /dev/null
+++ b/protocols/Tox/src/api_encryption.cpp
@@ -0,0 +1,88 @@
+#include "common.h"
+
+/* ENCRYPTION FUNCTIONS */
+
+int tox_pass_encryption_extra_length()
+{
+ return CreateFunction<int(*)()>(__FUNCTION__)();
+}
+
+int tox_pass_key_length()
+{
+ return CreateFunction<int(*)()>(__FUNCTION__)();
+}
+
+int tox_pass_salt_length()
+{
+ return CreateFunction<int(*)()>(__FUNCTION__)();
+}
+
+uint32_t tox_encrypted_size(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+int tox_pass_encrypt(const uint8_t *data, uint32_t data_len, uint8_t *passphrase, uint32_t pplength, uint8_t *out)
+{
+ return CreateFunction<int(*)(const uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(data, data_len, passphrase, pplength, out);
+}
+
+int tox_encrypted_save(const Tox *tox, uint8_t *data, uint8_t *passphrase, uint32_t pplength)
+{
+ return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, passphrase, pplength);
+}
+
+int tox_pass_decrypt(const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength, uint8_t *out)
+{
+ return CreateFunction<int(*)(const uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(data, length, passphrase, pplength, out);
+}
+
+int tox_encrypted_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength)
+{
+ return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t, uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, length, passphrase, pplength);
+}
+
+int tox_derive_key_from_pass(uint8_t *passphrase, uint32_t pplength, uint8_t *out_key)
+{
+ return CreateFunction<int(*)(uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(passphrase, pplength, out_key);
+}
+
+int tox_derive_key_with_salt(uint8_t *passphrase, uint32_t pplength, uint8_t *salt, uint8_t *out_key)
+{
+ return CreateFunction<int(*)(uint8_t*, uint32_t, uint8_t*, uint8_t*)>(__FUNCTION__)(passphrase, pplength, salt, out_key);
+}
+
+int tox_get_salt(uint8_t *data, uint8_t *salt)
+{
+ return CreateFunction<int(*)(uint8_t*, uint8_t*)>(__FUNCTION__)(data, salt);
+}
+
+int tox_pass_key_encrypt(const uint8_t *data, uint32_t data_len, const uint8_t *key, uint8_t *out)
+{
+ return CreateFunction<int(*)(const uint8_t*, uint32_t, const uint8_t*, uint8_t*)>(__FUNCTION__)(data, data_len, key, out);
+}
+
+int tox_encrypted_key_save(const Tox *tox, uint8_t *data, uint8_t *key)
+{
+ return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*)>(__FUNCTION__)(tox, data, key);
+}
+
+int tox_pass_key_decrypt(const uint8_t *data, uint32_t length, const uint8_t *key, uint8_t *out)
+{
+ return CreateFunction<int(*)(const uint8_t*, uint32_t, const uint8_t*, uint8_t*)>(__FUNCTION__)(data, length, key, out);
+}
+
+int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *key)
+{
+ return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(tox, data, length, key);
+}
+
+int tox_is_data_encrypted(const uint8_t *data)
+{
+ return CreateFunction<int(*)(const uint8_t*)>(__FUNCTION__)(data);
+}
+
+int tox_is_save_encrypted(const uint8_t *data)
+{
+ return CreateFunction<int(*)(const uint8_t*)>(__FUNCTION__)(data);
+} \ No newline at end of file
diff --git a/protocols/Tox/src/api_groupchats.cpp b/protocols/Tox/src/api_groupchats.cpp
new file mode 100644
index 0000000000..8f49b8f421
--- /dev/null
+++ b/protocols/Tox/src/api_groupchats.cpp
@@ -0,0 +1,88 @@
+#include "common.h"
+
+/* GROUP CHAT FUNCTIONS: WARNING Group chats will be rewritten so this might change */
+/*
+void tox_callback_group_invite(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, const uint8_t *, uint16_t, void *), void *userdata)
+{
+}
+
+void tox_callback_group_message(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata)
+{
+}
+
+void tox_callback_group_action(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata)
+{
+}
+
+void tox_callback_group_title(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint8_t, void *), void *userdata)
+{
+}
+
+void tox_callback_group_namelist_change(Tox *tox, void(*function)(Tox *tox, int, int, uint8_t, void *), void *userdata)
+{
+}
+
+int tox_add_groupchat(Tox *tox)
+{
+}
+
+int tox_del_groupchat(Tox *tox, int groupnumber)
+{
+}
+
+int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name)
+{
+}
+
+int tox_group_peer_pubkey(const Tox *tox, int groupnumber, int peernumber, uint8_t *pk)
+{
+}
+
+int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber)
+{
+}
+
+int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length)
+{
+}
+
+int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint16_t length)
+{
+}
+
+int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint16_t length)
+{
+}
+
+int tox_group_set_title(Tox *tox, int groupnumber, const uint8_t *title, uint8_t length)
+{
+}
+
+int tox_group_get_title(Tox *tox, int groupnumber, uint8_t *title, uint32_t max_length)
+{
+}
+
+unsigned int tox_group_peernumber_is_ours(const Tox *tox, int groupnumber, int peernumber)
+{
+}
+
+int tox_group_number_peers(const Tox *tox, int groupnumber)
+{
+}
+
+int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], uint16_t length)
+{
+}
+
+uint32_t tox_count_chatlist(const Tox *tox)
+{
+}
+
+uint32_t tox_get_chatlist(const Tox *tox, int32_t *out_list, uint32_t list_size)
+{
+}
+
+int tox_group_get_type(const Tox *tox, int groupnumber)
+{
+}
+*/ \ No newline at end of file
diff --git a/protocols/Tox/src/api_main.cpp b/protocols/Tox/src/api_main.cpp
new file mode 100644
index 0000000000..fc23165d44
--- /dev/null
+++ b/protocols/Tox/src/api_main.cpp
@@ -0,0 +1,252 @@
+#include "common.h"
+
+/* MAIN FUNCTIONS */
+
+Tox *tox_new(Tox_Options *options)
+{
+ return CreateFunction<Tox*(*)(void*)>(__FUNCTION__)(options);
+}
+
+void tox_kill(Tox *tox)
+{
+ CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+ tox = NULL;
+}
+
+void tox_get_address(const Tox *tox, uint8_t *address)
+{
+ CreateFunction<void(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, address);
+}
+
+int32_t tox_add_friend(Tox *tox,const uint8_t *address, const uint8_t *data, uint16_t length)
+{
+ return CreateFunction<int32_t(*)(Tox*, const uint8_t*, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, address, data, length);
+}
+
+int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id)
+{
+ return CreateFunction<int32_t(*)(Tox*, const uint8_t*)>(__FUNCTION__)(tox, client_id);
+}
+
+int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id)
+{
+ return CreateFunction<int32_t(*)(const Tox*, const uint8_t*)>(__FUNCTION__)(tox, client_id);
+}
+
+int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*)>(__FUNCTION__)(tox, friendnumber, client_id);
+}
+
+int tox_del_friend(Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_friend_exists(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length)
+{
+ return CreateFunction<uint32_t(*)(Tox*, int32_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, message, length);
+}
+
+uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length)
+{
+ return CreateFunction<uint32_t(*)(Tox*, int32_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, action, length);
+}
+
+int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length)
+{
+ return CreateFunction<int(*)(Tox*, const uint8_t*, uint16_t)>(__FUNCTION__ )(tox, name, length);
+}
+
+uint16_t tox_get_self_name(const Tox *tox, uint8_t *name)
+{
+ return CreateFunction<uint16_t(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, name);
+}
+
+int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*)>(__FUNCTION__)(tox, friendnumber, name);
+}
+
+int tox_get_name_size(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_get_self_name_size(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length)
+{
+ return CreateFunction<int(*)(Tox*, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, status, length);
+}
+
+int tox_set_user_status(Tox *tox, uint8_t userstatus)
+{
+ return CreateFunction<int(*)(Tox*, uint8_t)>(__FUNCTION__)(tox, userstatus);
+}
+
+int tox_get_status_message_size(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_get_self_status_message_size(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, buf, maxlen);
+}
+
+int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen)
+{
+ return CreateFunction<int(*)(const Tox*, uint8_t*, uint32_t)>(__FUNCTION__)(tox, buf, maxlen);
+}
+
+uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+uint8_t tox_get_self_user_status(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing)
+{
+ return CreateFunction<int(*)(Tox*, int32_t, uint8_t)>(__FUNCTION__)(tox, friendnumber, is_typing);
+}
+
+uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+uint32_t tox_count_friendlist(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+uint32_t tox_get_num_online_friends(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t*, uint32_t)>(__FUNCTION__)(tox, out_list, list_size);
+}
+
+void tox_callback_friend_request(Tox *tox, void(*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, const uint8_t*, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_friend_message(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_friend_action(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_name_change(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*tox, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_status_message(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_user_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_typing_change(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_read_receipt(Tox *tox, void(*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint32_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+void tox_callback_connection_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+/* SAVING AND LOADING FUNCTIONS */
+
+uint32_t tox_size(const Tox *tox)
+{
+ return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
+}
+
+void tox_save(const Tox *tox, uint8_t *data)
+{
+ CreateFunction<int(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, data);
+}
+
+int tox_load(Tox *tox, const uint8_t *data, uint32_t length)
+{
+ return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, length);
+}
+
+/* ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) */
+/*
+uint32_t tox_get_nospam(const Tox *tox)
+{
+}
+
+void tox_set_nospam(Tox *tox, uint32_t nospam)
+{
+}
+
+void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key)
+{
+}
+
+int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, int(*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object), void *object)
+{
+}
+
+int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length)
+{
+}
+
+int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, int(*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object), void *object)
+{
+}
+
+int tox_send_lossless_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length)
+{
+}
+*/ \ No newline at end of file
diff --git a/protocols/Tox/src/api_transfer.cpp b/protocols/Tox/src/api_transfer.cpp
new file mode 100644
index 0000000000..c5ba1b5f4a
--- /dev/null
+++ b/protocols/Tox/src/api_transfer.cpp
@@ -0,0 +1,43 @@
+#include "common.h"
+
+/* FILE SENDING FUNCTIONS */
+
+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)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint64_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, 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)
+{
+ CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, 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)
+{
+ CreateFunction<int(*)(Tox*tox, void(*)(Tox*, int32_t, uint8_t, const uint8_t *, uint16_t length, void*), void*)>(__FUNCTION__)(tox, function, userdata);
+}
+
+int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, uint16_t filename_length)
+{
+ return CreateFunction<int(*)(Tox*, int32_t, uint64_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, filesize, filename, filename_length);
+}
+
+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)
+{
+ return CreateFunction<int(*)(Tox*, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, send_receive, filenumber, message_id, data, length);
+}
+
+int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length)
+{
+ return CreateFunction<int(*)(Tox*, int32_t, uint8_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, filenumber, data, length);
+}
+
+int tox_file_data_size(const Tox *tox, int32_t friendnumber)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
+}
+
+uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive)
+{
+ return CreateFunction<int(*)(const Tox*, int32_t, uint8_t, uint8_t)>(__FUNCTION__)(tox, friendnumber, filenumber, send_receive);
+} \ No newline at end of file
diff --git a/protocols/Tox/src/tox_account.cpp b/protocols/Tox/src/tox_account.cpp
index d6a34a0006..d57b7faf2c 100644
--- a/protocols/Tox/src/tox_account.cpp
+++ b/protocols/Tox/src/tox_account.cpp
@@ -10,7 +10,7 @@ int CToxProto::OnAccountLoaded(WPARAM, LPARAM)
{
HookProtoEvent(ME_OPT_INITIALISE, &CToxProto::OnOptionsInit);
HookProtoEvent(ME_USERINFO_INITIALISE, &CToxProto::OnUserInfoInit);
- HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CToxProto::OnSettingsChanged);
+ //HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CToxProto::OnSettingsChanged);
HookProtoEvent(ME_MSG_PRECREATEEVENT, &CToxProto::OnPreCreateMessage);
return 0;
@@ -23,7 +23,7 @@ int CToxProto::OnAccountRenamed(WPARAM, LPARAM lParam)
std::tstring newPath = GetToxProfilePath();
TCHAR oldPath[MAX_PATH];
mir_sntprintf(oldPath, MAX_PATH, _T("%s\\%s.tox"), VARST(_T("%miranda_userdata%")), accountName);
- MoveFileEx(oldPath, newPath.c_str(), MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED);
+ _trename(oldPath, newPath.c_str());
mir_free(accountName);
accountName = mir_tstrdup(m_tszUserName);
@@ -32,23 +32,7 @@ int CToxProto::OnAccountRenamed(WPARAM, LPARAM lParam)
bool CToxProto::InitToxCore()
{
- std::tstring profilePath = GetToxProfilePath();
- bool isProfileExists = IsFileExists(profilePath);
-
- hProfile = CreateFile(
- profilePath.c_str(),
- GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
- NULL,
- OPEN_ALWAYS,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
-
- if (hProfile == INVALID_HANDLE_VALUE)
- {
- debugLogA("CToxProto::InitToxCore: cannot open tox profile");
- return false;
- }
+ debugLogA("CToxProto::InitToxCore: initializing tox profile");
Tox_Options options = { 0 };
options.udp_disabled = getBool("DisableUDP", 0);
@@ -61,10 +45,18 @@ bool CToxProto::InitToxCore()
if (nlus.useProxy)
{
+ if (nlus.proxyType == PROXYTYPE_HTTP || nlus.proxyType == PROXYTYPE_HTTPS)
+ {
+ debugLogA("CToxProto::InitToxCore: setting http user proxy config");
+ options.proxy_type = TOX_PROXY_HTTP;
+ strcpy(&options.proxy_address[0], nlus.szProxyServer);
+ options.proxy_port = nlus.wProxyPort;
+ }
+
if (nlus.proxyType == PROXYTYPE_SOCKS4 || nlus.proxyType == PROXYTYPE_SOCKS5)
{
debugLogA("CToxProto::InitToxCore: setting socks user proxy config");
- options.proxy_enabled = 1;
+ options.proxy_type = TOX_PROXY_SOCKS5;
strcpy(&options.proxy_address[0], nlus.szProxyServer);
options.proxy_port = nlus.wProxyPort;
}
@@ -72,34 +64,30 @@ bool CToxProto::InitToxCore()
}
tox = tox_new(&options);
- tox_callback_friend_request(tox, OnFriendRequest, this);
- tox_callback_friend_message(tox, OnFriendMessage, this);
- tox_callback_friend_action(tox, OnFriendAction, this);
- tox_callback_typing_change(tox, OnTypingChanged, this);
- tox_callback_name_change(tox, OnFriendNameChange, this);
- tox_callback_status_message(tox, OnStatusMessageChanged, this);
- tox_callback_user_status(tox, OnUserStatusChanged, this);
- tox_callback_read_receipt(tox, OnReadReceipt, this);
- tox_callback_connection_status(tox, OnConnectionStatusChanged, this);
- // file transfers
- tox_callback_file_control(tox, OnFileRequest, this);
- tox_callback_file_send_request(tox, OnFriendFile, this);
- tox_callback_file_data(tox, OnFileData, this);
- // avatars
- tox_callback_avatar_info(tox, OnGotFriendAvatarInfo, this);
- tox_callback_avatar_data(tox, OnGotFriendAvatarData, this);
-
- std::vector<uint8_t> pubKey(TOX_FRIEND_ADDRESS_SIZE);
- tox_get_address(tox, &pubKey[0]);
- std::string address = DataToHexString(pubKey);
- setString(NULL, TOX_SETTINGS_ID, address.c_str());
-
- if (isProfileExists)
+ bool isProfileLoaded = LoadToxProfile();
+ if (isProfileLoaded)
{
- if (!LoadToxProfile())
- {
- return false;
- }
+ tox_callback_friend_request(tox, OnFriendRequest, this);
+ tox_callback_friend_message(tox, OnFriendMessage, this);
+ tox_callback_friend_action(tox, OnFriendAction, this);
+ tox_callback_typing_change(tox, OnTypingChanged, this);
+ tox_callback_name_change(tox, OnFriendNameChange, this);
+ tox_callback_status_message(tox, OnStatusMessageChanged, this);
+ tox_callback_user_status(tox, OnUserStatusChanged, this);
+ tox_callback_read_receipt(tox, OnReadReceipt, this);
+ tox_callback_connection_status(tox, OnConnectionStatusChanged, this);
+ // file transfers
+ tox_callback_file_control(tox, OnFileRequest, this);
+ tox_callback_file_send_request(tox, OnFriendFile, this);
+ tox_callback_file_data(tox, OnFileData, this);
+ // avatars
+ tox_callback_avatar_info(tox, OnGotFriendAvatarInfo, this);
+ tox_callback_avatar_data(tox, OnGotFriendAvatarData, this);
+
+ std::vector<uint8_t> pubKey(TOX_FRIEND_ADDRESS_SIZE);
+ tox_get_address(tox, &pubKey[0]);
+ std::string address = DataToHexString(pubKey);
+ setString(NULL, TOX_SETTINGS_ID, address.c_str());
int size = tox_get_self_name_size(tox);
std::vector<uint8_t> username(size);
@@ -114,14 +102,16 @@ bool CToxProto::InitToxCore()
}
}
- return true;
+ return isProfileLoaded;
}
void CToxProto::UninitToxCore()
{
+ ptrA nickname(mir_utf8encodeW(ptrT(getTStringA("Nick"))));
+ tox_set_name(tox, (uint8_t*)(char*)nickname, (uint16_t)strlen(nickname));
+
SaveToxProfile();
tox_kill(tox);
- CloseHandle(hProfile);
}
void CToxProto::DoBootstrap()
@@ -150,7 +140,16 @@ void CToxProto::PollingThread(void*)
debugLogA("CToxProto::PollingThread: entering");
isConnected = false;
- DoBootstrap();
+ if (InitToxCore())
+ {
+ DoBootstrap();
+ }
+ else
+ {
+ isTerminated = true;
+ m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE;
+ ProtoBroadcastAck(NULL, ACKTYPE_LOGIN, ACKRESULT_FAILED, (HANDLE)NULL, LOGINERR_NOSERVER);
+ }
while (!isTerminated)
{
@@ -184,6 +183,7 @@ void CToxProto::PollingThread(void*)
}*/
}
+ UninitToxCore();
isConnected = false;
debugLogA("CToxProto::PollingThread: leaving");
diff --git a/protocols/Tox/src/tox_accounts.cpp b/protocols/Tox/src/tox_accounts.cpp
index 09eb5932c2..4c3af7bc18 100644
--- a/protocols/Tox/src/tox_accounts.cpp
+++ b/protocols/Tox/src/tox_accounts.cpp
@@ -9,7 +9,7 @@ int CToxProto::CompareAccounts(const CToxProto *p1, const CToxProto *p2)
CToxProto* CToxProto::InitAccount(const char* protoName, const wchar_t* userName)
{
- ptrA address(db_get_sa(NULL, protoName, TOX_SETTINGS_ID));
+ /*ptrA address(db_get_sa(NULL, protoName, TOX_SETTINGS_ID));
if (address == NULL)
{
DialogBoxParam(
@@ -18,19 +18,9 @@ CToxProto* CToxProto::InitAccount(const char* protoName, const wchar_t* userName
GetActiveWindow(),
CToxProto::ToxProfileImportProc,
(LPARAM)userName);
- }
+ }*/
CToxProto *proto = new CToxProto(protoName, userName);
- if (proto->InitToxCore())
- {
- accounts.insert(proto);
- }
- else
- {
- delete proto;
- proto = NULL;
- }
-
return proto;
}
diff --git a/protocols/Tox/src/tox_api.cpp b/protocols/Tox/src/tox_api.cpp
deleted file mode 100644
index d930f3f4a7..0000000000
--- a/protocols/Tox/src/tox_api.cpp
+++ /dev/null
@@ -1,561 +0,0 @@
-#include "common.h"
-
-/* GENERAL FUNCTIONS */
-
-Tox *tox_new(Tox_Options *options)
-{
- return CreateFunction<Tox*(*)(void*)>(__FUNCTION__)(options);
-}
-
-void tox_kill(Tox *tox)
-{
- CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-void tox_get_address(const Tox *tox, uint8_t *address)
-{
- CreateFunction<void(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, address);
-}
-
-int32_t tox_add_friend(Tox *tox,const uint8_t *address, const uint8_t *data, uint16_t length)
-{
- return CreateFunction<int32_t(*)(Tox*, const uint8_t*, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, address, data, length);
-}
-
-int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id)
-{
- return CreateFunction<int32_t(*)(Tox*, const uint8_t*)>(__FUNCTION__)(tox, client_id);
-}
-
-int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id)
-{
- return CreateFunction<int32_t(*)(const Tox*, const uint8_t*)>(__FUNCTION__)(tox, client_id);
-}
-
-int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id)
-{
- return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*)>(__FUNCTION__)(tox, friendnumber, client_id);
-}
-
-int tox_del_friend(Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_friend_exists(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length)
-{
- return CreateFunction<uint32_t(*)(Tox*, int32_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, message, length);
-}
-
-uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length)
-{
- return CreateFunction<uint32_t(*)(Tox*, int32_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, action, length);
-}
-
-int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length)
-{
- return CreateFunction<int(*)(Tox*, const uint8_t*, uint16_t)>(__FUNCTION__ )(tox, name, length);
-}
-
-uint16_t tox_get_self_name(const Tox *tox, uint8_t *name)
-{
- return CreateFunction<uint16_t(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, name);
-}
-
-int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name)
-{
- return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*)>(__FUNCTION__)(tox, friendnumber, name);
-}
-
-int tox_get_name_size(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_get_self_name_size(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length)
-{
- return CreateFunction<int(*)(Tox*, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, status, length);
-}
-
-int tox_set_user_status(Tox *tox, uint8_t userstatus)
-{
- return CreateFunction<int(*)(Tox*, uint8_t)>(__FUNCTION__)(tox, userstatus);
-}
-
-int tox_get_status_message_size(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_get_self_status_message_size(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen)
-{
- return CreateFunction<int(*)(const Tox*, int32_t, uint8_t*, uint32_t)>(__FUNCTION__)(tox, friendnumber, buf, maxlen);
-}
-
-int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen)
-{
- return CreateFunction<int(*)(const Tox*, uint8_t*, uint32_t)>(__FUNCTION__)(tox, buf, maxlen);
-}
-
-uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-uint8_t tox_get_self_user_status(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing)
-{
- return CreateFunction<int(*)(Tox*, int32_t, uint8_t)>(__FUNCTION__)(tox, friendnumber, is_typing);
-}
-
-uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-uint32_t tox_count_friendlist(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-uint32_t tox_get_num_online_friends(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size)
-{
- return CreateFunction<int(*)()>(__FUNCTION__ )();
-}
-
-void tox_callback_friend_request(Tox *tox, void(*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, const uint8_t*, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_friend_message(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_friend_action(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_name_change(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*tox, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_status_message(Tox *tox, void(*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_user_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_typing_change(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_read_receipt(Tox *tox, void(*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint32_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_connection_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-/* ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) */
-/*
-uint32_t tox_get_nospam(const Tox *tox)
-{
-}
-
-void tox_set_nospam(Tox *tox, uint32_t nospam)
-{
-}
-
-void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key)
-{
-}
-
-int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, int(*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object), void *object)
-{
-}
-
-int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length)
-{
-}
-
-int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, int(*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object), void *object)
-{
-}
-
-int tox_send_lossless_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length)
-{
-}
-*/
-/* GROUP CHAT FUNCTIONS: WARNING Group chats will be rewritten so this might change */
-/*
-void tox_callback_group_invite(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, const uint8_t *, uint16_t, void *), void *userdata)
-{
-}
-
-void tox_callback_group_message(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata)
-{
-}
-
-void tox_callback_group_action(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata)
-{
-}
-
-void tox_callback_group_title(Tox *tox, void(*function)(Tox *tox, int, int, const uint8_t *, uint8_t, void *), void *userdata)
-{
-}
-
-void tox_callback_group_namelist_change(Tox *tox, void(*function)(Tox *tox, int, int, uint8_t, void *), void *userdata)
-{
-}
-
-int tox_add_groupchat(Tox *tox)
-{
-}
-
-int tox_del_groupchat(Tox *tox, int groupnumber)
-{
-}
-
-int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name)
-{
-}
-
-int tox_group_peer_pubkey(const Tox *tox, int groupnumber, int peernumber, uint8_t *pk)
-{
-}
-
-int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber)
-{
-}
-
-int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length)
-{
-}
-
-int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint16_t length)
-{
-}
-
-int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint16_t length)
-{
-}
-
-int tox_group_set_title(Tox *tox, int groupnumber, const uint8_t *title, uint8_t length)
-{
-}
-
-int tox_group_get_title(Tox *tox, int groupnumber, uint8_t *title, uint32_t max_length)
-{
-}
-
-unsigned int tox_group_peernumber_is_ours(const Tox *tox, int groupnumber, int peernumber)
-{
-}
-
-int tox_group_number_peers(const Tox *tox, int groupnumber)
-{
-}
-
-int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], uint16_t length)
-{
-}
-
-uint32_t tox_count_chatlist(const Tox *tox)
-{
-}
-
-uint32_t tox_get_chatlist(const Tox *tox, int32_t *out_list, uint32_t list_size)
-{
-}
-
-int tox_group_get_type(const Tox *tox, int groupnumber)
-{
-}
-*/
-/* AVATAR FUNCTIONS */
-
-void tox_callback_avatar_info(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, uint8_t *, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t*, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-void tox_callback_avatar_data(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, uint8_t *, uint8_t *, uint32_t, void *), void *userdata)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t*, uint8_t*, uint32_t, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length)
-{
- return CreateFunction<int(*)(Tox*, uint8_t, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, format, data, length);
-}
-
-int tox_unset_avatar(Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-int tox_get_self_avatar(const Tox *tox, uint8_t *format, uint8_t *buf, uint32_t *length, uint32_t maxlen, uint8_t *hash)
-{
- return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*, uint32_t*, uint32_t, uint8_t*)>(__FUNCTION__)(tox, format, buf, length, maxlen, hash);
-}
-
-int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen)
-{
- return CreateFunction<int(*)(uint8_t*, const uint8_t*, const uint32_t)>(__FUNCTION__)(hash, data, datalen);
-}
-
-int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_send_avatar_info(Tox *tox, const int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, const int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-/* FILE SENDING FUNCTIONS */
-
-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)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint64_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, 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)
-{
- CreateFunction<int(*)(Tox*, void(*)(Tox*, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t*, uint16_t, void*), void*)>(__FUNCTION__)(tox, function, 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)
-{
- CreateFunction<int(*)(Tox*tox, void(*)(Tox*, int32_t, uint8_t, const uint8_t *, uint16_t length, void*), void*)>(__FUNCTION__)(tox, function, userdata);
-}
-
-int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, uint16_t filename_length)
-{
- return CreateFunction<int(*)(Tox*, int32_t, uint64_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, filesize, filename, filename_length);
-}
-
-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)
-{
- return CreateFunction<int(*)(Tox*, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, send_receive, filenumber, message_id, data, length);
-}
-
-int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length)
-{
- return CreateFunction<int(*)(Tox*, int32_t, uint8_t, const uint8_t*, uint16_t)>(__FUNCTION__)(tox, friendnumber, filenumber, data, length);
-}
-
-int tox_file_data_size(const Tox *tox, int32_t friendnumber)
-{
- return CreateFunction<int(*)(const Tox*, int32_t)>(__FUNCTION__)(tox, friendnumber);
-}
-
-uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive)
-{
- return CreateFunction<int(*)(const Tox*, int32_t, uint8_t, uint8_t)>(__FUNCTION__)(tox, friendnumber, filenumber, send_receive);
-}
-
-/* CONNECTION FUNCTIONS */
-
-int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key)
-{
- return CreateFunction<int(*)(Tox*, const char*, uint16_t, const uint8_t*)>(__FUNCTION__)(tox, address, port, public_key);
-}
-
-int tox_add_tcp_relay(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key)
-{
- return CreateFunction<int(*)(Tox*, const char*, uint16_t, const uint8_t*)>(__FUNCTION__)(tox, address, port,public_key);
-}
-
-int tox_isconnected(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-uint32_t tox_do_interval(Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-void tox_do(Tox *tox)
-{
- CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-/* SAVING AND LOADING FUNCTIONS */
-
-uint32_t tox_size(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-void tox_save(const Tox *tox, uint8_t *data)
-{
- CreateFunction<int(*)(const Tox*, uint8_t*)>(__FUNCTION__)(tox, data);
-}
-
-int tox_load(Tox *tox, const uint8_t *data, uint32_t length)
-{
- return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, length);
-}
-
-/* ENCRYPTION FUNCTIONS */
-
-int tox_pass_encryption_extra_length()
-{
- return CreateFunction<int(*)()>(__FUNCTION__)();
-}
-
-int tox_pass_key_length()
-{
- return CreateFunction<int(*)()>(__FUNCTION__)();
-}
-
-int tox_pass_salt_length()
-{
- return CreateFunction<int(*)()>(__FUNCTION__)();
-}
-
-uint32_t tox_encrypted_size(const Tox *tox)
-{
- return CreateFunction<int(*)(const Tox*)>(__FUNCTION__)(tox);
-}
-
-int tox_pass_encrypt(const uint8_t *data, uint32_t data_len, uint8_t *passphrase, uint32_t pplength, uint8_t *out)
-{
- return CreateFunction<int(*)(const uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(data, data_len, passphrase, pplength, out);
-}
-
-int tox_encrypted_save(const Tox *tox, uint8_t *data, uint8_t *passphrase, uint32_t pplength)
-{
- return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, passphrase, pplength);
-}
-
-int tox_pass_decrypt(const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength, uint8_t *out)
-{
- return CreateFunction<int(*)(const uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(data, length, passphrase, pplength, out);
-}
-
-int tox_encrypted_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength)
-{
- return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t, uint8_t*, uint32_t)>(__FUNCTION__)(tox, data, length, passphrase, pplength);
-}
-
-int tox_derive_key_from_pass(uint8_t *passphrase, uint32_t pplength, uint8_t *out_key)
-{
- return CreateFunction<int(*)(uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(passphrase, pplength, out_key);
-}
-
-int tox_derive_key_with_salt(uint8_t *passphrase, uint32_t pplength, uint8_t *salt, uint8_t *out_key)
-{
- return CreateFunction<int(*)(uint8_t*, uint32_t, uint8_t*, uint8_t*)>(__FUNCTION__)(passphrase, pplength, salt, out_key);
-}
-
-int tox_get_salt(uint8_t *data, uint8_t *salt)
-{
- return CreateFunction<int(*)(uint8_t*, uint8_t*)>(__FUNCTION__)(data, salt);
-}
-
-int tox_pass_key_encrypt(const uint8_t *data, uint32_t data_len, const uint8_t *key, uint8_t *out)
-{
- return CreateFunction<int(*)(const uint8_t*, uint32_t, const uint8_t*, uint8_t*)>(__FUNCTION__)(data, data_len, key, out);
-}
-
-int tox_encrypted_key_save(const Tox *tox, uint8_t *data, uint8_t *key)
-{
- return CreateFunction<int(*)(const Tox*, uint8_t*, uint8_t*)>(__FUNCTION__)(tox, data, key);
-}
-
-int tox_pass_key_decrypt(const uint8_t *data, uint32_t length, const uint8_t *key, uint8_t *out)
-{
- return CreateFunction<int(*)(const uint8_t*, uint32_t, const uint8_t*, uint8_t*)>(__FUNCTION__)(data, length, key, out);
-}
-
-int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *key)
-{
- return CreateFunction<int(*)(Tox*, const uint8_t*, uint32_t, uint8_t*)>(__FUNCTION__)(tox, data, length, key);
-}
-
-int tox_is_data_encrypted(const uint8_t *data)
-{
- return CreateFunction<int(*)(const uint8_t*)>(__FUNCTION__)(data);
-}
-
-int tox_is_save_encrypted(const uint8_t *data)
-{
- return CreateFunction<int(*)(const uint8_t*)>(__FUNCTION__)(data);
-}
-
-/* DNS TOXID RESOILVING FUNCTIONS */
-
-void *tox_dns3_new(uint8_t *server_public_key)
-{
- return CreateFunction<void*(*)(uint8_t*)>(__FUNCTION__)(server_public_key);
-}
-
-void tox_dns3_kill(void *dns3_object)
-{
- CreateFunction<void(*)(void*)>(__FUNCTION__)(dns3_object);
-}
-
-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)
-{
- return CreateFunction<int(*)(void*, uint8_t*, uint16_t, uint32_t*, uint8_t*, uint8_t)>(__FUNCTION__)(dns3_object, string, string_max_len, request_id, name, name_len);
-}
-
-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)
-{
- return CreateFunction<int(*)(void*, uint8_t*, uint8_t*, uint32_t, uint32_t)>(__FUNCTION__)(dns3_object, tox_id, id_record, id_record_len, request_id);
-} \ No newline at end of file
diff --git a/protocols/Tox/src/tox_avatars.cpp b/protocols/Tox/src/tox_avatars.cpp
index e4f6d4afbb..5c7c43664e 100644
--- a/protocols/Tox/src/tox_avatars.cpp
+++ b/protocols/Tox/src/tox_avatars.cpp
@@ -7,28 +7,41 @@ std::tstring CToxProto::GetAvatarFilePath(MCONTACT hContact)
DWORD dwAttributes = GetFileAttributes(path);
if (dwAttributes == 0xffffffff || (dwAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
+ {
CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)path);
+ }
ptrT id(getTStringA(hContact, TOX_SETTINGS_ID));
if (hContact != NULL)
+ {
mir_sntprintf(path, MAX_PATH, _T("%s\\%s.png"), path, id);
+ }
else if (id != NULL)
+ {
mir_sntprintf(path, MAX_PATH, _T("%s\\%s avatar.png"), path, id);
+ }
else
+ {
return _T("");
+ }
return path;
}
-bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
+void CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
{
+ if (!IsOnline())
+ {
+ return;
+ }
+
int length;
uint8_t *data;
FILE *hFile = _tfopen(path.c_str(), L"rb");
if (!hFile)
{
- debugLogA("CToxProto::SetMyAvatar: failed to open avatar file");
- return false;
+ debugLogA("CToxProto::SetToxAvatar: failed to open avatar file");
+ return;
}
fseek(hFile, 0, SEEK_END);
@@ -37,8 +50,8 @@ bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
if (length > TOX_AVATAR_MAX_DATA_LENGTH)
{
fclose(hFile);
- debugLogA("CToxProto::SetMyAvatar: new avatar size is excessive");
- return false;
+ debugLogA("CToxProto::SetToxAvatar: new avatar size is excessive");
+ return;
}
data = (uint8_t*)mir_alloc(length);
@@ -46,8 +59,8 @@ bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
if (readed != length)
{
fclose(hFile);
- debugLogA("CToxProto::SetMyAvatar: failed to read avatar file");
- return false;
+ debugLogA("CToxProto::SetToxAvatar: failed to read avatar file");
+ return;
}
fclose(hFile);
@@ -60,8 +73,8 @@ bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
{
db_free(&dbv);
mir_free(data);
- debugLogA("CToxProto::SetMyAvatar: new avatar is same with old");
- return false;
+ debugLogA("CToxProto::SetToxAvatar: new avatar is same with old");
+ return;
}
db_free(&dbv);
}
@@ -69,8 +82,8 @@ bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
if (tox_set_avatar(tox, TOX_AVATAR_FORMAT_PNG, data, length) == TOX_ERROR)
{
mir_free(data);
- debugLogA("CToxProto::SetMyAvatar: failed to set new avatar");
- return false;
+ debugLogA("CToxProto::SetToxAvatar: failed to set new avatar");
+ return;
}
mir_free(data);
@@ -78,8 +91,6 @@ bool CToxProto::SetToxAvatar(std::tstring path, bool checkHash)
{
db_set_blob(NULL, m_szModuleName, TOX_SETTINGS_AVATAR_HASH, (void*)hash, TOX_HASH_LENGTH);
}
-
- return true;
}
INT_PTR CToxProto::GetAvatarCaps(WPARAM wParam, LPARAM lParam)
diff --git a/protocols/Tox/src/tox_events.cpp b/protocols/Tox/src/tox_events.cpp
index 5987557851..789ac6039e 100644
--- a/protocols/Tox/src/tox_events.cpp
+++ b/protocols/Tox/src/tox_events.cpp
@@ -38,19 +38,11 @@ int CToxProto::OnSettingsChanged(WPARAM hContact, LPARAM lParam)
{
if (!strcmp(dbcws->szSetting, "Nick") && dbcws->value.pszVal)
{
- if (tox_set_name(tox, (uint8_t*)dbcws->value.pszVal, (uint16_t)strlen(dbcws->value.pszVal)))
+ if (tox && tox_set_name(tox, (uint8_t*)dbcws->value.pszVal, (uint16_t)strlen(dbcws->value.pszVal)))
{
- //SaveToxProfile();
+ SaveToxProfile();
}
}
-
- /*if (!strcmp(dbcws->szSetting, "StatusMsg") || !strcmp(dbcws->szSetting, "StatusNote"))
- {
- if (tox_set_status_message(tox, (uint8_t*)(char*)ptrA(mir_utf8encodeW(dbcws->value.ptszVal)), (uint16_t)_tcslen(dbcws->value.ptszVal)))
- {
- SaveToxData();
- }
- }*/
}
return 0;
diff --git a/protocols/Tox/src/tox_options.cpp b/protocols/Tox/src/tox_options.cpp
index 8b6331a8a7..02748633ea 100644
--- a/protocols/Tox/src/tox_options.cpp
+++ b/protocols/Tox/src/tox_options.cpp
@@ -30,6 +30,11 @@ INT_PTR CToxProto::MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
CheckDlgButton(hwnd, IDC_DISABLE_UDP, proto->getBool("DisableUDP", 0));
CheckDlgButton(hwnd, IDC_DISABLE_IPV6, proto->getBool("DisableIPv6", 0));
+
+ EnableWindow(GetDlgItem(hwnd, IDC_TOXID), proto->IsOnline());
+ EnableWindow(GetDlgItem(hwnd, IDC_CLIPBOARD), proto->IsOnline());
+ EnableWindow(GetDlgItem(hwnd, IDC_NAME), proto->IsOnline());
+ EnableWindow(GetDlgItem(hwnd, IDC_PASSWORD), proto->IsOnline());
}
return TRUE;
@@ -74,16 +79,6 @@ INT_PTR CToxProto::MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
case WM_NOTIFY:
if (reinterpret_cast<NMHDR*>(lParam)->code == PSN_APPLY)
{
- TCHAR nick[TOX_MAX_NAME_LENGTH], pass[MAX_PATH];
- GetDlgItemText(hwnd, IDC_NAME, nick, TOX_MAX_NAME_LENGTH);
- proto->setTString("Nick", nick);
-
- GetDlgItemText(hwnd, IDC_PASSWORD, pass, SIZEOF(pass));
- proto->setTString("Password", pass);
-
- proto->setByte("DisableUDP", (BYTE)IsDlgButtonChecked(hwnd, IDC_DISABLE_UDP));
- proto->setByte("DisableIPv6", (BYTE)IsDlgButtonChecked(hwnd, IDC_DISABLE_IPV6));
-
TCHAR group[64];
GetDlgItemText(hwnd, IDC_GROUP, group, SIZEOF(group));
if (_tcslen(group) > 0)
@@ -96,7 +91,20 @@ INT_PTR CToxProto::MainOptionsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
proto->delSetting(NULL, TOX_SETTINGS_GROUP);
}
- proto->SaveToxProfile();
+ proto->setByte("DisableUDP", (BYTE)IsDlgButtonChecked(hwnd, IDC_DISABLE_UDP));
+ proto->setByte("DisableIPv6", (BYTE)IsDlgButtonChecked(hwnd, IDC_DISABLE_IPV6));
+
+ if (proto->IsOnline())
+ {
+ TCHAR nick[TOX_MAX_NAME_LENGTH], pass[MAX_PATH];
+ GetDlgItemText(hwnd, IDC_NAME, nick, TOX_MAX_NAME_LENGTH);
+ proto->setTString("Nick", nick);
+
+ GetDlgItemText(hwnd, IDC_PASSWORD, pass, SIZEOF(pass));
+ proto->setTString("Password", pass);
+
+ proto->SaveToxProfile();
+ }
return TRUE;
}
diff --git a/protocols/Tox/src/tox_profile.cpp b/protocols/Tox/src/tox_profile.cpp
index 417042a9b6..136bc66ca1 100644
--- a/protocols/Tox/src/tox_profile.cpp
+++ b/protocols/Tox/src/tox_profile.cpp
@@ -17,23 +17,36 @@ std::tstring CToxProto::GetToxProfilePath(const TCHAR *accountName)
bool CToxProto::LoadToxProfile()
{
- DWORD size = GetFileSize(hProfile, NULL);
+ std::tstring profilePath = GetToxProfilePath();
+ FILE *profile = _tfopen(profilePath.c_str(), _T("rb"));
+ if (profile == NULL)
+ {
+ debugLogA("CToxProto::LoadToxData: could not open tox profile");
+ return true;
+ }
+
+ fseek(profile, 0L, SEEK_END);
+ DWORD size = ftell(profile);
+ rewind(profile);
if (size == 0)
{
+ fclose(profile);
debugLogA("CToxProto::LoadToxData: tox profile is empty");
- return false;
+ return true;
}
- DWORD read = 0;
uint8_t *data = (uint8_t*)mir_calloc(size);
- if (!ReadFile(hProfile, data, size, &read, NULL) || size != read)
+ DWORD read = fread((char*)data, sizeof(char), size, profile);
+ if (size != read)
{
+ fclose(profile);
debugLogA("CToxProto::LoadToxData: could not read tox profile");
mir_free(data);
return false;
}
+ fclose(profile);
- if (tox_is_data_encrypted(data))
+ /*if (tox_is_data_encrypted(data))
{
ptrA password(mir_utf8encodeW(ptrT(getTStringA("Password"))));
if (password == NULL || strlen(password) == 0)
@@ -58,7 +71,7 @@ bool CToxProto::LoadToxProfile()
return false;
}
}
- else
+ else*/
{
if (tox_load(tox, data, size) == TOX_ERROR)
{
@@ -69,13 +82,12 @@ bool CToxProto::LoadToxProfile()
}
mir_free(data);
-
return true;
}
void CToxProto::SaveToxProfile()
{
- ptrA password(mir_utf8encodeW(ptrT(getTStringA("Password"))));
+ /*ptrA password(mir_utf8encodeW(ptrT(getTStringA("Password"))));
bool needToEncrypt = password && strlen(password);
DWORD size = needToEncrypt
? tox_encrypted_size(tox)
@@ -94,16 +106,28 @@ void CToxProto::SaveToxProfile()
else
{
tox_save(tox, data);
+ }*/
+
+ DWORD size = tox_size(tox);
+ uint8_t *data = (uint8_t*)mir_calloc(size);
+ tox_save(tox, data);
+
+ std::tstring profilePath = GetToxProfilePath();
+ FILE *profile = _tfopen(profilePath.c_str(), _T("wb"));
+ if (profile == NULL)
+ {
+ debugLogA("CToxProto::LoadToxData: could not open tox profile");
+ return;
}
- SetFilePointer(hProfile, 0, NULL, FILE_BEGIN);
- SetEndOfFile(hProfile);
- DWORD written = 0;
- if (!WriteFile(hProfile, data, size, &written, NULL) || size != written)
+ DWORD written = fwrite(data, sizeof(char), size, profile);
+ if (size != written)
{
+ fclose(profile);
debugLogA("CToxProto::LoadToxData: could not write tox profile");
}
+ fclose(profile);
mir_free(data);
}
@@ -160,7 +184,7 @@ INT_PTR CToxProto::ToxProfileImportProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPA
SetDlgItemText(hwnd, IDC_PROFILE_PATH, profilePath);
}
}
- break;
+ break;
case IDOK:
{
@@ -172,13 +196,9 @@ INT_PTR CToxProto::ToxProfileImportProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPA
CopyFile(profilePath, defaultProfilePath.c_str(), FALSE);
}
}
- else
- {
- fclose(_wfopen(defaultProfilePath.c_str(), _T("w")));
- }
EndDialog(hwnd, 1);
}
- break;
+ break;
case IDCANCEL:
EndDialog(hwnd, 0);
diff --git a/protocols/Tox/src/tox_proto.cpp b/protocols/Tox/src/tox_proto.cpp
index de3ac3f0cb..f3785a3893 100644
--- a/protocols/Tox/src/tox_proto.cpp
+++ b/protocols/Tox/src/tox_proto.cpp
@@ -49,7 +49,7 @@ CToxProto::CToxProto(const char* protoName, const TCHAR* userName) :
CToxProto::~CToxProto()
{
mir_free(accountName);
- UninitToxCore();
+ //UninitToxCore();
UninitNetlib();
}
@@ -58,12 +58,12 @@ DWORD_PTR __cdecl CToxProto::GetCaps(int type, MCONTACT hContact)
switch (type)
{
case PFLAGNUM_1:
- return PF1_IM | PF1_FILE | PF1_AUTHREQ | PF1_EXTSEARCH;
+ return PF1_IM | PF1_FILE | PF1_AUTHREQ | PF1_EXTSEARCH | PF1_SERVERCLIST;
case PFLAGNUM_2:
return PF2_ONLINE | PF2_SHORTAWAY | PF2_LIGHTDND;
case PFLAGNUM_4:
- return PF4_IMSENDUTF | PF4_SINGLEFILEONLY | PF4_NOAUTHDENYREASON | PF4_FORCEAUTH
- | PF4_FORCEADDED | PF4_SUPPORTTYPING | PF4_AVATARS;
+ return PF4_IMSENDUTF | PF4_SINGLEFILEONLY | PF4_SUPPORTTYPING | PF4_AVATARS
+ | PF4_FORCEADDED | PF4_NOAUTHDENYREASON | PF4_FORCEAUTH;
case PFLAG_UNIQUEIDTEXT:
return (INT_PTR)"Tox ID";
case PFLAG_UNIQUEIDSETTING:
@@ -224,6 +224,7 @@ int __cdecl CToxProto::SetStatus(int iNewStatus)
if (old_status == ID_STATUS_OFFLINE && !IsOnline())
{
+ // login
m_iStatus = ID_STATUS_CONNECTING;
isTerminated = false;
diff --git a/protocols/Tox/src/tox_proto.h b/protocols/Tox/src/tox_proto.h
index c53a5d14c0..d7937fdfc1 100644
--- a/protocols/Tox/src/tox_proto.h
+++ b/protocols/Tox/src/tox_proto.h
@@ -126,7 +126,6 @@ private:
void __cdecl PollingThread(void*);
// tox profile
- HANDLE hProfile;
std::tstring GetToxProfilePath();
static std::tstring CToxProto::GetToxProfilePath(const TCHAR *accountName);
@@ -210,7 +209,7 @@ private:
// avatars
std::tstring GetAvatarFilePath(MCONTACT hContact = NULL);
- bool SetToxAvatar(std::tstring path, bool checkHash = false);
+ void SetToxAvatar(std::tstring path, bool checkHash = false);
INT_PTR __cdecl GetAvatarCaps(WPARAM wParam, LPARAM lParam);
INT_PTR __cdecl GetAvatarInfo(WPARAM, LPARAM lParam);
diff --git a/protocols/Tox/src/tox_utils.cpp b/protocols/Tox/src/tox_utils.cpp
index f45c8d937e..bc515000f9 100644
--- a/protocols/Tox/src/tox_utils.cpp
+++ b/protocols/Tox/src/tox_utils.cpp
@@ -121,4 +121,4 @@ bool CToxProto::IsFileExists(std::tstring path)
return true;
}
return false;
-}
+} \ No newline at end of file
diff --git a/protocols/Tox/tox/README.md b/protocols/Tox/tox/README.md
deleted file mode 100644
index 0879158997..0000000000
--- a/protocols/Tox/tox/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Prerequisites
--------------
-
-You will need PowerShell for preparing the `.def` file.
-
-### Tox-Core
-
-Download Tox DLL from [the CI server](https://jenkins.libtoxcore.so/job/toxcore_win32_dll/). Put that DLL into `dll` directory, copy the `include` files.
-
-Now you need to prepare the `.def` file for the DLL. You have to prepare the corresponding `.lib` file for the DLL. To do it, start PowerShell and enter a Visual Studio command environment. Then execute the following script:
-
- PS> 'EXPORTS' | Out-File .\libtox.def -Encoding ascii; dumpbin.exe /exports .\libtox.dll | % { ($_ -split '\s+')[4] } | Out-File .\libtox.def -Append -Encoding ascii
-
-It prepares the `def` file for the next step - the `lib` tool:
-
- PS> lib /def:libtox.def /out:libtox.lib /machine:x86
-
-You'll get the `libtox.lib` import library in the current directory. Copy it to `lib` project directory and you're ready!
diff --git a/protocols/Tox/tox/deflibcreator/as.exe b/protocols/Tox/tox/deflibcreator/as.exe
deleted file mode 100644
index e1b3143100..0000000000
--- a/protocols/Tox/tox/deflibcreator/as.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/as64.exe b/protocols/Tox/tox/deflibcreator/as64.exe
deleted file mode 100644
index 4f5095abf8..0000000000
--- a/protocols/Tox/tox/deflibcreator/as64.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/deflibcreator.exe b/protocols/Tox/tox/deflibcreator/deflibcreator.exe
deleted file mode 100644
index 5969f5d4c2..0000000000
--- a/protocols/Tox/tox/deflibcreator/deflibcreator.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/dlltool.exe b/protocols/Tox/tox/deflibcreator/dlltool.exe
deleted file mode 100644
index 7874bdd13e..0000000000
--- a/protocols/Tox/tox/deflibcreator/dlltool.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/dlltool64.exe b/protocols/Tox/tox/deflibcreator/dlltool64.exe
deleted file mode 100644
index 6a41e5228c..0000000000
--- a/protocols/Tox/tox/deflibcreator/dlltool64.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/link.exe b/protocols/Tox/tox/deflibcreator/link.exe
deleted file mode 100644
index 5215aecd5d..0000000000
--- a/protocols/Tox/tox/deflibcreator/link.exe
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/link.exe.manifest b/protocols/Tox/tox/deflibcreator/link.exe.manifest
deleted file mode 100644
index 2981431665..0000000000
--- a/protocols/Tox/tox/deflibcreator/link.exe.manifest
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel level='asInvoker' uiAccess='false' />
- </requestedPrivileges>
- </security>
- </trustInfo>
-<dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4940" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity></dependentAssembly></dependency>
-</assembly>
diff --git a/protocols/Tox/tox/deflibcreator/mspdb80.dll b/protocols/Tox/tox/deflibcreator/mspdb80.dll
deleted file mode 100644
index cbe888915c..0000000000
--- a/protocols/Tox/tox/deflibcreator/mspdb80.dll
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest b/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest
deleted file mode 100644
index 2981431665..0000000000
--- a/protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel level='asInvoker' uiAccess='false' />
- </requestedPrivileges>
- </security>
- </trustInfo>
-<dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4940" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity></dependentAssembly></dependency>
-</assembly>
diff --git a/protocols/Tox/tox/deflibcreator/src/build.cmd b/protocols/Tox/tox/deflibcreator/src/build.cmd
deleted file mode 100644
index abcf258d0a..0000000000
--- a/protocols/Tox/tox/deflibcreator/src/build.cmd
+++ /dev/null
@@ -1,5 +0,0 @@
-@echo off
-rc /d "_UNICODE" /d "UNICODE" /fo".\release\resource.res" resource.rc
-cl /EHsc /DUNICODE /D_UNICODE /Ox /Oi /Ot /DWIN32 /DNDEBUG /nologo /GL /TP /GS /Gz /MD deflibcreator.cpp /link /LTCG /release /manifest:no /Machine:x86 .\release\resource.res /out:.\release\deflibcreator.exe
-del deflibcreator.obj
-del .\release\resource.res \ No newline at end of file
diff --git a/protocols/Tox/tox/deflibcreator/src/deflib.manifest b/protocols/Tox/tox/deflibcreator/src/deflib.manifest
deleted file mode 100644
index 414433b643..0000000000
--- a/protocols/Tox/tox/deflibcreator/src/deflib.manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
- <dependency>
- <dependentAssembly>
- <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4940' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
- </dependentAssembly>
- </dependency>
-</assembly>
diff --git a/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp b/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp
deleted file mode 100644
index 6480fda7e3..0000000000
--- a/protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-#define WIN32_LEAN_AND_MEAN
-#define _WIN32_WINNT 0x0501
-#include <windows.h>
-#include <dbghelp.h>
-#include <shlwapi.h>
-#include <shellapi.h>
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-#include <cstring>
-#include <fstream>
-#include <sstream>
-#include <iostream>
-
-#pragma comment(lib, "dbghelp.lib")
-#pragma comment(lib, "shlwapi.lib")
-#pragma comment(lib, "shell32.lib")
-
-// ordinals to names
-typedef std::map<DWORD, std::vector<const char*> > ExportMap;
-
-void GetExports(PVOID pMapping, ExportMap& exports, WORD& imageType)
-{
- ULONG size = 0;
- PIMAGE_NT_HEADERS pHead = ImageNtHeader(pMapping);
- PIMAGE_EXPORT_DIRECTORY pDir = static_cast<PIMAGE_EXPORT_DIRECTORY>(ImageDirectoryEntryToData(pMapping, FALSE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size));
- if(pHead && pDir)
- {
- imageType = pHead->FileHeader.Machine;
- char* base = static_cast<char*>(pMapping);
- DWORD rvaExportDir = reinterpret_cast<char*>(pDir) - base;
- PIMAGE_SECTION_HEADER pSec = NULL;
- PDWORD namesAddr = static_cast<PDWORD>(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNames, &pSec));
- PWORD ordinalAddr = static_cast<PWORD>(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNameOrdinals, &pSec));
- DWORD numFuncs = pDir->NumberOfFunctions;
- DWORD numNames = pDir->NumberOfNames;
- DWORD baseOrd = pDir->Base;
-
- std::set<DWORD> 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<LPCSTR>(ImageRvaToVa(pHead, pMapping, namesAddr[i], &pSec));
- exports[thisBasedOrd].push_back(name);
- }
-
- for(std::set<DWORD>::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<size_t>(-1))
- {
- std::wstring str(reqd, 0);
- mbstowcs(&str[0], string, reqd);
- return str;
- }
- return std::wstring(string, string + strlen(string) + 1);
-}
-
-void DoAndWaitForExecution(SHELLEXECUTEINFO& sei)
-{
- if(!ShellExecuteEx(&sei))
- {
- std::wcerr << L"Couldn't execute \"" << sei.lpFile << L'\n';
- }
- else
- {
- WaitForSingleObject(sei.hProcess, INFINITE);
- CloseHandle(sei.hProcess);
- }
-}
-
-void CreateLibs(const std::wstring& defFile, const std::wstring& baseName, const std::wstring& outDir, WORD machineType)
-{
- std::wstring curDir(1000, 0);
- curDir.resize(GetModuleFileName(GetModuleHandle(NULL), &curDir[0], curDir.length()));
- curDir.resize(curDir.find_last_of(L"\\/") + 1);
- SHELLEXECUTEINFO sei = {sizeof(sei), 0};
- sei.fMask = SEE_MASK_NOCLOSEPROCESS;
- sei.hwnd = GetConsoleWindow();
- sei.lpVerb = L"open";
- sei.lpDirectory = outDir.c_str();
-
- // 32-bit libs
- if(machineType == IMAGE_FILE_MACHINE_I386)
- {
- std::wcout << L"Creating 32-bit libs...\n";
- // dlltool for mingw (x86)
- std::wcout << L"\tCreating lib" << baseName << L".a...\n";
- std::wostringstream pstream;
- pstream << L"-d \"" << defFile << L"\" -l lib" << baseName << L".a";
-
- std::wstring binary = curDir + L"dlltool.exe";
- std::wstring parameters = pstream.str();
-
- sei.lpFile = binary.c_str();
- sei.lpParameters = parameters.c_str();
-
- DoAndWaitForExecution(sei);
-
- pstream.str(L"");
-
- // link for msvc (x86)
- std::wcout << L"\tCreating " << baseName << L".lib...\n";
- pstream << L"/lib /nologo /machine:x86 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L".lib\"";
-
- binary = curDir + L"link.exe";
- parameters = pstream.str();
- sei.lpFile = binary.c_str();
- sei.lpParameters = parameters.c_str();
- DoAndWaitForExecution(sei);
- }
- else
- {
- std::wcout << L"Creating 64-bit libs...\n";
- // dlltool for mingw (x64) (my fail if running on 32-bit comp)
- std::wcout << L"\tlib" << baseName << L"-x64.a...\n";
-
- std::wstring binary = curDir + L"dlltool64.exe";
- std::wstring as64Pos = L"\"";
- as64Pos += (curDir + L"as64.exe\"");
- std::wostringstream pstream;
- pstream << L"-d \"" << defFile << L"\" -S " << as64Pos << L" -l lib" << baseName << L"-x64.a";
-
- std::wstring parameters = pstream.str();
- sei.lpFile = binary.c_str();
- sei.lpParameters = parameters.c_str();
- DoAndWaitForExecution(sei);
-
- pstream.str(L"");
-
- // link for msvc (x64)
- std::wcout << L'\t' << baseName << L"-x64.lib...\n";
- binary = curDir + L"link.exe";
- pstream << L"/lib /nologo /machine:x64 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L"-x64.lib\"";
- parameters = pstream.str();
- sei.lpFile = binary.c_str();
- sei.lpParameters = parameters.c_str();
- DoAndWaitForExecution(sei);
- }
-}
-
-BOOL CreateDef(LPCWSTR dllFile, const std::wstring& defFile, WORD& machineType)
-{
- std::wcout << L"Creating " << defFile << L"...\n";
- // this is FALSE on purpose. If it's true, some dll's (mainly bcrypt.dll from Vista)
- // fail to map as an image because of some funkyness with the certificate or
- // something (STATUS_INVALID_IMAGE_HASH fyi). So this is just easier
- PVOID pMapping = MapFileRO(dllFile, FALSE);
- if(pMapping)
- {
- ExportMap exports;
- GetExports(pMapping, exports, machineType);
- if(!exports.empty())
- {
- std::wofstream defFile(defFile.c_str());
- std::wostringstream expDetails;
- defFile << L"LIBRARY \"" << GetFileName(dllFile) << L"\"\n\nEXPORTS\n";
- for(ExportMap::const_iterator iter = exports.begin(), end = exports.end();
- iter != end;
- ++iter
- )
- {
- expDetails.str(L"");
- expDetails.clear();
- expDetails << L'\t';
- const ExportMap::mapped_type& names = iter->second;
- if(!names.empty())
- {
- const std::wstring& initialName = MakeWString(*(names.begin()));
- expDetails << initialName << L"\t@" << iter->first << L'\n';
- for(ExportMap::mapped_type::const_iterator namesIter = names.begin() + 1, namesEnd = names.end();
- namesIter != namesEnd;
- ++namesIter
- )
- {
- expDetails << '\t' << MakeWString(*namesIter) << L'=' << initialName << L'\n';
- }
- }
- // unnamed export
- else
- {
- expDetails << L"Ordinal" << iter->first << L" NONAME\t@" << iter->first << L'\n';
- }
- defFile << expDetails.str();
- }
- }
- else
- {
- std::wcerr << dllFile << L" has no exports, nothing to do\n";
- return FALSE;
- }
- UnmapViewOfFile(pMapping);
- }
- return TRUE;
-}
-
-int __cdecl wmain(int argc, wchar_t** argv)
-{
- std::wcout << L"DefLibCreator v1.0 - Airesoft.co.uk\n\n";
- if(argc < 2)
- {
- puts("Usage: DefLibCreator dll [outDir]");
- return 1;
- }
- else
- {
- std::wstring baseFileName = PathFindFileName(argv[1]);
- baseFileName.erase(baseFileName.find_last_of('.'));
- int outDirArg = (argc >= 3) ? 2 : 1;
- LPWSTR pFilePart = NULL;
- std::wstring outDir(GetFullPathName(argv[outDirArg], 0, NULL, NULL), 0);
- outDir.resize(GetFullPathName(argv[outDirArg], outDir.length(), &outDir[0], &pFilePart));
- // if the explicit output dir wasn't specified, we need to chop the dll filename off the end of outDir
- if(outDirArg == 1)
- {
- outDir.resize(pFilePart - outDir.c_str());
- }
- else
- {
- CreateDirectory(outDir.c_str(), NULL);
- }
- outDir.push_back(L'\\'); // ensure it ends with a slash
- std::wstring defFile(outDir);
- defFile += (baseFileName + L".def");
- WORD machineType = 0;
- if(CreateDef(argv[1], defFile, machineType))
- {
- CreateLibs(defFile, baseFileName, outDir, machineType);
- }
- }
- return 0;
-}
diff --git a/protocols/Tox/tox/deflibcreator/src/dlc.ico b/protocols/Tox/tox/deflibcreator/src/dlc.ico
deleted file mode 100644
index aa524c729c..0000000000
--- a/protocols/Tox/tox/deflibcreator/src/dlc.ico
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/deflibcreator/src/resource.rc b/protocols/Tox/tox/deflibcreator/src/resource.rc
deleted file mode 100644
index 503ec99a76..0000000000
--- a/protocols/Tox/tox/deflibcreator/src/resource.rc
+++ /dev/null
@@ -1,94 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "winresrc.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.K.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""winresrc.h""\r\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
-END
-
-#endif // APSTUDIO_INVOKED
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-1 ICON "dlc.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,0
- PRODUCTVERSION 1,0,0,0
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x40004L
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "080904b0"
- BEGIN
- VALUE "CompanyName", "Airesoft"
- VALUE "FileDescription", "DefLibCreator"
- VALUE "FileVersion", "1, 0, 0, 0"
- VALUE "InternalName", "DefLibCreator.exe"
- VALUE "LegalCopyright", "Copyright (C) Airesoft 2012"
- VALUE "OriginalFilename", "DefLibCreator.exe"
- VALUE "ProductName", "DefLibCreator"
- VALUE "ProductVersion", "1, 0, 0, 0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x809, 1200
- END
-END
-
-#endif // English (U.K.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/// Manifest
-CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST deflib.manifest \ No newline at end of file
diff --git a/protocols/Tox/tox/dll/x64/libtox.dll b/protocols/Tox/tox/dll/x64/libtox.dll
deleted file mode 100644
index 618d8fb7dc..0000000000
--- a/protocols/Tox/tox/dll/x64/libtox.dll
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/dll/x86/libtox.dll b/protocols/Tox/tox/dll/x86/libtox.dll
deleted file mode 100644
index 6c19c9718d..0000000000
--- a/protocols/Tox/tox/dll/x86/libtox.dll
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/generate_libs.cmd b/protocols/Tox/tox/generate_libs.cmd
deleted file mode 100644
index ed34b3afbc..0000000000
--- a/protocols/Tox/tox/generate_libs.cmd
+++ /dev/null
@@ -1,4 +0,0 @@
-rmdir /S /Q lib\x86
-deflibcreator\deflibcreator dll\x86\libtox.dll lib\x86\
-rmdir /S /Q lib\x64
-deflibcreator\deflibcreator dll\x64\libtox.dll lib\x64\
diff --git a/protocols/Tox/tox/include/toxav.h b/protocols/Tox/tox/include/toxav.h
deleted file mode 100644
index 34c8be5d25..0000000000
--- a/protocols/Tox/tox/include/toxav.h
+++ /dev/null
@@ -1,389 +0,0 @@
-/** toxav.h
- *
- * Copyright (C) 2013 Tox project All Rights Reserved.
- *
- * This file is part of Tox.
- *
- * Tox is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Tox is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Tox. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#ifndef __TOXAV
-#define __TOXAV
-#include <inttypes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* vpx_image_t */
-#include <vpx/vpx_image.h>
-
-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 receiving 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 receiving video data
- *
- * @param av Handler.
- * @param callback The callback
- * @return void
- */
-void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *, void *),
- void *user_data);
-
-/**
- * @brief Call user. Use its friend_id.
- *
- * @param av Handler.
- * @param user The user.
- * @param call_type Call type.
- * @param ringing_seconds Ringing timeout.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_call(ToxAv *av, int32_t *call_index, int user, const ToxAvCSettings *csettings, int ringing_seconds);
-
-/**
- * @brief Hangup active call.
- *
- * @param av Handler.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_hangup(ToxAv *av, int32_t call_index);
-
-/**
- * @brief Answer incomming call.
- *
- * @param av Handler.
- * @param call_type Answer with...
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_answer(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings );
-
-/**
- * @brief Reject incomming call.
- *
- * @param av Handler.
- * @param reason Optional reason. Set NULL if none.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_reject(ToxAv *av, int32_t call_index, const char *reason);
-
-/**
- * @brief Cancel outgoing request.
- *
- * @param av Handler.
- * @param reason Optional reason.
- * @param peer_id peer friend_id
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_cancel(ToxAv *av, int32_t call_index, int peer_id, const char *reason);
-
-/**
- * @brief Notify peer that we are changing call settings
- *
- * @param av Handler.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_change_settings(ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings);
-
-/**
- * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer.
- *
- * @param av Handler.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_stop_call(ToxAv *av, int32_t call_index);
-
-/**
- * @brief Must be call before any RTP transmission occurs.
- *
- * @param av Handler.
- * @param support_video Is video supported ? 1 : 0
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_prepare_transmission(ToxAv *av, int32_t call_index, uint32_t jbuf_size, uint32_t VAD_treshold,
- int support_video);
-
-/**
- * @brief Call this at the end of the transmission.
- *
- * @param av Handler.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_kill_transmission(ToxAv *av, int32_t call_index);
-
-/**
- * @brief Encode and send video packet.
- *
- * @param av Handler.
- * @param frame The encoded frame.
- * @param frame_size The size of the encoded frame.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int frame_size);
-
-/**
- * @brief Send audio frame.
- *
- * @param av Handler.
- * @param data The audio data encoded with toxav_prepare_audio_frame().
- * @param size Its size in number of bytes.
- * @return int
- * @retval 0 Success.
- * @retval ToxAvError On error.
- */
-int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, unsigned int size);
-
-/**
- * @brief Encode video frame
- *
- * @param av Handler
- * @param dest Where to
- * @param dest_max Max size
- * @param input What to encode
- * @return int
- * @retval ToxAvError On error.
- * @retval >0 On success
- */
-int toxav_prepare_video_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, vpx_image_t *input );
-
-/**
- * @brief Encode audio frame
- *
- * @param av Handler
- * @param dest dest
- * @param dest_max Max dest size
- * @param frame The frame
- * @param frame_size The frame size
- * @return int
- * @retval ToxAvError On error.
- * @retval >0 On success
- */
-int toxav_prepare_audio_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, const int16_t *frame,
- int frame_size);
-
-/**
- * @brief Get peer transmission type. It can either be audio or video.
- *
- * @param av Handler.
- * @param peer The peer
- * @return int
- * @retval ToxAvCallType On success.
- * @retval ToxAvError On error.
- */
-int toxav_get_peer_csettings ( ToxAv *av, int32_t call_index, int peer, ToxAvCSettings *dest );
-
-/**
- * @brief Get id of peer participating in conversation
- *
- * @param av Handler
- * @param peer peer index
- * @return int
- * @retval ToxAvError No peer id
- */
-int toxav_get_peer_id ( ToxAv *av, int32_t call_index, int peer );
-
-/**
- * @brief Get current call state
- *
- * @param av Handler
- * @param call_index What call
- * @return int
- * @retval ToxAvCallState State id
- */
-ToxAvCallState toxav_get_call_state ( ToxAv *av, int32_t call_index );
-/**
- * @brief Is certain capability supported
- *
- * @param av Handler
- * @return int
- * @retval 1 Yes.
- * @retval 0 No.
- */
-int toxav_capability_supported ( ToxAv *av, int32_t call_index, ToxAvCapabilities capability );
-
-
-Tox *toxav_get_tox(ToxAv *av);
-
-int toxav_has_activity ( ToxAv *av, int32_t call_index, int16_t *PCM, uint16_t frame_size, float ref_energy );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TOXAV */
diff --git a/protocols/Tox/tox/include/toxencryptsave.h b/protocols/Tox/tox/include/toxencryptsave.h
deleted file mode 100644
index 75094a2beb..0000000000
--- a/protocols/Tox/tox/include/toxencryptsave.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* toxencryptsave.h
- *
- * The Tox encrypted save functions.
- *
- * 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 <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef TOXENCRYPTSAVE_H
-#define TOXENCRYPTSAVE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-#ifndef __TOX_DEFINED__
-#define __TOX_DEFINED__
-typedef struct Tox Tox;
-#endif
-
-
-/* This "module" provides functions analogous to tox_load and tox_save in toxcore
- * Clients should consider alerting their users that, unlike plain data, if even one bit
- * becomes corrupted, the data will be entirely unrecoverable.
- * Ditto if they forget their password, there is no way to recover the data.
- */
-
-/* return size of the messenger data (for encrypted saving). */
-uint32_t tox_encrypted_size(const Tox *tox);
-
-/* Save the messenger data encrypted with the given password.
- * data must be at least tox_encrypted_size().
- *
- * returns 0 on success
- * returns -1 on failure
- */
-int tox_encrypted_save(const Tox *tox, uint8_t *data, uint8_t *passphrase, uint32_t pplength);
-
-/* Load the messenger from encrypted data of size length.
- *
- * returns 0 on success
- * returns -1 on failure
- */
-int tox_encrypted_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *passphrase, uint32_t pplength);
-
-/* Determines whether or not the given data is encrypted (by checking the magic number)
- *
- * returns 1 if it is encrypted
- * returns 0 otherwise
- */
-int tox_is_data_encrypted(const uint8_t *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/protocols/Tox/tox/lib/x64/libtox-x64.exp b/protocols/Tox/tox/lib/x64/libtox-x64.exp
deleted file mode 100644
index 3897bcd17a..0000000000
--- a/protocols/Tox/tox/lib/x64/libtox-x64.exp
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/lib/x64/libtox-x64.lib b/protocols/Tox/tox/lib/x64/libtox-x64.lib
deleted file mode 100644
index 9e76c0b33d..0000000000
--- a/protocols/Tox/tox/lib/x64/libtox-x64.lib
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/lib/x64/libtox.def b/protocols/Tox/tox/lib/x64/libtox.def
deleted file mode 100644
index f82ed9c729..0000000000
--- a/protocols/Tox/tox/lib/x64/libtox.def
+++ /dev/null
@@ -1,1617 +0,0 @@
-LIBRARY "libtox"
-
-EXPORTS
- Assoc_add_entry @1
- Assoc_get_close_entries @2
- Assoc_self_client_id_changed @3
- DHT_addfriend @4
- DHT_bootstrap @5
- DHT_bootstrap_from_address @6
- DHT_connect_after_load @7
- DHT_delfriend @8
- DHT_get_shared_key_recv @9
- DHT_get_shared_key_sent @10
- DHT_getfriendip @11
- DHT_getnodes @12
- DHT_isconnected @13
- DHT_load @14
- DHT_non_lan_connected @15
- DHT_save @16
- DHT_size @17
- LAN_ip @18
- LANdiscovery_init @19
- PBKDF2_SHA256 @20
- VP8_UVSSE @21
- __pth_gpointer_locked @22
- __pthread_clock_nanosleep @23
- __pthread_shallcancel @24
- __xl_f @25
- _celt_autocorr @26
- _celt_lpc @27
- _pthread_cleanup_dest @28
- _pthread_get_state @29
- _pthread_invoke_cancel @30
- _pthread_key_dest @31
- _pthread_rel_time_in_ms @32
- _pthread_set_state @33
- _pthread_setnobreak @34
- _pthread_time_in_ms @35
- _pthread_time_in_ms_from_timespec @36
- _pthread_tryjoin @37
- _sodium_alloc_init @38
- accept_crypto_connection @39
- add_ext_header @40
- add_groupchat @41
- add_header @42
- add_tcp_relay @43
- add_tcp_relay_peer @44
- add_to_ping @45
- addr_parse_ip @46
- addr_resolve @47
- addr_resolve_or_parse_ip @48
- addto_lists @49
- alg_quant @50
- alg_unquant @51
- alloc_region @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
- callback_file_control @66
- callback_file_data @67
- callback_file_sendrequest @68
- callback_friendrequest @69
- celt_decode_with_ec @70
- celt_decoder_get_size @71
- celt_decoder_init @72
- celt_encode_with_ec @73
- celt_encoder_get_size @74
- celt_encoder_init @75
- celt_fir @76
- celt_iir @77
- celt_lcg_rand @78
- celt_pitch_xcorr_c @79
- celt_preemphasis @80
- check_control_input @81
- check_fragments_for_errors @82
- check_late_message @83
- closelist_nodes @84
- clt_mdct_backward @85
- clt_mdct_forward @86
- codec_init_session @87
- codec_terminate_session @88
- comb_filter @89
- compute_allocation @90
- compute_band_energies @91
- compute_frame_size @92
- compute_stereo_width @93
- cond_print @94
- cond_print_set @95
- connection_data_handler @96
- connection_lossy_data_handler @97
- connection_status_handler @98
- copy_connected_tcp_relays @99
- copy_friendlist @100
- count_friendlist @101
- create_announce_request @102
- create_data_request @103
- create_onion_packet @104
- create_onion_packet_tcp @105
- create_onion_path @106
- create_queue @107
- create_request @108
- crypto_auth_hmacsha256 @109
- crypto_auth_hmacsha256_final @110
- crypto_auth_hmacsha256_init @111
- crypto_auth_hmacsha256_update @112
- crypto_box @113
- crypto_box_afternm @114
- crypto_box_beforenm @115
- crypto_box_beforenmbytes @116
- crypto_box_boxzerobytes @117
- crypto_box_curve25519xsalsa20poly1305 @118
- crypto_box_curve25519xsalsa20poly1305_afternm @119
- crypto_box_curve25519xsalsa20poly1305_beforenm @120
- crypto_box_curve25519xsalsa20poly1305_keypair @121
- crypto_box_curve25519xsalsa20poly1305_open @122
- crypto_box_curve25519xsalsa20poly1305_open_afternm @123
- crypto_box_curve25519xsalsa20poly1305_seed_keypair @124
- crypto_box_keypair @125
- crypto_box_macbytes @126
- crypto_box_noncebytes @127
- crypto_box_open @128
- crypto_box_open_afternm @129
- crypto_box_primitive @130
- crypto_box_publickeybytes @131
- crypto_box_secretkeybytes @132
- crypto_box_seed_keypair @133
- crypto_box_seedbytes @134
- crypto_box_zerobytes @135
- crypto_cmp @136
- crypto_connection_status @137
- crypto_core_hsalsa20 @138
- crypto_core_salsa20 @139
- crypto_hash_sha256 @140
- crypto_hash_sha256_final @141
- crypto_hash_sha256_init @142
- crypto_hash_sha256_update @143
- crypto_hash_sha512 @144
- crypto_hash_sha512_final @145
- crypto_hash_sha512_init @146
- crypto_hash_sha512_update @147
- crypto_kill @148
- crypto_num_free_sendqueue_slots @149
- crypto_onetimeauth_pick_best_implementation @150
- crypto_onetimeauth_poly1305 @151
- crypto_onetimeauth_poly1305_donna @152
- crypto_onetimeauth_poly1305_donna_final @153
- crypto_onetimeauth_poly1305_donna_implementation @154
- crypto_onetimeauth_poly1305_donna_implementation_name @155
- crypto_onetimeauth_poly1305_donna_init @156
- crypto_onetimeauth_poly1305_donna_update @157
- crypto_onetimeauth_poly1305_donna_verify @158
- crypto_onetimeauth_poly1305_final @159
- crypto_onetimeauth_poly1305_implementation_name @160
- crypto_onetimeauth_poly1305_init @161
- crypto_onetimeauth_poly1305_set_implementation @162
- crypto_onetimeauth_poly1305_update @163
- crypto_onetimeauth_poly1305_verify @164
- crypto_pwhash_scryptsalsa208sha256 @165
- crypto_pwhash_scryptsalsa208sha256_ll @166
- crypto_pwhash_scryptsalsa208sha256_memlimit_interactive @167
- crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive @168
- crypto_pwhash_scryptsalsa208sha256_opslimit_interactive @169
- crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive @170
- crypto_pwhash_scryptsalsa208sha256_saltbytes @171
- crypto_pwhash_scryptsalsa208sha256_str @172
- crypto_pwhash_scryptsalsa208sha256_str_verify @173
- crypto_pwhash_scryptsalsa208sha256_strbytes @174
- crypto_pwhash_scryptsalsa208sha256_strprefix @175
- crypto_run_interval @176
- crypto_scalarmult_curve25519 @177
- crypto_scalarmult_curve25519_base @178
- crypto_secretbox_xsalsa20poly1305 @179
- crypto_secretbox_xsalsa20poly1305_open @180
- crypto_stream_salsa20 @181
- crypto_stream_salsa20_keybytes @182
- crypto_stream_salsa20_noncebytes @183
- crypto_stream_salsa20_xor @184
- crypto_stream_salsa20_xor_ic @185
- crypto_stream_xsalsa20 @186
- crypto_stream_xsalsa20_xor @187
- crypto_verify_16 @188
- crypto_verify_32 @189
- cryptopacket_registerhandler @190
- cryptpacket_received @191
- current_time_monotonic @192
- custom_lossless_packet_registerhandler @193
- custom_lossy_packet_registerhandler @194
- decode_pulses @195
- decrypt_data @196
- decrypt_data_symmetric @197
- del_groupchat @198
- denormalise_bands @199
- dequeue @200
- do_Assoc @201
- do_DHT @202
- do_TCP_connection @203
- do_TCP_server @204
- do_friend_connections @205
- do_friends @206
- do_groupchats @207
- do_hardening @208
- do_messenger @209
- do_net_crypto @210
- do_onion_client @211
- do_sema_b_wait_intern @212
- do_to_ping @213
- downmix_float @214
- downmix_int @215
- eMeans @216
- ec_dec_bit_logp @217
- ec_dec_bits @218
- ec_dec_icdf @219
- ec_dec_init @220
- ec_dec_uint @221
- ec_dec_update @222
- ec_decode @223
- ec_decode_bin @224
- ec_enc_bit_logp @225
- ec_enc_bits @226
- ec_enc_done @227
- ec_enc_icdf @228
- ec_enc_init @229
- ec_enc_patch_initial_bits @230
- ec_enc_shrink @231
- ec_enc_uint @232
- ec_encode @233
- ec_encode_bin @234
- ec_laplace_decode @235
- ec_laplace_encode @236
- ec_tell_frac @237
- encode_pulses @238
- encode_size @239
- encrypt_data @240
- encrypt_data_symmetric @241
- encrypt_precompute @242
- energy_VAD @243
- escrypt_free_local @244
- escrypt_gensalt_r @245
- escrypt_init_local @246
- escrypt_kdf_nosse @247
- escrypt_kdf_sse @248
- escrypt_r @249
- extract_ext_header @250
- extract_header @251
- file_control @252
- file_data @253
- file_dataremaining @254
- file_sendrequest @255
- format_output @256
- frame_size_select @257
- free_region @258
- friend_con_connected @259
- friend_connection_callbacks @260
- friend_connection_crypt_connection_id @261
- friend_connection_lock @262
- friend_ips @263
- friendreq_init @264
- g_callback_group_invite @265
- g_callback_group_message @266
- g_callback_group_namelistchange @267
- get_close_nodes @268
- get_connection_dht_key @269
- get_friendcon_public_keys @270
- get_nospam @271
- get_num_online_friends @272
- get_shared_key @273
- getaddress @274
- getclient_id @275
- getfriend_conn_id_pk @276
- getfriend_id @277
- getfriendcon_id @278
- getname @279
- getself_name @280
- group_message_send @281
- group_names @282
- group_new_peer_send @283
- group_number_peers @284
- group_peername @285
- group_ping_send @286
- haar1 @287
- handle_request @288
- host_to_net @289
- hysteresis_decision @290
- id_closest @291
- id_copy @292
- id_equal @293
- increment_nonce @294
- increment_nonce_number @295
- init_audio_decoder @296
- init_audio_encoder @297
- init_caps @298
- init_video_decoder @299
- init_video_encoder @300
- invite_friend @301
- invoke_callback @302
- ip_copy @303
- ip_equal @304
- ip_init @305
- ip_isset @306
- ip_ntoa @307
- ip_pack @308
- ip_reset @309
- ip_unpack @310
- ipport_copy @311
- ipport_equal @312
- ipport_isset @313
- ipport_pack @314
- ipport_unpack @315
- is_timeout @316
- isqrt32 @317
- join_groupchat @318
- kill_Assoc @319
- kill_DHT @320
- kill_TCP_connection @321
- kill_TCP_server @322
- kill_friend_connection @323
- kill_friend_connections @324
- kill_groupchats @325
- kill_messenger @326
- kill_net_crypto @327
- kill_networking @328
- kill_onion @329
- kill_onion_announce @330
- kill_onion_client @331
- kill_ping @332
- kill_sock @333
- load_keys @334
- load_state @335
- m_addfriend @336
- m_addfriend_norequest @337
- m_avatar_hash @338
- m_callback_action @339
- m_callback_avatar_data @340
- m_callback_avatar_info @341
- m_callback_connectionstatus @342
- m_callback_connectionstatus_internal_av @343
- m_callback_friendmessage @344
- m_callback_friendrequest @345
- m_callback_group_invite @346
- m_callback_msi_packet @347
- m_callback_namechange @348
- m_callback_read_receipt @349
- m_callback_statusmessage @350
- m_callback_typingchange @351
- m_callback_userstatus @352
- m_copy_self_statusmessage @353
- m_copy_statusmessage @354
- m_delfriend @355
- m_friend_exists @356
- m_get_friend_connectionstatus @357
- m_get_istyping @358
- m_get_last_online @359
- m_get_name_size @360
- m_get_self_avatar @361
- m_get_self_name_size @362
- m_get_self_statusmessage_size @363
- m_get_self_userstatus @364
- m_get_statusmessage_size @365
- m_get_userstatus @366
- m_hash @367
- m_msi_packet @368
- m_request_avatar_data @369
- m_request_avatar_info @370
- m_send_avatar_info @371
- m_sendaction @372
- m_sendaction_withid @373
- m_sendmessage @374
- m_sendmessage_withid @375
- m_set_avatar @376
- m_set_sends_receipts @377
- m_set_statusmessage @378
- m_set_userstatus @379
- m_set_usertyping @380
- m_unset_avatar @381
- messenger_load @382
- messenger_run_interval @383
- messenger_save @384
- messenger_size @385
- mlp_process @386
- msg_parse @387
- msi_answer @388
- msi_cancel @389
- msi_change_csettings @390
- msi_hangup @391
- msi_init_session @392
- msi_invite @393
- msi_msg_get_csettings @394
- msi_msg_set_callid @395
- msi_msg_set_csettings @396
- msi_msg_set_reason @397
- msi_new_message @398
- msi_register_callback @399
- msi_reject @400
- msi_stopcall @401
- msi_terminate_session @402
- mutex_print @403
- mutex_print_set @404
- nc_dht_pk_callback @405
- net @406
- networking_at_startup @407
- networking_poll @408
- networking_registerhandler @409
- new_Assoc @410
- new_Assoc_default @411
- new_DHT @412
- new_TCP_connection @413
- new_TCP_server @414
- new_connection_handler @415
- new_crypto_connection @416
- new_filesender @417
- new_friend_connection @418
- new_friend_connections @419
- new_groupchats @420
- new_keys @421
- new_messenger @422
- new_net_crypto @423
- new_networking @424
- new_nonce @425
- new_onion @426
- new_onion_announce @427
- new_onion_client @428
- new_ping @429
- new_symmetric_key @430
- normalise_bands @431
- onion_add_path_node @432
- onion_addfriend @433
- onion_backup_nodes @434
- onion_delfriend @435
- onion_dht_pk_callback @436
- onion_friend_num @437
- onion_getfriend_DHT_pubkey @438
- onion_getfriendip @439
- onion_isconnected @440
- onion_response_handler @441
- onion_send_1 @442
- onion_set_friend_DHT_pubkey @443
- onion_set_friend_online @444
- oniondata_registerhandler @445
- oob_data_handler @446
- optimize_framesize @447
- opus_custom_decoder_ctl @448
- opus_custom_encoder_ctl @449
- opus_custom_mode_create @450
- opus_decode @451
- opus_decode_float @452
- opus_decode_native @453
- opus_decoder_create @454
- opus_decoder_ctl @455
- opus_decoder_destroy @456
- opus_decoder_get_nb_samples @457
- opus_decoder_get_size @458
- opus_decoder_init @459
- opus_encode @460
- opus_encode_float @461
- opus_encode_native @462
- opus_encoder_create @463
- opus_encoder_ctl @464
- opus_encoder_destroy @465
- opus_encoder_get_size @466
- opus_encoder_init @467
- opus_fft @468
- opus_get_version_string @469
- opus_ifft @470
- opus_multistream_packet_pad @471
- opus_multistream_packet_unpad @472
- opus_packet_get_bandwidth @473
- opus_packet_get_nb_channels @474
- opus_packet_get_nb_frames @475
- opus_packet_get_nb_samples @476
- opus_packet_get_samples_per_frame @477
- opus_packet_pad @478
- opus_packet_parse @479
- opus_packet_parse_impl @480
- opus_packet_unpad @481
- opus_pcm_soft_clip @482
- opus_repacketizer_cat @483
- opus_repacketizer_create @484
- opus_repacketizer_destroy @485
- opus_repacketizer_get_nb_frames @486
- opus_repacketizer_get_size @487
- opus_repacketizer_init @488
- opus_repacketizer_out @489
- opus_repacketizer_out_range @490
- opus_repacketizer_out_range_impl @491
- opus_strerror @492
- pack_nodes @493
- parse_recv @494
- parse_send @495
- patch_transient_decision @496
- ping_array_add @497
- ping_array_check @498
- ping_array_free_all @499
- ping_array_init @500
- pitch_downsample @501
- pitch_search @502
- pthread_attr_destroy @503
- pthread_attr_getdetachstate @504
- pthread_attr_getinheritsched @505
- pthread_attr_getscope @506
- pthread_attr_getstackaddr @507
- pthread_attr_getstacksize @508
- pthread_attr_init @509
- pthread_attr_setdetachstate @510
- pthread_attr_setinheritsched @511
- pthread_attr_setscope @512
- pthread_attr_setstackaddr @513
- pthread_attr_setstacksize @514
- pthread_cancel @515
- pthread_cond_broadcast @516
- pthread_cond_destroy @517
- pthread_cond_init @518
- pthread_cond_signal @519
- pthread_cond_timedwait @520
- pthread_cond_timedwait_relative_np @521
- pthread_cond_wait @522
- pthread_condattr_destroy @523
- pthread_condattr_getclock @524
- pthread_condattr_getpshared @525
- pthread_condattr_init @526
- pthread_condattr_setclock @527
- pthread_condattr_setpshared @528
- pthread_create @529
- pthread_create_wrapper @530
- pthread_delay_np @531
- pthread_delay_np_ms @532
- pthread_detach @533
- pthread_equal @534
- pthread_exit @535
- pthread_get_concurrency @536
- pthread_getclean @537
- pthread_getconcurrency @538
- pthread_getevent @539
- pthread_gethandle @540
- pthread_getspecific @541
- pthread_join @542
- pthread_key_create @543
- pthread_key_delete @544
- pthread_kill @545
- pthread_mutex_destroy @546
- pthread_mutex_init @547
- pthread_mutex_lock @548
- pthread_mutex_timedlock @549
- pthread_mutex_trylock @550
- pthread_mutex_unlock @551
- pthread_mutexattr_destroy @552
- pthread_mutexattr_getprioceiling @553
- pthread_mutexattr_getprotocol @554
- pthread_mutexattr_getpshared @555
- pthread_mutexattr_gettype @556
- pthread_mutexattr_init @557
- pthread_mutexattr_setprioceiling @558
- pthread_mutexattr_setprotocol @559
- pthread_mutexattr_setpshared @560
- pthread_mutexattr_settype @561
- pthread_num_processors_np @562
- pthread_once @563
- pthread_rwlock_destroy @564
- pthread_rwlock_init @565
- pthread_rwlock_rdlock @566
- pthread_rwlock_timedrdlock @567
- pthread_rwlock_timedwrlock @568
- pthread_rwlock_tryrdlock @569
- pthread_rwlock_trywrlock @570
- pthread_rwlock_unlock @571
- pthread_rwlock_wrlock @572
- pthread_rwlockattr_destroy @573
- pthread_rwlockattr_getpshared @574
- pthread_rwlockattr_init @575
- pthread_rwlockattr_setpshared @576
- pthread_self @577
- pthread_set_concurrency @578
- pthread_set_num_processors_np @579
- pthread_setcancelstate @580
- pthread_setcanceltype @581
- pthread_setconcurrency @582
- pthread_setspecific @583
- pthread_spin_destroy @584
- pthread_spin_init @585
- pthread_spin_lock @586
- pthread_spin_trylock @587
- pthread_spin_unlock @588
- pthread_testcancel @589
- pthread_timechange_handler_np @590
- pthread_tls_init @591
- public_key_valid @592
- quant_all_bands @593
- quant_coarse_energy @594
- quant_energy_finalise @595
- quant_fine_energy @596
- queue @597
- random_64b @598
- random_int @599
- random_node @600
- random_nodes_path @601
- random_nonce @602
- randombytes @603
- randombytes_buf @604
- randombytes_close @605
- randombytes_implementation_name @606
- randombytes_random @607
- randombytes_set_implementation @608
- randombytes_stir @609
- randombytes_sysrandom @610
- randombytes_sysrandom_buf @611
- randombytes_sysrandom_close @612
- randombytes_sysrandom_implementation @613
- randombytes_sysrandom_implementation_name @614
- randombytes_sysrandom_stir @615
- randombytes_sysrandom_uniform @616
- randombytes_uniform @617
- read_TCP_length @618
- read_TCP_packet @619
- read_packet_TCP_secure_connection @620
- realloc_friendlist @621
- reconfigure_video_encoder_bitrate @622
- reconfigure_video_encoder_resolution @623
- recv_tcp_relay_handler @624
- remove_doubling @625
- remove_request_received @626
- renormalise_vector @627
- resampling_factor @628
- route_packet @629
- route_tofriend @630
- routing_data_handler @631
- routing_response_handler @632
- routing_status_handler @633
- rtp_free_msg @634
- rtp_handle_packet @635
- rtp_init_session @636
- rtp_new_message @637
- rtp_send_msg @638
- rtp_terminate_session @639
- run_analysis @640
- rwl_print @641
- rwl_print_set @642
- save_keys @643
- send_LANdiscovery @644
- send_announce_request @645
- send_custom_lossless_packet @646
- send_custom_lossy_packet @647
- send_data @648
- send_data_request @649
- send_disconnect_request @650
- send_friend_request_packet @651
- send_group_invite_packet @652
- send_lossy_cryptpacket @653
- send_name_all_groups @654
- send_onion_data @655
- send_onion_packet @656
- send_onion_request @657
- send_onion_response @658
- send_oob_packet @659
- send_ping_request @660
- send_reponse @661
- send_routing_request @662
- send_tcp_onion_request @663
- sendpacket @664
- set_callback_handle_recv_1 @665
- set_connection_dht_public_key @666
- set_dht_temp_pk @667
- set_direct_ip_port @668
- set_filter_function @669
- set_friend_request_callback @670
- set_nospam @671
- set_socket_dualstack @672
- set_socket_nonblock @673
- set_socket_nosigpipe @674
- set_tcp_connection_number @675
- setfriendname @676
- setname @677
- silk_A2NLSF @678
- silk_A2NLSF_FLP @679
- silk_CB_lags_stage2 @680
- silk_CB_lags_stage2_10_ms @681
- silk_CB_lags_stage3 @682
- silk_CB_lags_stage3_10_ms @683
- silk_CNG @684
- silk_CNG_Reset @685
- silk_Decode @686
- silk_Encode @687
- silk_Get_Decoder_Size @688
- silk_Get_Encoder_Size @689
- silk_HP_variable_cutoff @690
- silk_InitDecoder @691
- silk_InitEncoder @692
- silk_LBRR_flags_iCDF_ptr @693
- silk_LPC_analysis_filter @694
- silk_LPC_analysis_filter_FLP @695
- silk_LPC_inverse_pred_gain @696
- silk_LPC_inverse_pred_gain_FLP @697
- silk_LP_variable_cutoff @698
- silk_LSFCosTab_FIX_Q12 @699
- silk_LTPScales_table_Q14 @700
- silk_LTP_analysis_filter_FLP @701
- silk_LTP_gain_BITS_Q5_ptrs @702
- silk_LTP_gain_iCDF_ptrs @703
- silk_LTP_gain_middle_avg_RD_Q14 @704
- silk_LTP_per_index_iCDF @705
- silk_LTP_scale_ctrl_FLP @706
- silk_LTP_vq_gain_ptrs_Q7 @707
- silk_LTP_vq_ptrs_Q7 @708
- silk_LTP_vq_sizes @709
- silk_LTPscale_iCDF @710
- silk_Lag_range_stage3 @711
- silk_Lag_range_stage3_10_ms @712
- silk_NLSF2A @713
- silk_NLSF2A_FLP @714
- silk_NLSF_CB_NB_MB @715
- silk_NLSF_CB_WB @716
- silk_NLSF_EXT_iCDF @717
- silk_NLSF_VQ @718
- silk_NLSF_VQ_weights_laroia @719
- silk_NLSF_decode @720
- silk_NLSF_del_dec_quant @721
- silk_NLSF_encode @722
- silk_NLSF_interpolation_factor_iCDF @723
- silk_NLSF_stabilize @724
- silk_NLSF_unpack @725
- silk_NSQ @726
- silk_NSQ_del_dec @727
- silk_NSQ_wrapper_FLP @728
- silk_PLC @729
- silk_PLC_Reset @730
- silk_PLC_glue_frames @731
- silk_Quantization_Offsets_Q10 @732
- silk_Resampler_1_2_COEFS @733
- silk_Resampler_1_3_COEFS @734
- silk_Resampler_1_4_COEFS @735
- silk_Resampler_1_6_COEFS @736
- silk_Resampler_2_3_COEFS @737
- silk_Resampler_2_3_COEFS_LQ @738
- silk_Resampler_3_4_COEFS @739
- silk_SNR_table_Q1 @740
- silk_TargetRate_table_MB @741
- silk_TargetRate_table_NB @742
- silk_TargetRate_table_WB @743
- silk_Transition_LP_A_Q28 @744
- silk_Transition_LP_B_Q28 @745
- silk_VAD_GetSA_Q8 @746
- silk_VAD_Init @747
- silk_VQ_WMat_EC @748
- silk_ana_filt_bank_1 @749
- silk_apply_sine_window_FLP @750
- silk_autocorrelation_FLP @751
- silk_biquad_alt @752
- silk_burg_modified_FLP @753
- silk_bwexpander @754
- silk_bwexpander_32 @755
- silk_bwexpander_FLP @756
- silk_control_SNR @757
- silk_control_audio_bandwidth @758
- silk_control_encoder @759
- silk_corrMatrix_FLP @760
- silk_corrVector_FLP @761
- silk_decode_core @762
- silk_decode_frame @763
- silk_decode_indices @764
- silk_decode_parameters @765
- silk_decode_pitch @766
- silk_decode_pulses @767
- silk_decode_signs @768
- silk_decoder_set_fs @769
- silk_delta_gain_iCDF @770
- silk_encode_do_VAD_FLP @771
- silk_encode_frame_FLP @772
- silk_encode_indices @773
- silk_encode_pulses @774
- silk_encode_signs @775
- silk_energy_FLP @776
- silk_find_LPC_FLP @777
- silk_find_LTP_FLP @778
- silk_find_pitch_lags_FLP @779
- silk_find_pred_coefs_FLP @780
- silk_gain_iCDF @781
- silk_gains_ID @782
- silk_gains_dequant @783
- silk_gains_quant @784
- silk_init_decoder @785
- silk_init_encoder @786
- silk_inner_prod_aligned_scale @787
- silk_inner_product_FLP @788
- silk_insertion_sort_decreasing_FLP @789
- silk_insertion_sort_increasing @790
- silk_insertion_sort_increasing_all_values_int16 @791
- silk_interpolate @792
- silk_k2a_FLP @793
- silk_levinsondurbin_FLP @794
- silk_lin2log @795
- silk_log2lin @796
- silk_lsb_iCDF @797
- silk_max_pulses_table @798
- silk_nb_cbk_searchs_stage3 @799
- silk_noise_shape_analysis_FLP @800
- silk_pitch_analysis_core_FLP @801
- silk_pitch_contour_10_ms_NB_iCDF @802
- silk_pitch_contour_10_ms_iCDF @803
- silk_pitch_contour_NB_iCDF @804
- silk_pitch_contour_iCDF @805
- silk_pitch_delta_iCDF @806
- silk_pitch_lag_iCDF @807
- silk_prefilter_FLP @808
- silk_process_NLSFs @809
- silk_process_NLSFs_FLP @810
- silk_process_gains_FLP @811
- silk_pulses_per_block_BITS_Q5 @812
- silk_pulses_per_block_iCDF @813
- silk_quant_LTP_gains @814
- silk_quant_LTP_gains_FLP @815
- silk_rate_levels_BITS_Q5 @816
- silk_rate_levels_iCDF @817
- silk_regularize_correlations_FLP @818
- silk_resampler @819
- silk_resampler_down2 @820
- silk_resampler_down2_3 @821
- silk_resampler_frac_FIR_12 @822
- silk_resampler_init @823
- silk_resampler_private_AR2 @824
- silk_resampler_private_IIR_FIR @825
- silk_resampler_private_down_FIR @826
- silk_resampler_private_up2_HQ @827
- silk_resampler_private_up2_HQ_wrapper @828
- silk_residual_energy_FLP @829
- silk_residual_energy_covar_FLP @830
- silk_scale_copy_vector_FLP @831
- silk_scale_vector_FLP @832
- silk_schur_FLP @833
- silk_shell_code_table0 @834
- silk_shell_code_table1 @835
- silk_shell_code_table2 @836
- silk_shell_code_table3 @837
- silk_shell_code_table_offsets @838
- silk_shell_decoder @839
- silk_shell_encoder @840
- silk_sigm_Q15 @841
- silk_sign_iCDF @842
- silk_solve_LDL_FLP @843
- silk_stereo_LR_to_MS @844
- silk_stereo_MS_to_LR @845
- silk_stereo_decode_mid_only @846
- silk_stereo_decode_pred @847
- silk_stereo_encode_mid_only @848
- silk_stereo_encode_pred @849
- silk_stereo_find_predictor @850
- silk_stereo_only_code_mid_iCDF @851
- silk_stereo_pred_joint_iCDF @852
- silk_stereo_pred_quant_Q13 @853
- silk_stereo_quant_pred @854
- silk_sum_sqr_shift @855
- silk_type_offset_VAD_iCDF @856
- silk_type_offset_no_VAD_iCDF @857
- silk_uniform3_iCDF @858
- silk_uniform4_iCDF @859
- silk_uniform5_iCDF @860
- silk_uniform6_iCDF @861
- silk_uniform8_iCDF @862
- silk_warped_autocorrelation_FLP @863
- sock_valid @864
- sodium_allocarray @865
- sodium_bin2hex @866
- sodium_free @867
- sodium_hex2bin @868
- sodium_init @869
- sodium_malloc @870
- sodium_memcmp @871
- sodium_memzero @872
- sodium_mlock @873
- sodium_mprotect_noaccess @874
- sodium_mprotect_readonly @875
- sodium_mprotect_readwrite @876
- sodium_munlock @877
- sodium_runtime_get_cpu_features @878
- sodium_runtime_has_neon @879
- sodium_runtime_has_sse2 @880
- sodium_runtime_has_sse3 @881
- spreading_decision @882
- stereo_itheta @883
- tcp_onion_response_handler @884
- terminate_queue @885
- tf_select_table @886
- thread_print @887
- thread_print_set @888
- to_host_family @889
- to_net_family @890
- tonality_analysis @891
- tonality_get_info @892
- tox_add_friend @893
- tox_add_friend_norequest @894
- tox_add_groupchat @895
- tox_add_tcp_relay @896
- tox_bootstrap_from_address @897
- tox_callback_avatar_data @898
- tox_callback_avatar_info @899
- tox_callback_connection_status @900
- tox_callback_file_control @901
- tox_callback_file_data @902
- tox_callback_file_send_request @903
- tox_callback_friend_action @904
- tox_callback_friend_message @905
- tox_callback_friend_request @906
- tox_callback_group_action @907
- tox_callback_group_invite @908
- tox_callback_group_message @909
- tox_callback_group_namelist_change @910
- tox_callback_name_change @911
- tox_callback_read_receipt @912
- tox_callback_status_message @913
- tox_callback_typing_change @914
- tox_callback_user_status @915
- tox_count_chatlist @916
- tox_count_friendlist @917
- tox_decrypt_dns3_TXT @918
- tox_del_friend @919
- tox_del_groupchat @920
- tox_dns3_kill @921
- tox_dns3_new @922
- tox_do @923
- tox_do_interval @924
- tox_encrypted_load @925
- tox_encrypted_save @926
- tox_encrypted_size @927
- tox_file_data_remaining @928
- tox_file_data_size @929
- tox_file_send_control @930
- tox_file_send_data @931
- tox_friend_exists @932
- tox_generate_dns3_string @933
- tox_get_address @934
- tox_get_chatlist @935
- tox_get_client_id @936
- tox_get_friend_connection_status @937
- tox_get_friend_number @938
- tox_get_friendlist @939
- tox_get_is_typing @940
- tox_get_keys @941
- tox_get_last_online @942
- tox_get_name @943
- tox_get_name_size @944
- tox_get_nospam @945
- tox_get_num_online_friends @946
- tox_get_self_avatar @947
- tox_get_self_name @948
- tox_get_self_name_size @949
- tox_get_self_status_message @950
- tox_get_self_status_message_size @951
- tox_get_self_user_status @952
- tox_get_status_message @953
- tox_get_status_message_size @954
- tox_get_user_status @955
- tox_group_action_send @956
- tox_group_get_names @957
- tox_group_message_send @958
- tox_group_number_peers @959
- tox_group_peername @960
- tox_hash @961
- tox_invite_friend @962
- tox_is_data_encrypted @963
- tox_isconnected @964
- tox_join_groupchat @965
- tox_kill @966
- tox_load @967
- tox_lossless_packet_registerhandler @968
- tox_lossy_packet_registerhandler @969
- tox_new @970
- tox_new_file_sender @971
- tox_request_avatar_data @972
- tox_request_avatar_info @973
- tox_save @974
- tox_send_action @975
- tox_send_avatar_info @976
- tox_send_lossless_packet @977
- tox_send_lossy_packet @978
- tox_send_message @979
- tox_set_avatar @980
- tox_set_name @981
- tox_set_nospam @982
- tox_set_status_message @983
- tox_set_user_is_typing @984
- tox_set_user_status @985
- tox_size @986
- tox_unset_avatar @987
- toxav_answer @988
- toxav_call @989
- toxav_cancel @990
- toxav_capability_supported @991
- toxav_change_settings @992
- toxav_get_call_state @993
- toxav_get_peer_csettings @994
- toxav_get_peer_id @995
- toxav_get_tox @996
- toxav_handle_packet @997
- toxav_hangup @998
- toxav_has_activity @999
- toxav_kill @1000
- toxav_kill_transmission @1001
- toxav_new @1002
- toxav_prepare_audio_frame @1003
- toxav_prepare_transmission @1004
- toxav_prepare_video_frame @1005
- toxav_register_audio_recv_callback @1006
- toxav_register_callstate_callback @1007
- toxav_register_video_recv_callback @1008
- toxav_reject @1009
- toxav_send_audio @1010
- toxav_send_video @1011
- toxav_stop_call @1012
- unix_time @1013
- unix_time_update @1014
- unpack_nodes @1015
- unquant_coarse_energy @1016
- unquant_energy_finalise @1017
- unquant_fine_energy @1018
- vp8_ac2quant @1019
- vp8_ac_uv_quant @1020
- vp8_ac_yquant @1021
- vp8_activity_masking @1022
- vp8_adjust_key_frame_context @1023
- vp8_alloc_compressor_data @1024
- vp8_alloc_frame_buffers @1025
- vp8_auto_select_speed @1026
- vp8_bilinear_filters_x86_4 @1027
- vp8_bilinear_filters_x86_8 @1028
- vp8_bilinear_predict16x16 @1029
- vp8_bilinear_predict16x16_mmx @1030
- vp8_bilinear_predict16x16_sse2 @1031
- vp8_bilinear_predict16x16_ssse3 @1032
- vp8_bilinear_predict4x4_mmx @1033
- vp8_bilinear_predict8x4_mmx @1034
- vp8_bilinear_predict8x8 @1035
- vp8_bilinear_predict8x8_mmx @1036
- vp8_bilinear_predict8x8_sse2 @1037
- vp8_bilinear_predict8x8_ssse3 @1038
- vp8_bits_per_mb @1039
- vp8_blend_b_c @1040
- vp8_blend_mb_inner_c @1041
- vp8_blend_mb_outer_c @1042
- vp8_block2above @1043
- vp8_block2left @1044
- vp8_block_error_c @1045
- vp8_block_error_mmx @1046
- vp8_block_error_xmm @1047
- vp8_bmode_encodings @1048
- vp8_bmode_prob @1049
- vp8_bmode_tree @1050
- vp8_build_block_doffsets @1051
- vp8_build_block_offsets @1052
- vp8_build_component_cost_table @1053
- vp8_build_inter16x16_predictors_mb @1054
- vp8_build_inter16x16_predictors_mbuv @1055
- vp8_build_inter16x16_predictors_mby @1056
- vp8_build_inter4x4_predictors_mbuv @1057
- vp8_build_inter_predictors_b @1058
- vp8_build_inter_predictors_mb @1059
- vp8_build_intra_predictors_mbuv_s @1060
- vp8_build_intra_predictors_mbuv_s_sse2 @1061
- vp8_build_intra_predictors_mbuv_s_ssse3 @1062
- vp8_build_intra_predictors_mby_s @1063
- vp8_build_intra_predictors_mby_s_sse2 @1064
- vp8_build_intra_predictors_mby_s_ssse3 @1065
- vp8_cal_sad @1066
- vp8_calc_ref_frame_costs @1067
- vp8_calc_ss_err @1068
- vp8_change_config @1069
- vp8_clear_system_state_c @1070
- vp8_coef_bands @1071
- vp8_coef_encodings @1072
- vp8_coef_tree @1073
- vp8_coef_update_probs @1074
- vp8_compute_frame_size_bounds @1075
- vp8_convert_rfct_to_prob @1076
- vp8_copy32xn @1077
- vp8_copy32xn_c @1078
- vp8_copy32xn_sse2 @1079
- vp8_copy32xn_sse3 @1080
- vp8_copy_and_extend_frame @1081
- vp8_copy_and_extend_frame_with_rect @1082
- vp8_copy_mem16x16_c @1083
- vp8_copy_mem16x16_mmx @1084
- vp8_copy_mem16x16_sse2 @1085
- vp8_copy_mem8x4_c @1086
- vp8_copy_mem8x4_mmx @1087
- vp8_copy_mem8x8_c @1088
- vp8_copy_mem8x8_mmx @1089
- vp8_cost_mv_ref @1090
- vp8_cost_tokens @1091
- vp8_cost_tokens2 @1092
- vp8_create_common @1093
- vp8_create_compressor @1094
- vp8_create_decoder_instances @1095
- vp8_ctf_maps @1096
- vp8_dc2quant @1097
- vp8_dc_only_idct_add_c @1098
- vp8_dc_only_idct_add_mmx @1099
- vp8_dc_quant @1100
- vp8_dc_uv_quant @1101
- vp8_dct_value_cost_ptr @1102
- vp8_dct_value_tokens_ptr @1103
- vp8_de_alloc_frame_buffers @1104
- vp8_deblock @1105
- vp8_decode_frame @1106
- vp8_decode_mb_tokens @1107
- vp8_decode_mode_mvs @1108
- vp8_decoder_create_threads @1109
- vp8_decoder_remove_threads @1110
- vp8_default_bmode_probs @1111
- vp8_default_coef_probs @1112
- vp8_default_inv_zig_zag @1113
- vp8_default_mv_context @1114
- vp8_default_zig_zag1d @1115
- vp8_default_zig_zag_mask @1116
- vp8_denoiser_allocate @1117
- vp8_denoiser_denoise_mb @1118
- vp8_denoiser_filter_c @1119
- vp8_denoiser_filter_sse2 @1120
- vp8_denoiser_free @1121
- vp8_dequant_idct_add_mmx @1122
- vp8_dequant_idct_add_uv_block_mmx @1123
- vp8_dequant_idct_add_uv_block_sse2 @1124
- vp8_dequant_idct_add_y_block_mmx @1125
- vp8_dequant_idct_add_y_block_sse2 @1126
- vp8_dequantize_b_impl_mmx @1127
- vp8_dequantize_b_mmx @1128
- vp8_diamond_search_sad @1129
- vp8_diamond_search_sad_c @1130
- vp8_diamond_search_sadx4 @1131
- vp8_encode_frame @1132
- vp8_encode_inter16x16 @1133
- vp8_encode_inter16x16y @1134
- vp8_encode_intra @1135
- vp8_encode_intra16x16mbuv @1136
- vp8_encode_intra16x16mby @1137
- vp8_encode_intra4x4block @1138
- vp8_encode_intra4x4mby @1139
- vp8_encode_motion_vector @1140
- vp8_encode_value @1141
- vp8_end_first_pass @1142
- vp8_end_second_pass @1143
- vp8_estimate_entropy_savings @1144
- vp8_extend_mb_row @1145
- vp8_extra_bits @1146
- vp8_fast_quantize_b @1147
- vp8_fast_quantize_b_c @1148
- vp8_fast_quantize_b_pair_c @1149
- vp8_fast_quantize_b_sse2 @1150
- vp8_fast_quantize_b_ssse3 @1151
- vp8_filter_block1d16_h6_only_sse2 @1152
- vp8_filter_block1d16_h6_sse2 @1153
- vp8_filter_block1d16_h6_ssse3 @1154
- vp8_filter_block1d16_v6_sse2 @1155
- vp8_filter_block1d16_v6_ssse3 @1156
- vp8_filter_block1d4_h6_ssse3 @1157
- vp8_filter_block1d4_v6_ssse3 @1158
- vp8_filter_block1d8_h6_only_sse2 @1159
- vp8_filter_block1d8_h6_sse2 @1160
- vp8_filter_block1d8_h6_ssse3 @1161
- vp8_filter_block1d8_v6_only_sse2 @1162
- vp8_filter_block1d8_v6_sse2 @1163
- vp8_filter_block1d8_v6_ssse3 @1164
- vp8_filter_block1d_h6_mmx @1165
- vp8_filter_block1dc_v6_mmx @1166
- vp8_filter_block2d_bil4x4_var_mmx @1167
- vp8_filter_block2d_bil_var_mmx @1168
- vp8_filter_block2d_bil_var_sse2 @1169
- vp8_filter_block2d_bil_var_ssse3 @1170
- vp8_filter_by_weight16x16_c @1171
- vp8_filter_by_weight16x16_sse2 @1172
- vp8_filter_by_weight4x4_c @1173
- vp8_filter_by_weight8x8_c @1174
- vp8_filter_by_weight8x8_sse2 @1175
- vp8_find_best_half_pixel_step @1176
- vp8_find_best_sub_pixel_step @1177
- vp8_find_best_sub_pixel_step_iteratively @1178
- vp8_find_near_mvs @1179
- vp8_find_near_mvs_bias @1180
- vp8_first_pass @1181
- vp8_fix_contexts @1182
- vp8_full_search_sad @1183
- vp8_full_search_sad_c @1184
- vp8_full_search_sadx3 @1185
- vp8_full_search_sadx8 @1186
- vp8_gaussian @1187
- vp8_get16x16var_sse2 @1188
- vp8_get4x4sse_cs_c @1189
- vp8_get4x4sse_cs_mmx @1190
- vp8_get4x4var_mmx @1191
- vp8_get8x8var_mmx @1192
- vp8_get8x8var_sse2 @1193
- vp8_get_compressed_data @1194
- vp8_get_inter_mbpred_error @1195
- vp8_get_mb_ss_mmx @1196
- vp8_get_mb_ss_sse2 @1197
- vp8_get_preview_raw_frame @1198
- vp8_get_quantizer @1199
- vp8_get_reference @1200
- vp8_gf_boost_qadjustment @1201
- vp8_half_horiz_variance16x_h_sse2 @1202
- vp8_half_horiz_variance8x_h_sse2 @1203
- vp8_half_horiz_vert_variance16x_h_sse2 @1204
- vp8_half_horiz_vert_variance8x_h_sse2 @1205
- vp8_half_vert_variance16x_h_sse2 @1206
- vp8_half_vert_variance8x_h_sse2 @1207
- vp8_hex_search @1208
- vp8_horizontal_line_2_1_scale_c @1209
- vp8_horizontal_line_5_3_scale_c @1210
- vp8_horizontal_line_5_4_scale_c @1211
- vp8_idct_dequant_0_2x_sse2 @1212
- vp8_idct_dequant_dc_0_2x_sse2 @1213
- vp8_idct_dequant_dc_full_2x_sse2 @1214
- vp8_idct_dequant_full_2x_sse2 @1215
- vp8_init3smotion_compensation @1216
- vp8_init_dsmotion_compensation @1217
- vp8_init_first_pass @1218
- vp8_init_mbmode_probs @1219
- vp8_init_mode_costs @1220
- vp8_init_second_pass @1221
- vp8_initialize_rd_consts @1222
- vp8_intra4x4_predict_c @1223
- vp8_intra_pred_uv_dc128_mmx @1224
- vp8_intra_pred_uv_dc_mmx2 @1225
- vp8_intra_pred_uv_dcleft_mmx2 @1226
- vp8_intra_pred_uv_dctop_mmx2 @1227
- vp8_intra_pred_uv_ho_mmx2 @1228
- vp8_intra_pred_uv_ho_ssse3 @1229
- vp8_intra_pred_uv_tm_sse2 @1230
- vp8_intra_pred_uv_tm_ssse3 @1231
- vp8_intra_pred_uv_ve_mmx @1232
- vp8_intra_pred_y_dc128_sse2 @1233
- vp8_intra_pred_y_dc_sse2 @1234
- vp8_intra_pred_y_dcleft_sse2 @1235
- vp8_intra_pred_y_dctop_sse2 @1236
- vp8_intra_pred_y_ho_sse2 @1237
- vp8_intra_pred_y_tm_sse2 @1238
- vp8_intra_pred_y_tm_ssse3 @1239
- vp8_intra_pred_y_ve_sse2 @1240
- vp8_kf_bmode_prob @1241
- vp8_kf_uv_mode_prob @1242
- vp8_kf_ymode_encodings @1243
- vp8_kf_ymode_prob @1244
- vp8_kf_ymode_tree @1245
- vp8_lookahead_depth @1246
- vp8_lookahead_destroy @1247
- vp8_lookahead_init @1248
- vp8_lookahead_peek @1249
- vp8_lookahead_pop @1250
- vp8_lookahead_push @1251
- vp8_loop_filter_bh_mmx @1252
- vp8_loop_filter_bh_sse2 @1253
- vp8_loop_filter_bh_y_sse2 @1254
- vp8_loop_filter_bhs_mmx @1255
- vp8_loop_filter_bhs_sse2 @1256
- vp8_loop_filter_bv_mmx @1257
- vp8_loop_filter_bv_sse2 @1258
- vp8_loop_filter_bv_y_sse2 @1259
- vp8_loop_filter_bvs_mmx @1260
- vp8_loop_filter_bvs_sse2 @1261
- vp8_loop_filter_frame @1262
- vp8_loop_filter_frame_init @1263
- vp8_loop_filter_frame_yonly @1264
- vp8_loop_filter_horizontal_edge_mmx @1265
- vp8_loop_filter_horizontal_edge_uv_sse2 @1266
- vp8_loop_filter_init @1267
- vp8_loop_filter_mbh_mmx @1268
- vp8_loop_filter_mbh_sse2 @1269
- vp8_loop_filter_mbv_mmx @1270
- vp8_loop_filter_mbv_sse2 @1271
- vp8_loop_filter_partial_frame @1272
- vp8_loop_filter_row_normal @1273
- vp8_loop_filter_row_simple @1274
- vp8_loop_filter_simple_horizontal_edge_mmx @1275
- vp8_loop_filter_simple_horizontal_edge_sse2 @1276
- vp8_loop_filter_simple_vertical_edge_mmx @1277
- vp8_loop_filter_simple_vertical_edge_sse2 @1278
- vp8_loop_filter_update_sharpness @1279
- vp8_loop_filter_vertical_edge_mmx @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_c @1286
- vp8_mbblock_error_mmx_impl @1287
- vp8_mbblock_error_xmm @1288
- vp8_mbblock_error_xmm_impl @1289
- vp8_mbloop_filter_horizontal_edge_mmx @1290
- vp8_mbloop_filter_horizontal_edge_sse2 @1291
- vp8_mbloop_filter_horizontal_edge_uv_sse2 @1292
- vp8_mbloop_filter_vertical_edge_mmx @1293
- vp8_mbloop_filter_vertical_edge_sse2 @1294
- vp8_mbloop_filter_vertical_edge_uv_sse2 @1295
- vp8_mbpost_proc_across_ip_c @1296
- vp8_mbpost_proc_across_ip_xmm @1297
- vp8_mbpost_proc_down_c @1298
- vp8_mbpost_proc_down_xmm @1299
- vp8_mbsplit_count @1300
- vp8_mbsplit_encodings @1301
- vp8_mbsplit_offset @1302
- vp8_mbsplit_probs @1303
- vp8_mbsplit_tree @1304
- vp8_mbsplits @1305
- vp8_mbuverror_c @1306
- vp8_mbuverror_mmx_impl @1307
- vp8_mbuverror_xmm @1308
- vp8_mbuverror_xmm_impl @1309
- vp8_mode_contexts @1310
- vp8_mode_order @1311
- vp8_mse16x16_wmt @1312
- vp8_mse2psnr @1313
- vp8_multiframe_quality_enhance @1314
- vp8_mv_bit_cost @1315
- vp8_mv_cont @1316
- vp8_mv_pred @1317
- vp8_mv_ref_encoding_array @1318
- vp8_mv_ref_probs @1319
- vp8_mv_ref_tree @1320
- vp8_mv_update_probs @1321
- vp8_new_framerate @1322
- vp8_norm @1323
- vp8_optimize_mbuv @1324
- vp8_optimize_mby @1325
- vp8_pack_bitstream @1326
- vp8_pack_tokens_c @1327
- vp8_pick_frame_size @1328
- vp8_pick_inter_mode @1329
- vp8_pick_intra_mode @1330
- vp8_plane_add_noise_c @1331
- vp8_plane_add_noise_wmt @1332
- vp8_post_proc_down_and_across_mb_row_c @1333
- vp8_post_proc_down_and_across_mb_row_sse2 @1334
- vp8_post_proc_frame @1335
- vp8_prev_token_class @1336
- vp8_prob_cost @1337
- vp8_quantize_mb_c @1338
- vp8_quantize_mbuv_c @1339
- vp8_quantize_mby_c @1340
- vp8_rd_pick_inter_mode @1341
- vp8_rd_pick_intra_mode @1342
- vp8_receive_raw_frame @1343
- vp8_ref_frame_order @1344
- vp8_refining_search_sad @1345
- vp8_refining_search_sad_c @1346
- vp8_refining_search_sadx4 @1347
- vp8_regular_quantize_b_c @1348
- vp8_regular_quantize_b_pair_c @1349
- vp8_regular_quantize_b_sse2 @1350
- vp8_regulate_q @1351
- vp8_remove_common @1352
- vp8_remove_compressor @1353
- vp8_remove_decoder_instances @1354
- vp8_reset_mb_tokens_context @1355
- vp8_restore_coding_context @1356
- vp8_reverse_trans @1357
- vp8_rtcd @1358
- vp8_rv @1359
- vp8_sad16x16 @1360
- vp8_sad16x16_c @1361
- vp8_sad16x16_sse3 @1362
- vp8_sad16x16_wmt @1363
- vp8_sad16x16x3 @1364
- vp8_sad16x16x3_c @1365
- vp8_sad16x16x3_sse3 @1366
- vp8_sad16x16x3_ssse3 @1367
- vp8_sad16x16x4d @1368
- vp8_sad16x16x4d_c @1369
- vp8_sad16x16x4d_sse3 @1370
- vp8_sad16x16x8 @1371
- vp8_sad16x16x8_c @1372
- vp8_sad16x16x8_sse4 @1373
- vp8_sad16x8_c @1374
- vp8_sad16x8_wmt @1375
- vp8_sad16x8x3 @1376
- vp8_sad16x8x3_c @1377
- vp8_sad16x8x3_sse3 @1378
- vp8_sad16x8x3_ssse3 @1379
- vp8_sad16x8x4d @1380
- vp8_sad16x8x4d_c @1381
- vp8_sad16x8x4d_sse3 @1382
- vp8_sad16x8x8 @1383
- vp8_sad16x8x8_c @1384
- vp8_sad16x8x8_sse4 @1385
- vp8_sad4x4_c @1386
- vp8_sad4x4_wmt @1387
- vp8_sad4x4x3 @1388
- vp8_sad4x4x3_c @1389
- vp8_sad4x4x3_sse3 @1390
- vp8_sad4x4x4d @1391
- vp8_sad4x4x4d_c @1392
- vp8_sad4x4x4d_sse3 @1393
- vp8_sad4x4x8 @1394
- vp8_sad4x4x8_c @1395
- vp8_sad4x4x8_sse4 @1396
- vp8_sad8x16_c @1397
- vp8_sad8x16_wmt @1398
- vp8_sad8x16x3 @1399
- vp8_sad8x16x3_c @1400
- vp8_sad8x16x3_sse3 @1401
- vp8_sad8x16x4d @1402
- vp8_sad8x16x4d_c @1403
- vp8_sad8x16x4d_sse3 @1404
- vp8_sad8x16x8 @1405
- vp8_sad8x16x8_c @1406
- vp8_sad8x16x8_sse4 @1407
- vp8_sad8x8_c @1408
- vp8_sad8x8_wmt @1409
- vp8_sad8x8x3 @1410
- vp8_sad8x8x3_c @1411
- vp8_sad8x8x3_sse3 @1412
- vp8_sad8x8x4d @1413
- vp8_sad8x8x4d_c @1414
- vp8_sad8x8x4d_sse3 @1415
- vp8_sad8x8x8 @1416
- vp8_sad8x8x8_c @1417
- vp8_sad8x8x8_sse4 @1418
- vp8_save_coding_context @1419
- vp8_second_pass @1420
- vp8_set_active_map @1421
- vp8_set_internal_size @1422
- vp8_set_mbmode_and_mvs @1423
- vp8_set_quantizer @1424
- vp8_set_reference @1425
- vp8_set_roimap @1426
- vp8_set_speed_features @1427
- vp8_setup_block_dptrs @1428
- vp8_setup_block_ptrs @1429
- vp8_setup_intra_recon @1430
- vp8_setup_intra_recon_top_line @1431
- vp8_setup_key_frame @1432
- vp8_setup_version @1433
- vp8_short_fdct4x4_sse2 @1434
- vp8_short_fdct8x4_sse2 @1435
- vp8_short_idct4x4llm_c @1436
- vp8_short_idct4x4llm_mmx @1437
- vp8_short_inv_walsh4x4_1_c @1438
- vp8_short_inv_walsh4x4_c @1439
- vp8_short_inv_walsh4x4_sse2 @1440
- vp8_short_walsh4x4_sse2 @1441
- vp8_six_tap_mmx @1442
- vp8_sixtap_predict16x16 @1443
- vp8_sixtap_predict16x16_mmx @1444
- vp8_sixtap_predict16x16_sse2 @1445
- vp8_sixtap_predict16x16_ssse3 @1446
- vp8_sixtap_predict4x4 @1447
- vp8_sixtap_predict4x4_mmx @1448
- vp8_sixtap_predict4x4_ssse3 @1449
- vp8_sixtap_predict8x4 @1450
- vp8_sixtap_predict8x4_mmx @1451
- vp8_sixtap_predict8x4_sse2 @1452
- vp8_sixtap_predict8x4_ssse3 @1453
- vp8_sixtap_predict8x8 @1454
- vp8_sixtap_predict8x8_mmx @1455
- vp8_sixtap_predict8x8_sse2 @1456
- vp8_sixtap_predict8x8_ssse3 @1457
- vp8_skip_fractional_mv_step @1458
- vp8_small_mvencodings @1459
- vp8_small_mvtree @1460
- vp8_start_encode @1461
- vp8_stop_encode @1462
- vp8_strict_quantize_b_c @1463
- vp8_stuff_mb @1464
- vp8_sub_mv_ref_encoding_array @1465
- vp8_sub_mv_ref_prob2 @1466
- vp8_sub_mv_ref_prob3 @1467
- vp8_sub_mv_ref_tree @1468
- vp8_sub_pixel_mse16x16_wmt @1469
- vp8_sub_pixel_variance16x16 @1470
- vp8_sub_pixel_variance16x16_ssse3 @1471
- vp8_sub_pixel_variance16x16_wmt @1472
- vp8_sub_pixel_variance16x8 @1473
- vp8_sub_pixel_variance16x8_ssse3 @1474
- vp8_sub_pixel_variance16x8_wmt @1475
- vp8_sub_pixel_variance4x4_wmt @1476
- vp8_sub_pixel_variance8x16_wmt @1477
- vp8_sub_pixel_variance8x8_wmt @1478
- vp8_subtract_b_c @1479
- vp8_subtract_b_sse2 @1480
- vp8_subtract_b_sse2_impl @1481
- vp8_subtract_mbuv_c @1482
- vp8_subtract_mbuv_sse2 @1483
- vp8_subtract_mby_c @1484
- vp8_subtract_mby_sse2 @1485
- vp8_swap_yv12_buffer @1486
- vp8_temporal_filter_apply_c @1487
- vp8_temporal_filter_apply_sse2 @1488
- vp8_temporal_filter_prepare_c @1489
- vp8_tokenize_mb @1490
- vp8_tokens_from_tree @1491
- vp8_tokens_from_tree_offset @1492
- vp8_transform_intra_mby @1493
- vp8_transform_mbuv @1494
- vp8_tree_probs_from_distribution @1495
- vp8_unpack_block1d16_h6_sse2 @1496
- vp8_update_coef_probs @1497
- vp8_update_entropy @1498
- vp8_update_gf_useage_maps @1499
- vp8_update_rate_correction_factors @1500
- vp8_update_reference @1501
- vp8_update_zbin_extra @1502
- vp8_use_as_reference @1503
- vp8_uv_mode_encodings @1504
- vp8_uv_mode_prob @1505
- vp8_uv_mode_tree @1506
- vp8_variance16x16_wmt @1507
- vp8_variance16x8_wmt @1508
- vp8_variance4x4_wmt @1509
- vp8_variance8x16_wmt @1510
- vp8_variance8x8_wmt @1511
- vp8_variance_and_sad_16x16_sse2 @1512
- vp8_variance_halfpixvar16x16_h_wmt @1513
- vp8_variance_halfpixvar16x16_hv_wmt @1514
- vp8_variance_halfpixvar16x16_v_wmt @1515
- vp8_vertical_band_2_1_scale_c @1516
- vp8_vertical_band_2_1_scale_i_c @1517
- vp8_vertical_band_5_3_scale_c @1518
- vp8_vertical_band_5_4_scale_c @1519
- vp8_write_mvprobs @1520
- vp8_ymode_encodings @1521
- vp8_ymode_prob @1522
- vp8_ymode_tree @1523
- vp8_yv12_alloc_frame_buffer @1524
- vp8_yv12_copy_frame_c @1525
- vp8_yv12_copy_partial_frame_c @1526
- vp8_yv12_de_alloc_frame_buffer @1527
- vp8_yv12_extend_frame_borders_c @1528
- vp8_yv12_realloc_frame_buffer @1529
- vp8cx_base_skip_false_prob @1530
- vp8cx_create_encoder_threads @1531
- vp8cx_encode_inter_macroblock @1532
- vp8cx_encode_intra_macroblock @1533
- vp8cx_frame_init_quantizer @1534
- vp8cx_init_de_quantizer @1535
- vp8cx_init_mbrthread_data @1536
- vp8cx_init_quantizer @1537
- vp8cx_initialize_me_consts @1538
- vp8cx_mb_init_quantizer @1539
- vp8cx_pick_filter_level @1540
- vp8cx_pick_filter_level_fast @1541
- vp8cx_remove_encoder_threads @1542
- vp8cx_set_alt_lf_level @1543
- vp8dx_bool_decoder_fill @1544
- vp8dx_get_raw_frame @1545
- vp8dx_get_reference @1546
- vp8dx_receive_compressed_data @1547
- vp8dx_references_buffer @1548
- vp8dx_set_reference @1549
- vp8dx_start_decode @1550
- vp8mt_alloc_temp_buffers @1551
- vp8mt_de_alloc_temp_buffers @1552
- vp8mt_decode_mb_rows @1553
- vp9_alloc_frame_buffer @1554
- vp9_extend_frame_borders_c @1555
- vp9_extend_frame_inner_borders_c @1556
- vp9_free_frame_buffer @1557
- vp9_realloc_frame_buffer @1558
- vpx_calloc @1559
- vpx_codec_control_ @1560
- vpx_codec_dec_init_ver @1561
- vpx_codec_decode @1562
- vpx_codec_destroy @1563
- vpx_codec_enc_config_default @1564
- vpx_codec_enc_config_set @1565
- vpx_codec_enc_init_multi_ver @1566
- vpx_codec_enc_init_ver @1567
- vpx_codec_encode @1568
- vpx_codec_err_to_string @1569
- vpx_codec_error @1570
- vpx_codec_error_detail @1571
- vpx_codec_get_caps @1572
- vpx_codec_get_cx_data @1573
- vpx_codec_get_frame @1574
- vpx_codec_get_global_headers @1575
- vpx_codec_get_mem_map @1576
- vpx_codec_get_preview_frame @1577
- vpx_codec_get_stream_info @1578
- vpx_codec_iface_name @1579
- vpx_codec_peek_stream_info @1580
- vpx_codec_pkt_list_add @1581
- vpx_codec_pkt_list_get @1582
- vpx_codec_register_put_frame_cb @1583
- vpx_codec_register_put_slice_cb @1584
- vpx_codec_set_cx_data_buf @1585
- vpx_codec_set_mem_map @1586
- vpx_codec_version @1587
- vpx_codec_version_extra_str @1588
- vpx_codec_version_str @1589
- vpx_codec_vp8_cx @1590
- vpx_codec_vp8_cx_algo @1591
- vpx_codec_vp8_dx @1592
- vpx_codec_vp8_dx_algo @1593
- vpx_free @1594
- vpx_malloc @1595
- vpx_mem_get_version @1596
- vpx_mem_set_functions @1597
- vpx_mem_set_heap_size @1598
- vpx_mem_unset_functions @1599
- vpx_memalign @1600
- vpx_memcpy @1601
- vpx_memmove @1602
- vpx_memset @1603
- vpx_mmap_alloc @1604
- vpx_mmap_dtor @1605
- vpx_realloc @1606
- vpx_reset_mmx_state @1607
- vpx_scale_frame @1608
- vpx_scale_rtcd @1609
- vpx_validate_mmaps @1610
- vpx_winx64_fldcw @1611
- vpx_winx64_fstcw @1612
- vpx_yv12_copy_y_c @1613
- write_cryptpacket @1614
diff --git a/protocols/Tox/tox/lib/x86/libtox.def b/protocols/Tox/tox/lib/x86/libtox.def
deleted file mode 100644
index b0ecae098e..0000000000
--- a/protocols/Tox/tox/lib/x86/libtox.def
+++ /dev/null
@@ -1,1765 +0,0 @@
-LIBRARY "libtox"
-
-EXPORTS
- Assoc_add_entry @1
- Assoc_get_close_entries @2
- Assoc_self_client_id_changed @3
- DHT_addfriend @4
- DHT_bootstrap @5
- DHT_bootstrap_from_address @6
- DHT_connect_after_load @7
- DHT_delfriend @8
- DHT_get_shared_key_recv @9
- DHT_get_shared_key_sent @10
- DHT_getfriendip @11
- DHT_getnodes @12
- DHT_isconnected @13
- DHT_load @14
- DHT_non_lan_connected @15
- DHT_save @16
- DHT_size @17
- LAN_ip @18
- LANdiscovery_init @19
- PBKDF2_SHA256 @20
- VP8_UVSSE @21
- __pth_gpointer_locked @22
- __pthread_clock_nanosleep @23
- __pthread_shallcancel @24
- __xl_f @25
- _celt_autocorr @26
- _celt_lpc @27
- _pthread_cleanup_dest @28
- _pthread_get_state @29
- _pthread_invoke_cancel @30
- _pthread_key_dest @31
- _pthread_rel_time_in_ms @32
- _pthread_set_state @33
- _pthread_setnobreak @34
- _pthread_time_in_ms @35
- _pthread_time_in_ms_from_timespec @36
- _pthread_tryjoin @37
- _sodium_alloc_init @38
- accept_crypto_connection @39
- add_ext_header @40
- add_groupchat @41
- add_header @42
- add_tcp_relay @43
- add_tcp_relay_peer @44
- add_to_ping @45
- addr_parse_ip @46
- addr_resolve @47
- addr_resolve_or_parse_ip @48
- addto_lists @49
- alg_quant @50
- alg_unquant @51
- alloc_region @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
- callback_file_control @66
- callback_file_data @67
- callback_file_sendrequest @68
- callback_friendrequest @69
- celt_decode_with_ec @70
- celt_decoder_get_size @71
- celt_decoder_init @72
- celt_encode_with_ec @73
- celt_encoder_get_size @74
- celt_encoder_init @75
- celt_fir @76
- celt_iir @77
- celt_lcg_rand @78
- celt_pitch_xcorr_c @79
- celt_preemphasis @80
- check_control_input @81
- check_fragments_for_errors @82
- check_late_message @83
- closelist_nodes @84
- clt_mdct_backward @85
- clt_mdct_forward @86
- codec_init_session @87
- codec_terminate_session @88
- comb_filter @89
- compute_allocation @90
- compute_band_energies @91
- compute_frame_size @92
- compute_stereo_width @93
- cond_print @94
- cond_print_set @95
- connection_data_handler @96
- connection_lossy_data_handler @97
- connection_status_handler @98
- copy_connected_tcp_relays @99
- copy_friendlist @100
- count_friendlist @101
- create_announce_request @102
- create_data_request @103
- create_onion_packet @104
- create_onion_packet_tcp @105
- create_onion_path @106
- create_queue @107
- create_request @108
- crypto_auth_hmacsha256 @109
- crypto_auth_hmacsha256_final @110
- crypto_auth_hmacsha256_init @111
- crypto_auth_hmacsha256_update @112
- crypto_box @113
- crypto_box_afternm @114
- crypto_box_beforenm @115
- crypto_box_beforenmbytes @116
- crypto_box_boxzerobytes @117
- crypto_box_curve25519xsalsa20poly1305 @118
- crypto_box_curve25519xsalsa20poly1305_afternm @119
- crypto_box_curve25519xsalsa20poly1305_beforenm @120
- crypto_box_curve25519xsalsa20poly1305_keypair @121
- crypto_box_curve25519xsalsa20poly1305_open @122
- crypto_box_curve25519xsalsa20poly1305_open_afternm @123
- crypto_box_curve25519xsalsa20poly1305_seed_keypair @124
- crypto_box_keypair @125
- crypto_box_macbytes @126
- crypto_box_noncebytes @127
- crypto_box_open @128
- crypto_box_open_afternm @129
- crypto_box_primitive @130
- crypto_box_publickeybytes @131
- crypto_box_secretkeybytes @132
- crypto_box_seed_keypair @133
- crypto_box_seedbytes @134
- crypto_box_zerobytes @135
- crypto_cmp @136
- crypto_connection_status @137
- crypto_core_hsalsa20 @138
- crypto_core_salsa20 @139
- crypto_hash_sha256 @140
- crypto_hash_sha256_final @141
- crypto_hash_sha256_init @142
- crypto_hash_sha256_update @143
- crypto_hash_sha512 @144
- crypto_hash_sha512_final @145
- crypto_hash_sha512_init @146
- crypto_hash_sha512_update @147
- crypto_kill @148
- crypto_num_free_sendqueue_slots @149
- crypto_onetimeauth_pick_best_implementation @150
- crypto_onetimeauth_poly1305 @151
- crypto_onetimeauth_poly1305_donna @152
- crypto_onetimeauth_poly1305_donna_final @153
- crypto_onetimeauth_poly1305_donna_implementation @154
- crypto_onetimeauth_poly1305_donna_implementation_name @155
- crypto_onetimeauth_poly1305_donna_init @156
- crypto_onetimeauth_poly1305_donna_update @157
- crypto_onetimeauth_poly1305_donna_verify @158
- crypto_onetimeauth_poly1305_final @159
- crypto_onetimeauth_poly1305_implementation_name @160
- crypto_onetimeauth_poly1305_init @161
- crypto_onetimeauth_poly1305_set_implementation @162
- crypto_onetimeauth_poly1305_update @163
- crypto_onetimeauth_poly1305_verify @164
- crypto_pwhash_scryptsalsa208sha256 @165
- crypto_pwhash_scryptsalsa208sha256_ll @166
- crypto_pwhash_scryptsalsa208sha256_memlimit_interactive @167
- crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive @168
- crypto_pwhash_scryptsalsa208sha256_opslimit_interactive @169
- crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive @170
- crypto_pwhash_scryptsalsa208sha256_saltbytes @171
- crypto_pwhash_scryptsalsa208sha256_str @172
- crypto_pwhash_scryptsalsa208sha256_str_verify @173
- crypto_pwhash_scryptsalsa208sha256_strbytes @174
- crypto_pwhash_scryptsalsa208sha256_strprefix @175
- crypto_run_interval @176
- crypto_scalarmult_curve25519 @177
- crypto_scalarmult_curve25519_base @178
- crypto_scalarmult_curve25519_ref10_fe_0 @179
- crypto_scalarmult_curve25519_ref10_fe_1 @180
- crypto_scalarmult_curve25519_ref10_fe_add @181
- crypto_scalarmult_curve25519_ref10_fe_copy @182
- crypto_scalarmult_curve25519_ref10_fe_cswap @183
- crypto_scalarmult_curve25519_ref10_fe_frombytes @184
- crypto_scalarmult_curve25519_ref10_fe_invert @185
- crypto_scalarmult_curve25519_ref10_fe_mul @186
- crypto_scalarmult_curve25519_ref10_fe_mul121666 @187
- crypto_scalarmult_curve25519_ref10_fe_sq @188
- crypto_scalarmult_curve25519_ref10_fe_sub @189
- crypto_scalarmult_curve25519_ref10_fe_tobytes @190
- crypto_secretbox_xsalsa20poly1305 @191
- crypto_secretbox_xsalsa20poly1305_open @192
- crypto_stream_salsa20 @193
- crypto_stream_salsa20_keybytes @194
- crypto_stream_salsa20_noncebytes @195
- crypto_stream_salsa20_xor @196
- crypto_stream_salsa20_xor_ic @197
- crypto_stream_xsalsa20 @198
- crypto_stream_xsalsa20_xor @199
- crypto_verify_16 @200
- crypto_verify_32 @201
- cryptopacket_registerhandler @202
- cryptpacket_received @203
- current_time_monotonic @204
- custom_lossless_packet_registerhandler @205
- custom_lossy_packet_registerhandler @206
- decode_pulses @207
- decrypt_data @208
- decrypt_data_symmetric @209
- del_groupchat @210
- denormalise_bands @211
- dequeue @212
- do_Assoc @213
- do_DHT @214
- do_TCP_connection @215
- do_TCP_server @216
- do_friend_connections @217
- do_friends @218
- do_groupchats @219
- do_hardening @220
- do_messenger @221
- do_net_crypto @222
- do_onion_client @223
- do_sema_b_wait_intern @224
- do_to_ping @225
- downmix_float @226
- downmix_int @227
- eMeans @228
- ec_dec_bit_logp @229
- ec_dec_bits @230
- ec_dec_icdf @231
- ec_dec_init @232
- ec_dec_uint @233
- ec_dec_update @234
- ec_decode @235
- ec_decode_bin @236
- ec_enc_bit_logp @237
- ec_enc_bits @238
- ec_enc_done @239
- ec_enc_icdf @240
- ec_enc_init @241
- ec_enc_patch_initial_bits @242
- ec_enc_shrink @243
- ec_enc_uint @244
- ec_encode @245
- ec_encode_bin @246
- ec_laplace_decode @247
- ec_laplace_encode @248
- ec_tell_frac @249
- encode_pulses @250
- encode_size @251
- encrypt_data @252
- encrypt_data_symmetric @253
- encrypt_precompute @254
- energy_VAD @255
- escrypt_free_local @256
- escrypt_gensalt_r @257
- escrypt_init_local @258
- escrypt_kdf_nosse @259
- escrypt_kdf_sse @260
- escrypt_r @261
- extract_ext_header @262
- extract_header @263
- file_control @264
- file_data @265
- file_dataremaining @266
- file_sendrequest @267
- format_output @268
- frame_size_select @269
- free_region @270
- friend_con_connected @271
- friend_connection_callbacks @272
- friend_connection_crypt_connection_id @273
- friend_connection_lock @274
- friend_ips @275
- friendreq_init @276
- g_callback_group_invite @277
- g_callback_group_message @278
- g_callback_group_namelistchange @279
- get_close_nodes @280
- get_connection_dht_key @281
- get_friendcon_public_keys @282
- get_nospam @283
- get_num_online_friends @284
- get_shared_key @285
- getaddress @286
- getclient_id @287
- getfriend_conn_id_pk @288
- getfriend_id @289
- getfriendcon_id @290
- getname @291
- getself_name @292
- group_message_send @293
- group_names @294
- group_new_peer_send @295
- group_number_peers @296
- group_peername @297
- group_ping_send @298
- haar1 @299
- handle_request @300
- host_to_net @301
- hysteresis_decision @302
- id_closest @303
- id_copy @304
- id_equal @305
- increment_nonce @306
- increment_nonce_number @307
- init_audio_decoder @308
- init_audio_encoder @309
- init_caps @310
- init_video_decoder @311
- init_video_encoder @312
- invite_friend @313
- invoke_callback @314
- ip_copy @315
- ip_equal @316
- ip_init @317
- ip_isset @318
- ip_ntoa @319
- ip_pack @320
- ip_reset @321
- ip_unpack @322
- ipport_copy @323
- ipport_equal @324
- ipport_isset @325
- ipport_pack @326
- ipport_unpack @327
- is_timeout @328
- isqrt32 @329
- join_groupchat @330
- kill_Assoc @331
- kill_DHT @332
- kill_TCP_connection @333
- kill_TCP_server @334
- kill_friend_connection @335
- kill_friend_connections @336
- kill_groupchats @337
- kill_messenger @338
- kill_net_crypto @339
- kill_networking @340
- kill_onion @341
- kill_onion_announce @342
- kill_onion_client @343
- kill_ping @344
- kill_sock @345
- load_keys @346
- load_state @347
- m_addfriend @348
- m_addfriend_norequest @349
- m_avatar_hash @350
- m_callback_action @351
- m_callback_avatar_data @352
- m_callback_avatar_info @353
- m_callback_connectionstatus @354
- m_callback_connectionstatus_internal_av @355
- m_callback_friendmessage @356
- m_callback_friendrequest @357
- m_callback_group_invite @358
- m_callback_msi_packet @359
- m_callback_namechange @360
- m_callback_read_receipt @361
- m_callback_statusmessage @362
- m_callback_typingchange @363
- m_callback_userstatus @364
- m_copy_self_statusmessage @365
- m_copy_statusmessage @366
- m_delfriend @367
- m_friend_exists @368
- m_get_friend_connectionstatus @369
- m_get_istyping @370
- m_get_last_online @371
- m_get_name_size @372
- m_get_self_avatar @373
- m_get_self_name_size @374
- m_get_self_statusmessage_size @375
- m_get_self_userstatus @376
- m_get_statusmessage_size @377
- m_get_userstatus @378
- m_hash @379
- m_msi_packet @380
- m_request_avatar_data @381
- m_request_avatar_info @382
- m_send_avatar_info @383
- m_sendaction @384
- m_sendaction_withid @385
- m_sendmessage @386
- m_sendmessage_withid @387
- m_set_avatar @388
- m_set_sends_receipts @389
- m_set_statusmessage @390
- m_set_userstatus @391
- m_set_usertyping @392
- m_unset_avatar @393
- messenger_load @394
- messenger_run_interval @395
- messenger_save @396
- messenger_size @397
- mlp_process @398
- msg_parse @399
- msi_answer @400
- msi_cancel @401
- msi_change_csettings @402
- msi_hangup @403
- msi_init_session @404
- msi_invite @405
- msi_msg_get_csettings @406
- msi_msg_set_callid @407
- msi_msg_set_csettings @408
- msi_msg_set_reason @409
- msi_new_message @410
- msi_register_callback @411
- msi_reject @412
- msi_stopcall @413
- msi_terminate_session @414
- mutex_print @415
- mutex_print_set @416
- nc_dht_pk_callback @417
- net @418
- networking_at_startup @419
- networking_poll @420
- networking_registerhandler @421
- new_Assoc @422
- new_Assoc_default @423
- new_DHT @424
- new_TCP_connection @425
- new_TCP_server @426
- new_connection_handler @427
- new_crypto_connection @428
- new_filesender @429
- new_friend_connection @430
- new_friend_connections @431
- new_groupchats @432
- new_keys @433
- new_messenger @434
- new_net_crypto @435
- new_networking @436
- new_nonce @437
- new_onion @438
- new_onion_announce @439
- new_onion_client @440
- new_ping @441
- new_symmetric_key @442
- normalise_bands @443
- onion_add_path_node @444
- onion_addfriend @445
- onion_backup_nodes @446
- onion_delfriend @447
- onion_dht_pk_callback @448
- onion_friend_num @449
- onion_getfriend_DHT_pubkey @450
- onion_getfriendip @451
- onion_isconnected @452
- onion_response_handler @453
- onion_send_1 @454
- onion_set_friend_DHT_pubkey @455
- onion_set_friend_online @456
- oniondata_registerhandler @457
- oob_data_handler @458
- optimize_framesize @459
- opus_custom_decoder_ctl @460
- opus_custom_encoder_ctl @461
- opus_custom_mode_create @462
- opus_decode @463
- opus_decode_float @464
- opus_decode_native @465
- opus_decoder_create @466
- opus_decoder_ctl @467
- opus_decoder_destroy @468
- opus_decoder_get_nb_samples @469
- opus_decoder_get_size @470
- opus_decoder_init @471
- opus_encode @472
- opus_encode_float @473
- opus_encode_native @474
- opus_encoder_create @475
- opus_encoder_ctl @476
- opus_encoder_destroy @477
- opus_encoder_get_size @478
- opus_encoder_init @479
- opus_fft @480
- opus_get_version_string @481
- opus_ifft @482
- opus_multistream_packet_pad @483
- opus_multistream_packet_unpad @484
- opus_packet_get_bandwidth @485
- opus_packet_get_nb_channels @486
- opus_packet_get_nb_frames @487
- opus_packet_get_nb_samples @488
- opus_packet_get_samples_per_frame @489
- opus_packet_pad @490
- opus_packet_parse @491
- opus_packet_parse_impl @492
- opus_packet_unpad @493
- opus_pcm_soft_clip @494
- opus_repacketizer_cat @495
- opus_repacketizer_create @496
- opus_repacketizer_destroy @497
- opus_repacketizer_get_nb_frames @498
- opus_repacketizer_get_size @499
- opus_repacketizer_init @500
- opus_repacketizer_out @501
- opus_repacketizer_out_range @502
- opus_repacketizer_out_range_impl @503
- opus_strerror @504
- pack_nodes @505
- parse_recv @506
- parse_send @507
- patch_transient_decision @508
- ping_array_add @509
- ping_array_check @510
- ping_array_free_all @511
- ping_array_init @512
- pitch_downsample @513
- pitch_search @514
- pthread_attr_destroy @515
- pthread_attr_getdetachstate @516
- pthread_attr_getinheritsched @517
- pthread_attr_getscope @518
- pthread_attr_getstackaddr @519
- pthread_attr_getstacksize @520
- pthread_attr_init @521
- pthread_attr_setdetachstate @522
- pthread_attr_setinheritsched @523
- pthread_attr_setscope @524
- pthread_attr_setstackaddr @525
- pthread_attr_setstacksize @526
- pthread_cancel @527
- pthread_cond_broadcast @528
- pthread_cond_destroy @529
- pthread_cond_init @530
- pthread_cond_signal @531
- pthread_cond_timedwait @532
- pthread_cond_timedwait_relative_np @533
- pthread_cond_wait @534
- pthread_condattr_destroy @535
- pthread_condattr_getclock @536
- pthread_condattr_getpshared @537
- pthread_condattr_init @538
- pthread_condattr_setclock @539
- pthread_condattr_setpshared @540
- pthread_create @541
- pthread_create_wrapper @542
- pthread_delay_np @543
- pthread_delay_np_ms @544
- pthread_detach @545
- pthread_equal @546
- pthread_exit @547
- pthread_get_concurrency @548
- pthread_getclean @549
- pthread_getconcurrency @550
- pthread_getevent @551
- pthread_gethandle @552
- pthread_getspecific @553
- pthread_join @554
- pthread_key_create @555
- pthread_key_delete @556
- pthread_kill @557
- pthread_mutex_destroy @558
- pthread_mutex_init @559
- pthread_mutex_lock @560
- pthread_mutex_timedlock @561
- pthread_mutex_trylock @562
- pthread_mutex_unlock @563
- pthread_mutexattr_destroy @564
- pthread_mutexattr_getprioceiling @565
- pthread_mutexattr_getprotocol @566
- pthread_mutexattr_getpshared @567
- pthread_mutexattr_gettype @568
- pthread_mutexattr_init @569
- pthread_mutexattr_setprioceiling @570
- pthread_mutexattr_setprotocol @571
- pthread_mutexattr_setpshared @572
- pthread_mutexattr_settype @573
- pthread_num_processors_np @574
- pthread_once @575
- pthread_rwlock_destroy @576
- pthread_rwlock_init @577
- pthread_rwlock_rdlock @578
- pthread_rwlock_timedrdlock @579
- pthread_rwlock_timedwrlock @580
- pthread_rwlock_tryrdlock @581
- pthread_rwlock_trywrlock @582
- pthread_rwlock_unlock @583
- pthread_rwlock_wrlock @584
- pthread_rwlockattr_destroy @585
- pthread_rwlockattr_getpshared @586
- pthread_rwlockattr_init @587
- pthread_rwlockattr_setpshared @588
- pthread_self @589
- pthread_set_concurrency @590
- pthread_set_num_processors_np @591
- pthread_setcancelstate @592
- pthread_setcanceltype @593
- pthread_setconcurrency @594
- pthread_setspecific @595
- pthread_spin_destroy @596
- pthread_spin_init @597
- pthread_spin_lock @598
- pthread_spin_trylock @599
- pthread_spin_unlock @600
- pthread_testcancel @601
- pthread_timechange_handler_np @602
- pthread_tls_init @603
- public_key_valid @604
- quant_all_bands @605
- quant_coarse_energy @606
- quant_energy_finalise @607
- quant_fine_energy @608
- queue @609
- random_64b @610
- random_int @611
- random_node @612
- random_nodes_path @613
- random_nonce @614
- randombytes @615
- randombytes_buf @616
- randombytes_close @617
- randombytes_implementation_name @618
- randombytes_random @619
- randombytes_set_implementation @620
- randombytes_stir @621
- randombytes_sysrandom @622
- randombytes_sysrandom_buf @623
- randombytes_sysrandom_close @624
- randombytes_sysrandom_implementation @625
- randombytes_sysrandom_implementation_name @626
- randombytes_sysrandom_stir @627
- randombytes_sysrandom_uniform @628
- randombytes_uniform @629
- read_TCP_length @630
- read_TCP_packet @631
- read_packet_TCP_secure_connection @632
- realloc_friendlist @633
- reconfigure_video_encoder_bitrate @634
- reconfigure_video_encoder_resolution @635
- recv_tcp_relay_handler @636
- remove_doubling @637
- remove_request_received @638
- renormalise_vector @639
- resampling_factor @640
- route_packet @641
- route_tofriend @642
- routing_data_handler @643
- routing_response_handler @644
- routing_status_handler @645
- rtp_free_msg @646
- rtp_handle_packet @647
- rtp_init_session @648
- rtp_new_message @649
- rtp_send_msg @650
- rtp_terminate_session @651
- run_analysis @652
- rwl_print @653
- rwl_print_set @654
- save_keys @655
- send_LANdiscovery @656
- send_announce_request @657
- send_custom_lossless_packet @658
- send_custom_lossy_packet @659
- send_data @660
- send_data_request @661
- send_disconnect_request @662
- send_friend_request_packet @663
- send_group_invite_packet @664
- send_lossy_cryptpacket @665
- send_name_all_groups @666
- send_onion_data @667
- send_onion_packet @668
- send_onion_request @669
- send_onion_response @670
- send_oob_packet @671
- send_ping_request @672
- send_reponse @673
- send_routing_request @674
- send_tcp_onion_request @675
- sendpacket @676
- set_callback_handle_recv_1 @677
- set_connection_dht_public_key @678
- set_dht_temp_pk @679
- set_direct_ip_port @680
- set_filter_function @681
- set_friend_request_callback @682
- set_nospam @683
- set_socket_dualstack @684
- set_socket_nonblock @685
- set_socket_nosigpipe @686
- set_tcp_connection_number @687
- setfriendname @688
- setname @689
- silk_A2NLSF @690
- silk_A2NLSF_FLP @691
- silk_CB_lags_stage2 @692
- silk_CB_lags_stage2_10_ms @693
- silk_CB_lags_stage3 @694
- silk_CB_lags_stage3_10_ms @695
- silk_CNG @696
- silk_CNG_Reset @697
- silk_Decode @698
- silk_Encode @699
- silk_Get_Decoder_Size @700
- silk_Get_Encoder_Size @701
- silk_HP_variable_cutoff @702
- silk_InitDecoder @703
- silk_InitEncoder @704
- silk_LBRR_flags_iCDF_ptr @705
- silk_LPC_analysis_filter @706
- silk_LPC_analysis_filter_FLP @707
- silk_LPC_inverse_pred_gain @708
- silk_LPC_inverse_pred_gain_FLP @709
- silk_LP_variable_cutoff @710
- silk_LSFCosTab_FIX_Q12 @711
- silk_LTPScales_table_Q14 @712
- silk_LTP_analysis_filter_FLP @713
- silk_LTP_gain_BITS_Q5_ptrs @714
- silk_LTP_gain_iCDF_ptrs @715
- silk_LTP_gain_middle_avg_RD_Q14 @716
- silk_LTP_per_index_iCDF @717
- silk_LTP_scale_ctrl_FLP @718
- silk_LTP_vq_gain_ptrs_Q7 @719
- silk_LTP_vq_ptrs_Q7 @720
- silk_LTP_vq_sizes @721
- silk_LTPscale_iCDF @722
- silk_Lag_range_stage3 @723
- silk_Lag_range_stage3_10_ms @724
- silk_NLSF2A @725
- silk_NLSF2A_FLP @726
- silk_NLSF_CB_NB_MB @727
- silk_NLSF_CB_WB @728
- silk_NLSF_EXT_iCDF @729
- silk_NLSF_VQ @730
- silk_NLSF_VQ_weights_laroia @731
- silk_NLSF_decode @732
- silk_NLSF_del_dec_quant @733
- silk_NLSF_encode @734
- silk_NLSF_interpolation_factor_iCDF @735
- silk_NLSF_stabilize @736
- silk_NLSF_unpack @737
- silk_NSQ @738
- silk_NSQ_del_dec @739
- silk_NSQ_wrapper_FLP @740
- silk_PLC @741
- silk_PLC_Reset @742
- silk_PLC_glue_frames @743
- silk_Quantization_Offsets_Q10 @744
- silk_Resampler_1_2_COEFS @745
- silk_Resampler_1_3_COEFS @746
- silk_Resampler_1_4_COEFS @747
- silk_Resampler_1_6_COEFS @748
- silk_Resampler_2_3_COEFS @749
- silk_Resampler_2_3_COEFS_LQ @750
- silk_Resampler_3_4_COEFS @751
- silk_SNR_table_Q1 @752
- silk_TargetRate_table_MB @753
- silk_TargetRate_table_NB @754
- silk_TargetRate_table_WB @755
- silk_Transition_LP_A_Q28 @756
- silk_Transition_LP_B_Q28 @757
- silk_VAD_GetSA_Q8 @758
- silk_VAD_Init @759
- silk_VQ_WMat_EC @760
- silk_ana_filt_bank_1 @761
- silk_apply_sine_window_FLP @762
- silk_autocorrelation_FLP @763
- silk_biquad_alt @764
- silk_burg_modified_FLP @765
- silk_bwexpander @766
- silk_bwexpander_32 @767
- silk_bwexpander_FLP @768
- silk_control_SNR @769
- silk_control_audio_bandwidth @770
- silk_control_encoder @771
- silk_corrMatrix_FLP @772
- silk_corrVector_FLP @773
- silk_decode_core @774
- silk_decode_frame @775
- silk_decode_indices @776
- silk_decode_parameters @777
- silk_decode_pitch @778
- silk_decode_pulses @779
- silk_decode_signs @780
- silk_decoder_set_fs @781
- silk_delta_gain_iCDF @782
- silk_encode_do_VAD_FLP @783
- silk_encode_frame_FLP @784
- silk_encode_indices @785
- silk_encode_pulses @786
- silk_encode_signs @787
- silk_energy_FLP @788
- silk_find_LPC_FLP @789
- silk_find_LTP_FLP @790
- silk_find_pitch_lags_FLP @791
- silk_find_pred_coefs_FLP @792
- silk_gain_iCDF @793
- silk_gains_ID @794
- silk_gains_dequant @795
- silk_gains_quant @796
- silk_init_decoder @797
- silk_init_encoder @798
- silk_inner_prod_aligned_scale @799
- silk_inner_product_FLP @800
- silk_insertion_sort_decreasing_FLP @801
- silk_insertion_sort_increasing @802
- silk_insertion_sort_increasing_all_values_int16 @803
- silk_interpolate @804
- silk_k2a_FLP @805
- silk_levinsondurbin_FLP @806
- silk_lin2log @807
- silk_log2lin @808
- silk_lsb_iCDF @809
- silk_max_pulses_table @810
- silk_nb_cbk_searchs_stage3 @811
- silk_noise_shape_analysis_FLP @812
- silk_pitch_analysis_core_FLP @813
- silk_pitch_contour_10_ms_NB_iCDF @814
- silk_pitch_contour_10_ms_iCDF @815
- silk_pitch_contour_NB_iCDF @816
- silk_pitch_contour_iCDF @817
- silk_pitch_delta_iCDF @818
- silk_pitch_lag_iCDF @819
- silk_prefilter_FLP @820
- silk_process_NLSFs @821
- silk_process_NLSFs_FLP @822
- silk_process_gains_FLP @823
- silk_pulses_per_block_BITS_Q5 @824
- silk_pulses_per_block_iCDF @825
- silk_quant_LTP_gains @826
- silk_quant_LTP_gains_FLP @827
- silk_rate_levels_BITS_Q5 @828
- silk_rate_levels_iCDF @829
- silk_regularize_correlations_FLP @830
- silk_resampler @831
- silk_resampler_down2 @832
- silk_resampler_down2_3 @833
- silk_resampler_frac_FIR_12 @834
- silk_resampler_init @835
- silk_resampler_private_AR2 @836
- silk_resampler_private_IIR_FIR @837
- silk_resampler_private_down_FIR @838
- silk_resampler_private_up2_HQ @839
- silk_resampler_private_up2_HQ_wrapper @840
- silk_residual_energy_FLP @841
- silk_residual_energy_covar_FLP @842
- silk_scale_copy_vector_FLP @843
- silk_scale_vector_FLP @844
- silk_schur_FLP @845
- silk_shell_code_table0 @846
- silk_shell_code_table1 @847
- silk_shell_code_table2 @848
- silk_shell_code_table3 @849
- silk_shell_code_table_offsets @850
- silk_shell_decoder @851
- silk_shell_encoder @852
- silk_sigm_Q15 @853
- silk_sign_iCDF @854
- silk_solve_LDL_FLP @855
- silk_stereo_LR_to_MS @856
- silk_stereo_MS_to_LR @857
- silk_stereo_decode_mid_only @858
- silk_stereo_decode_pred @859
- silk_stereo_encode_mid_only @860
- silk_stereo_encode_pred @861
- silk_stereo_find_predictor @862
- silk_stereo_only_code_mid_iCDF @863
- silk_stereo_pred_joint_iCDF @864
- silk_stereo_pred_quant_Q13 @865
- silk_stereo_quant_pred @866
- silk_sum_sqr_shift @867
- silk_type_offset_VAD_iCDF @868
- silk_type_offset_no_VAD_iCDF @869
- silk_uniform3_iCDF @870
- silk_uniform4_iCDF @871
- silk_uniform5_iCDF @872
- silk_uniform6_iCDF @873
- silk_uniform8_iCDF @874
- silk_warped_autocorrelation_FLP @875
- sock_valid @876
- sodium_allocarray @877
- sodium_bin2hex @878
- sodium_free @879
- sodium_hex2bin @880
- sodium_init @881
- sodium_malloc @882
- sodium_memcmp @883
- sodium_memzero @884
- sodium_mlock @885
- sodium_mprotect_noaccess @886
- sodium_mprotect_readonly @887
- sodium_mprotect_readwrite @888
- sodium_munlock @889
- sodium_runtime_get_cpu_features @890
- sodium_runtime_has_neon @891
- sodium_runtime_has_sse2 @892
- sodium_runtime_has_sse3 @893
- spreading_decision @894
- stereo_itheta @895
- tcp_onion_response_handler @896
- terminate_queue @897
- tf_select_table @898
- thread_print @899
- thread_print_set @900
- to_host_family @901
- to_net_family @902
- tonality_analysis @903
- tonality_get_info @904
- tox_add_friend @905
- tox_add_friend_norequest @906
- tox_add_groupchat @907
- tox_add_tcp_relay @908
- tox_bootstrap_from_address @909
- tox_callback_avatar_data @910
- tox_callback_avatar_info @911
- tox_callback_connection_status @912
- tox_callback_file_control @913
- tox_callback_file_data @914
- tox_callback_file_send_request @915
- tox_callback_friend_action @916
- tox_callback_friend_message @917
- tox_callback_friend_request @918
- tox_callback_group_action @919
- tox_callback_group_invite @920
- tox_callback_group_message @921
- tox_callback_group_namelist_change @922
- tox_callback_name_change @923
- tox_callback_read_receipt @924
- tox_callback_status_message @925
- tox_callback_typing_change @926
- tox_callback_user_status @927
- tox_count_chatlist @928
- tox_count_friendlist @929
- tox_decrypt_dns3_TXT @930
- tox_del_friend @931
- tox_del_groupchat @932
- tox_dns3_kill @933
- tox_dns3_new @934
- tox_do @935
- tox_do_interval @936
- tox_encrypted_load @937
- tox_encrypted_save @938
- tox_encrypted_size @939
- tox_file_data_remaining @940
- tox_file_data_size @941
- tox_file_send_control @942
- tox_file_send_data @943
- tox_friend_exists @944
- tox_generate_dns3_string @945
- tox_get_address @946
- tox_get_chatlist @947
- tox_get_client_id @948
- tox_get_friend_connection_status @949
- tox_get_friend_number @950
- tox_get_friendlist @951
- tox_get_is_typing @952
- tox_get_keys @953
- tox_get_last_online @954
- tox_get_name @955
- tox_get_name_size @956
- tox_get_nospam @957
- tox_get_num_online_friends @958
- tox_get_self_avatar @959
- tox_get_self_name @960
- tox_get_self_name_size @961
- tox_get_self_status_message @962
- tox_get_self_status_message_size @963
- tox_get_self_user_status @964
- tox_get_status_message @965
- tox_get_status_message_size @966
- tox_get_user_status @967
- tox_group_action_send @968
- tox_group_get_names @969
- tox_group_message_send @970
- tox_group_number_peers @971
- tox_group_peername @972
- tox_hash @973
- tox_invite_friend @974
- tox_is_data_encrypted @975
- tox_isconnected @976
- tox_join_groupchat @977
- tox_kill @978
- tox_load @979
- tox_lossless_packet_registerhandler @980
- tox_lossy_packet_registerhandler @981
- tox_new @982
- tox_new_file_sender @983
- tox_request_avatar_data @984
- tox_request_avatar_info @985
- tox_save @986
- tox_send_action @987
- tox_send_avatar_info @988
- tox_send_lossless_packet @989
- tox_send_lossy_packet @990
- tox_send_message @991
- tox_set_avatar @992
- tox_set_name @993
- tox_set_nospam @994
- tox_set_status_message @995
- tox_set_user_is_typing @996
- tox_set_user_status @997
- tox_size @998
- tox_unset_avatar @999
- toxav_answer @1000
- toxav_call @1001
- toxav_cancel @1002
- toxav_capability_supported @1003
- toxav_change_settings @1004
- toxav_get_call_state @1005
- toxav_get_peer_csettings @1006
- toxav_get_peer_id @1007
- toxav_get_tox @1008
- toxav_handle_packet @1009
- toxav_hangup @1010
- toxav_has_activity @1011
- toxav_kill @1012
- toxav_kill_transmission @1013
- toxav_new @1014
- toxav_prepare_audio_frame @1015
- toxav_prepare_transmission @1016
- toxav_prepare_video_frame @1017
- toxav_register_audio_recv_callback @1018
- toxav_register_callstate_callback @1019
- toxav_register_video_recv_callback @1020
- toxav_reject @1021
- toxav_send_audio @1022
- toxav_send_video @1023
- toxav_stop_call @1024
- unix_time @1025
- unix_time_update @1026
- unpack_nodes @1027
- unquant_coarse_energy @1028
- unquant_energy_finalise @1029
- unquant_fine_energy @1030
- vp8_ac2quant @1031
- vp8_ac_uv_quant @1032
- vp8_ac_yquant @1033
- vp8_activity_masking @1034
- vp8_adjust_key_frame_context @1035
- vp8_alloc_compressor_data @1036
- vp8_alloc_frame_buffers @1037
- vp8_auto_select_speed @1038
- vp8_bilinear_filters @1039
- vp8_bilinear_filters_x86_4 @1040
- vp8_bilinear_filters_x86_8 @1041
- vp8_bilinear_predict16x16 @1042
- vp8_bilinear_predict16x16_c @1043
- vp8_bilinear_predict16x16_mmx @1044
- vp8_bilinear_predict16x16_sse2 @1045
- vp8_bilinear_predict16x16_ssse3 @1046
- vp8_bilinear_predict4x4 @1047
- vp8_bilinear_predict4x4_c @1048
- vp8_bilinear_predict4x4_mmx @1049
- vp8_bilinear_predict8x4 @1050
- vp8_bilinear_predict8x4_c @1051
- vp8_bilinear_predict8x4_mmx @1052
- vp8_bilinear_predict8x8 @1053
- vp8_bilinear_predict8x8_c @1054
- vp8_bilinear_predict8x8_mmx @1055
- vp8_bilinear_predict8x8_sse2 @1056
- vp8_bilinear_predict8x8_ssse3 @1057
- vp8_bits_per_mb @1058
- vp8_blend_b_c @1059
- vp8_blend_mb_inner_c @1060
- vp8_blend_mb_outer_c @1061
- vp8_block2above @1062
- vp8_block2left @1063
- vp8_block_error @1064
- vp8_block_error_c @1065
- vp8_block_error_mmx @1066
- vp8_block_error_xmm @1067
- vp8_bmode_encodings @1068
- vp8_bmode_prob @1069
- vp8_bmode_tree @1070
- vp8_build_block_doffsets @1071
- vp8_build_block_offsets @1072
- vp8_build_component_cost_table @1073
- vp8_build_inter16x16_predictors_mb @1074
- vp8_build_inter16x16_predictors_mbuv @1075
- vp8_build_inter16x16_predictors_mby @1076
- vp8_build_inter4x4_predictors_mbuv @1077
- vp8_build_inter_predictors_b @1078
- vp8_build_inter_predictors_mb @1079
- vp8_build_intra_predictors_mbuv_s @1080
- vp8_build_intra_predictors_mbuv_s_c @1081
- vp8_build_intra_predictors_mbuv_s_sse2 @1082
- vp8_build_intra_predictors_mbuv_s_ssse3 @1083
- vp8_build_intra_predictors_mby_s @1084
- vp8_build_intra_predictors_mby_s_c @1085
- vp8_build_intra_predictors_mby_s_sse2 @1086
- vp8_build_intra_predictors_mby_s_ssse3 @1087
- vp8_cal_sad @1088
- vp8_calc_ref_frame_costs @1089
- vp8_calc_ss_err @1090
- vp8_change_config @1091
- vp8_clear_system_state @1092
- vp8_clear_system_state_c @1093
- vp8_coef_bands @1094
- vp8_coef_encodings @1095
- vp8_coef_tree @1096
- vp8_coef_update_probs @1097
- vp8_compute_frame_size_bounds @1098
- vp8_convert_rfct_to_prob @1099
- vp8_copy32xn @1100
- vp8_copy32xn_c @1101
- vp8_copy32xn_sse2 @1102
- vp8_copy32xn_sse3 @1103
- vp8_copy_and_extend_frame @1104
- vp8_copy_and_extend_frame_with_rect @1105
- vp8_copy_mem16x16 @1106
- vp8_copy_mem16x16_c @1107
- vp8_copy_mem16x16_mmx @1108
- vp8_copy_mem16x16_sse2 @1109
- vp8_copy_mem8x4 @1110
- vp8_copy_mem8x4_c @1111
- vp8_copy_mem8x4_mmx @1112
- vp8_copy_mem8x8 @1113
- vp8_copy_mem8x8_c @1114
- vp8_copy_mem8x8_mmx @1115
- vp8_cost_mv_ref @1116
- vp8_cost_tokens @1117
- vp8_cost_tokens2 @1118
- vp8_create_common @1119
- vp8_create_compressor @1120
- vp8_create_decoder_instances @1121
- vp8_ctf_maps @1122
- vp8_dc2quant @1123
- vp8_dc_only_idct_add @1124
- vp8_dc_only_idct_add_c @1125
- vp8_dc_only_idct_add_mmx @1126
- vp8_dc_quant @1127
- vp8_dc_uv_quant @1128
- vp8_dct_value_cost_ptr @1129
- vp8_dct_value_tokens_ptr @1130
- vp8_de_alloc_frame_buffers @1131
- vp8_deblock @1132
- vp8_decode_frame @1133
- vp8_decode_mb_tokens @1134
- vp8_decode_mode_mvs @1135
- vp8_decoder_create_threads @1136
- vp8_decoder_remove_threads @1137
- vp8_default_bmode_probs @1138
- vp8_default_coef_probs @1139
- vp8_default_inv_zig_zag @1140
- vp8_default_mv_context @1141
- vp8_default_zig_zag1d @1142
- vp8_default_zig_zag_mask @1143
- vp8_denoiser_allocate @1144
- vp8_denoiser_denoise_mb @1145
- vp8_denoiser_filter @1146
- vp8_denoiser_filter_c @1147
- vp8_denoiser_filter_sse2 @1148
- vp8_denoiser_free @1149
- vp8_dequant_idct_add @1150
- vp8_dequant_idct_add_c @1151
- vp8_dequant_idct_add_mmx @1152
- vp8_dequant_idct_add_uv_block @1153
- vp8_dequant_idct_add_uv_block_c @1154
- vp8_dequant_idct_add_uv_block_mmx @1155
- vp8_dequant_idct_add_uv_block_sse2 @1156
- vp8_dequant_idct_add_y_block @1157
- vp8_dequant_idct_add_y_block_c @1158
- vp8_dequant_idct_add_y_block_mmx @1159
- vp8_dequant_idct_add_y_block_sse2 @1160
- vp8_dequantize_b @1161
- vp8_dequantize_b_c @1162
- vp8_dequantize_b_impl_mmx @1163
- vp8_dequantize_b_mmx @1164
- vp8_diamond_search_sad @1165
- vp8_diamond_search_sad_c @1166
- vp8_diamond_search_sadx4 @1167
- vp8_encode_frame @1168
- vp8_encode_inter16x16 @1169
- vp8_encode_inter16x16y @1170
- vp8_encode_intra @1171
- vp8_encode_intra16x16mbuv @1172
- vp8_encode_intra16x16mby @1173
- vp8_encode_intra4x4block @1174
- vp8_encode_intra4x4mby @1175
- vp8_encode_motion_vector @1176
- vp8_encode_value @1177
- vp8_end_first_pass @1178
- vp8_end_second_pass @1179
- vp8_estimate_entropy_savings @1180
- vp8_extend_mb_row @1181
- vp8_extra_bits @1182
- vp8_fast_quantize_b @1183
- vp8_fast_quantize_b_c @1184
- vp8_fast_quantize_b_impl_mmx @1185
- vp8_fast_quantize_b_mmx @1186
- vp8_fast_quantize_b_pair_c @1187
- vp8_fast_quantize_b_sse2 @1188
- vp8_fast_quantize_b_ssse3 @1189
- vp8_filter_block1d16_h6_only_sse2 @1190
- vp8_filter_block1d16_h6_sse2 @1191
- vp8_filter_block1d16_h6_ssse3 @1192
- vp8_filter_block1d16_v6_sse2 @1193
- vp8_filter_block1d16_v6_ssse3 @1194
- vp8_filter_block1d4_h6_ssse3 @1195
- vp8_filter_block1d4_v6_ssse3 @1196
- vp8_filter_block1d8_h6_only_sse2 @1197
- vp8_filter_block1d8_h6_sse2 @1198
- vp8_filter_block1d8_h6_ssse3 @1199
- vp8_filter_block1d8_v6_only_sse2 @1200
- vp8_filter_block1d8_v6_sse2 @1201
- vp8_filter_block1d8_v6_ssse3 @1202
- vp8_filter_block1d_h6_mmx @1203
- vp8_filter_block1dc_v6_mmx @1204
- vp8_filter_block2d_bil4x4_var_mmx @1205
- vp8_filter_block2d_bil_var_mmx @1206
- vp8_filter_block2d_bil_var_sse2 @1207
- vp8_filter_block2d_bil_var_ssse3 @1208
- vp8_filter_by_weight16x16 @1209
- vp8_filter_by_weight16x16_c @1210
- vp8_filter_by_weight16x16_sse2 @1211
- vp8_filter_by_weight4x4_c @1212
- vp8_filter_by_weight8x8 @1213
- vp8_filter_by_weight8x8_c @1214
- vp8_filter_by_weight8x8_sse2 @1215
- vp8_find_best_half_pixel_step @1216
- vp8_find_best_sub_pixel_step @1217
- vp8_find_best_sub_pixel_step_iteratively @1218
- vp8_find_near_mvs @1219
- vp8_find_near_mvs_bias @1220
- vp8_first_pass @1221
- vp8_fix_contexts @1222
- vp8_full_search_sad @1223
- vp8_full_search_sad_c @1224
- vp8_full_search_sadx3 @1225
- vp8_full_search_sadx8 @1226
- vp8_gaussian @1227
- vp8_get16x16var_sse2 @1228
- vp8_get4x4sse_cs @1229
- vp8_get4x4sse_cs_c @1230
- vp8_get4x4sse_cs_mmx @1231
- vp8_get4x4var_mmx @1232
- vp8_get8x8var_mmx @1233
- vp8_get8x8var_sse2 @1234
- vp8_get_compressed_data @1235
- vp8_get_inter_mbpred_error @1236
- vp8_get_mb_ss @1237
- vp8_get_mb_ss_c @1238
- vp8_get_mb_ss_mmx @1239
- vp8_get_mb_ss_sse2 @1240
- vp8_get_preview_raw_frame @1241
- vp8_get_quantizer @1242
- vp8_get_reference @1243
- vp8_gf_boost_qadjustment @1244
- vp8_half_horiz_variance16x_h_sse2 @1245
- vp8_half_horiz_variance8x_h_sse2 @1246
- vp8_half_horiz_vert_variance16x_h_sse2 @1247
- vp8_half_horiz_vert_variance8x_h_sse2 @1248
- vp8_half_vert_variance16x_h_sse2 @1249
- vp8_half_vert_variance8x_h_sse2 @1250
- vp8_hex_search @1251
- vp8_horizontal_line_2_1_scale_c @1252
- vp8_horizontal_line_5_3_scale_c @1253
- vp8_horizontal_line_5_4_scale_c @1254
- vp8_idct_dequant_0_2x_sse2 @1255
- vp8_idct_dequant_dc_0_2x_sse2 @1256
- vp8_idct_dequant_dc_full_2x_sse2 @1257
- vp8_idct_dequant_full_2x_sse2 @1258
- vp8_init3smotion_compensation @1259
- vp8_init_dsmotion_compensation @1260
- vp8_init_first_pass @1261
- vp8_init_mbmode_probs @1262
- vp8_init_mode_costs @1263
- vp8_init_second_pass @1264
- vp8_initialize_rd_consts @1265
- vp8_intra4x4_predict_c @1266
- vp8_intra_pred_uv_dc128_mmx @1267
- vp8_intra_pred_uv_dc_mmx2 @1268
- vp8_intra_pred_uv_dcleft_mmx2 @1269
- vp8_intra_pred_uv_dctop_mmx2 @1270
- vp8_intra_pred_uv_ho_mmx2 @1271
- vp8_intra_pred_uv_ho_ssse3 @1272
- vp8_intra_pred_uv_tm_sse2 @1273
- vp8_intra_pred_uv_tm_ssse3 @1274
- vp8_intra_pred_uv_ve_mmx @1275
- vp8_intra_pred_y_dc128_sse2 @1276
- vp8_intra_pred_y_dc_sse2 @1277
- vp8_intra_pred_y_dcleft_sse2 @1278
- vp8_intra_pred_y_dctop_sse2 @1279
- vp8_intra_pred_y_ho_sse2 @1280
- vp8_intra_pred_y_tm_sse2 @1281
- vp8_intra_pred_y_tm_ssse3 @1282
- vp8_intra_pred_y_ve_sse2 @1283
- vp8_kf_bmode_prob @1284
- vp8_kf_uv_mode_prob @1285
- vp8_kf_ymode_encodings @1286
- vp8_kf_ymode_prob @1287
- vp8_kf_ymode_tree @1288
- vp8_lookahead_depth @1289
- vp8_lookahead_destroy @1290
- vp8_lookahead_init @1291
- vp8_lookahead_peek @1292
- vp8_lookahead_pop @1293
- vp8_lookahead_push @1294
- vp8_loop_filter_bh @1295
- vp8_loop_filter_bh_c @1296
- vp8_loop_filter_bh_mmx @1297
- vp8_loop_filter_bh_sse2 @1298
- vp8_loop_filter_bhs_c @1299
- vp8_loop_filter_bhs_mmx @1300
- vp8_loop_filter_bhs_sse2 @1301
- vp8_loop_filter_bv @1302
- vp8_loop_filter_bv_c @1303
- vp8_loop_filter_bv_mmx @1304
- vp8_loop_filter_bv_sse2 @1305
- vp8_loop_filter_bvs_c @1306
- vp8_loop_filter_bvs_mmx @1307
- vp8_loop_filter_bvs_sse2 @1308
- vp8_loop_filter_frame @1309
- vp8_loop_filter_frame_init @1310
- vp8_loop_filter_frame_yonly @1311
- vp8_loop_filter_horizontal_edge_c @1312
- vp8_loop_filter_horizontal_edge_mmx @1313
- vp8_loop_filter_horizontal_edge_sse2 @1314
- vp8_loop_filter_horizontal_edge_uv_sse2 @1315
- vp8_loop_filter_init @1316
- vp8_loop_filter_mbh @1317
- vp8_loop_filter_mbh_c @1318
- vp8_loop_filter_mbh_mmx @1319
- vp8_loop_filter_mbh_sse2 @1320
- vp8_loop_filter_mbv @1321
- vp8_loop_filter_mbv_c @1322
- vp8_loop_filter_mbv_mmx @1323
- vp8_loop_filter_mbv_sse2 @1324
- vp8_loop_filter_partial_frame @1325
- vp8_loop_filter_row_normal @1326
- vp8_loop_filter_row_simple @1327
- vp8_loop_filter_simple_bh @1328
- vp8_loop_filter_simple_bv @1329
- vp8_loop_filter_simple_horizontal_edge_c @1330
- vp8_loop_filter_simple_horizontal_edge_mmx @1331
- vp8_loop_filter_simple_horizontal_edge_sse2 @1332
- vp8_loop_filter_simple_mbh @1333
- vp8_loop_filter_simple_mbv @1334
- vp8_loop_filter_simple_vertical_edge_c @1335
- vp8_loop_filter_simple_vertical_edge_mmx @1336
- vp8_loop_filter_simple_vertical_edge_sse2 @1337
- vp8_loop_filter_update_sharpness @1338
- vp8_loop_filter_vertical_edge_c @1339
- vp8_loop_filter_vertical_edge_mmx @1340
- vp8_loop_filter_vertical_edge_sse2 @1341
- vp8_loop_filter_vertical_edge_uv_sse2 @1342
- vp8_loopfilter_frame @1343
- vp8_machine_specific_config @1344
- vp8_mb_feature_data_bits @1345
- vp8_mb_init_dequantizer @1346
- vp8_mbblock_error @1347
- vp8_mbblock_error_c @1348
- vp8_mbblock_error_mmx @1349
- vp8_mbblock_error_mmx_impl @1350
- vp8_mbblock_error_xmm @1351
- vp8_mbblock_error_xmm_impl @1352
- vp8_mbloop_filter_horizontal_edge_c @1353
- vp8_mbloop_filter_horizontal_edge_mmx @1354
- vp8_mbloop_filter_horizontal_edge_sse2 @1355
- vp8_mbloop_filter_horizontal_edge_uv_sse2 @1356
- vp8_mbloop_filter_vertical_edge_c @1357
- vp8_mbloop_filter_vertical_edge_mmx @1358
- vp8_mbloop_filter_vertical_edge_sse2 @1359
- vp8_mbloop_filter_vertical_edge_uv_sse2 @1360
- vp8_mbpost_proc_across_ip @1361
- vp8_mbpost_proc_across_ip_c @1362
- vp8_mbpost_proc_across_ip_xmm @1363
- vp8_mbpost_proc_down @1364
- vp8_mbpost_proc_down_c @1365
- vp8_mbpost_proc_down_mmx @1366
- vp8_mbpost_proc_down_xmm @1367
- vp8_mbsplit_count @1368
- vp8_mbsplit_encodings @1369
- vp8_mbsplit_offset @1370
- vp8_mbsplit_probs @1371
- vp8_mbsplit_tree @1372
- vp8_mbsplits @1373
- vp8_mbuverror @1374
- vp8_mbuverror_c @1375
- vp8_mbuverror_mmx @1376
- vp8_mbuverror_mmx_impl @1377
- vp8_mbuverror_xmm @1378
- vp8_mbuverror_xmm_impl @1379
- vp8_mode_contexts @1380
- vp8_mode_order @1381
- vp8_mse16x16 @1382
- vp8_mse16x16_c @1383
- vp8_mse16x16_mmx @1384
- vp8_mse16x16_wmt @1385
- vp8_mse2psnr @1386
- vp8_multiframe_quality_enhance @1387
- vp8_mv_bit_cost @1388
- vp8_mv_cont @1389
- vp8_mv_pred @1390
- vp8_mv_ref_encoding_array @1391
- vp8_mv_ref_probs @1392
- vp8_mv_ref_tree @1393
- vp8_mv_update_probs @1394
- vp8_new_framerate @1395
- vp8_norm @1396
- vp8_optimize_mbuv @1397
- vp8_optimize_mby @1398
- vp8_pack_bitstream @1399
- vp8_pack_tokens_c @1400
- vp8_pick_frame_size @1401
- vp8_pick_inter_mode @1402
- vp8_pick_intra_mode @1403
- vp8_plane_add_noise @1404
- vp8_plane_add_noise_c @1405
- vp8_plane_add_noise_mmx @1406
- vp8_plane_add_noise_wmt @1407
- vp8_post_proc_down_and_across_mb_row @1408
- vp8_post_proc_down_and_across_mb_row_c @1409
- vp8_post_proc_down_and_across_mb_row_sse2 @1410
- vp8_post_proc_frame @1411
- vp8_prev_token_class @1412
- vp8_prob_cost @1413
- vp8_quantize_mb_c @1414
- vp8_quantize_mbuv_c @1415
- vp8_quantize_mby_c @1416
- vp8_rd_pick_inter_mode @1417
- vp8_rd_pick_intra_mode @1418
- vp8_receive_raw_frame @1419
- vp8_ref_frame_order @1420
- vp8_refining_search_sad @1421
- vp8_refining_search_sad_c @1422
- vp8_refining_search_sadx4 @1423
- vp8_regular_quantize_b @1424
- vp8_regular_quantize_b_c @1425
- vp8_regular_quantize_b_pair_c @1426
- vp8_regular_quantize_b_sse2 @1427
- vp8_regulate_q @1428
- vp8_remove_common @1429
- vp8_remove_compressor @1430
- vp8_remove_decoder_instances @1431
- vp8_reset_mb_tokens_context @1432
- vp8_restore_coding_context @1433
- vp8_reverse_trans @1434
- vp8_rtcd @1435
- vp8_rv @1436
- vp8_sad16x16 @1437
- vp8_sad16x16_c @1438
- vp8_sad16x16_mmx @1439
- vp8_sad16x16_sse3 @1440
- vp8_sad16x16_wmt @1441
- vp8_sad16x16x3 @1442
- vp8_sad16x16x3_c @1443
- vp8_sad16x16x3_sse3 @1444
- vp8_sad16x16x3_ssse3 @1445
- vp8_sad16x16x4d @1446
- vp8_sad16x16x4d_c @1447
- vp8_sad16x16x4d_sse3 @1448
- vp8_sad16x16x8 @1449
- vp8_sad16x16x8_c @1450
- vp8_sad16x16x8_sse4 @1451
- vp8_sad16x8 @1452
- vp8_sad16x8_c @1453
- vp8_sad16x8_mmx @1454
- vp8_sad16x8_wmt @1455
- vp8_sad16x8x3 @1456
- vp8_sad16x8x3_c @1457
- vp8_sad16x8x3_sse3 @1458
- vp8_sad16x8x3_ssse3 @1459
- vp8_sad16x8x4d @1460
- vp8_sad16x8x4d_c @1461
- vp8_sad16x8x4d_sse3 @1462
- vp8_sad16x8x8 @1463
- vp8_sad16x8x8_c @1464
- vp8_sad16x8x8_sse4 @1465
- vp8_sad4x4 @1466
- vp8_sad4x4_c @1467
- vp8_sad4x4_mmx @1468
- vp8_sad4x4_wmt @1469
- vp8_sad4x4x3 @1470
- vp8_sad4x4x3_c @1471
- vp8_sad4x4x3_sse3 @1472
- vp8_sad4x4x4d @1473
- vp8_sad4x4x4d_c @1474
- vp8_sad4x4x4d_sse3 @1475
- vp8_sad4x4x8 @1476
- vp8_sad4x4x8_c @1477
- vp8_sad4x4x8_sse4 @1478
- vp8_sad8x16 @1479
- vp8_sad8x16_c @1480
- vp8_sad8x16_mmx @1481
- vp8_sad8x16_wmt @1482
- vp8_sad8x16x3 @1483
- vp8_sad8x16x3_c @1484
- vp8_sad8x16x3_sse3 @1485
- vp8_sad8x16x4d @1486
- vp8_sad8x16x4d_c @1487
- vp8_sad8x16x4d_sse3 @1488
- vp8_sad8x16x8 @1489
- vp8_sad8x16x8_c @1490
- vp8_sad8x16x8_sse4 @1491
- vp8_sad8x8 @1492
- vp8_sad8x8_c @1493
- vp8_sad8x8_mmx @1494
- vp8_sad8x8_wmt @1495
- vp8_sad8x8x3 @1496
- vp8_sad8x8x3_c @1497
- vp8_sad8x8x3_sse3 @1498
- vp8_sad8x8x4d @1499
- vp8_sad8x8x4d_c @1500
- vp8_sad8x8x4d_sse3 @1501
- vp8_sad8x8x8 @1502
- vp8_sad8x8x8_c @1503
- vp8_sad8x8x8_sse4 @1504
- vp8_save_coding_context @1505
- vp8_second_pass @1506
- vp8_set_active_map @1507
- vp8_set_internal_size @1508
- vp8_set_mbmode_and_mvs @1509
- vp8_set_quantizer @1510
- vp8_set_reference @1511
- vp8_set_roimap @1512
- vp8_set_speed_features @1513
- vp8_setup_block_dptrs @1514
- vp8_setup_block_ptrs @1515
- vp8_setup_intra_recon @1516
- vp8_setup_intra_recon_top_line @1517
- vp8_setup_key_frame @1518
- vp8_setup_version @1519
- vp8_short_fdct4x4 @1520
- vp8_short_fdct4x4_c @1521
- vp8_short_fdct4x4_mmx @1522
- vp8_short_fdct4x4_sse2 @1523
- vp8_short_fdct8x4 @1524
- vp8_short_fdct8x4_c @1525
- vp8_short_fdct8x4_mmx @1526
- vp8_short_fdct8x4_sse2 @1527
- vp8_short_idct4x4llm @1528
- vp8_short_idct4x4llm_c @1529
- vp8_short_idct4x4llm_mmx @1530
- vp8_short_inv_walsh4x4 @1531
- vp8_short_inv_walsh4x4_1_c @1532
- vp8_short_inv_walsh4x4_c @1533
- vp8_short_inv_walsh4x4_mmx @1534
- vp8_short_inv_walsh4x4_sse2 @1535
- vp8_short_walsh4x4 @1536
- vp8_short_walsh4x4_c @1537
- vp8_short_walsh4x4_sse2 @1538
- vp8_six_tap_mmx @1539
- vp8_sixtap_predict16x16 @1540
- vp8_sixtap_predict16x16_c @1541
- vp8_sixtap_predict16x16_mmx @1542
- vp8_sixtap_predict16x16_sse2 @1543
- vp8_sixtap_predict16x16_ssse3 @1544
- vp8_sixtap_predict4x4 @1545
- vp8_sixtap_predict4x4_c @1546
- vp8_sixtap_predict4x4_mmx @1547
- vp8_sixtap_predict4x4_ssse3 @1548
- vp8_sixtap_predict8x4 @1549
- vp8_sixtap_predict8x4_c @1550
- vp8_sixtap_predict8x4_mmx @1551
- vp8_sixtap_predict8x4_sse2 @1552
- vp8_sixtap_predict8x4_ssse3 @1553
- vp8_sixtap_predict8x8 @1554
- vp8_sixtap_predict8x8_c @1555
- vp8_sixtap_predict8x8_mmx @1556
- vp8_sixtap_predict8x8_sse2 @1557
- vp8_sixtap_predict8x8_ssse3 @1558
- vp8_skip_fractional_mv_step @1559
- vp8_small_mvencodings @1560
- vp8_small_mvtree @1561
- vp8_start_encode @1562
- vp8_stop_encode @1563
- vp8_strict_quantize_b_c @1564
- vp8_stuff_mb @1565
- vp8_sub_mv_ref_encoding_array @1566
- vp8_sub_mv_ref_prob2 @1567
- vp8_sub_mv_ref_prob3 @1568
- vp8_sub_mv_ref_tree @1569
- vp8_sub_pel_filters @1570
- vp8_sub_pixel_mse16x16 @1571
- vp8_sub_pixel_mse16x16_c @1572
- vp8_sub_pixel_mse16x16_mmx @1573
- vp8_sub_pixel_mse16x16_wmt @1574
- vp8_sub_pixel_variance16x16 @1575
- vp8_sub_pixel_variance16x16_c @1576
- vp8_sub_pixel_variance16x16_mmx @1577
- vp8_sub_pixel_variance16x16_ssse3 @1578
- vp8_sub_pixel_variance16x16_wmt @1579
- vp8_sub_pixel_variance16x8 @1580
- vp8_sub_pixel_variance16x8_c @1581
- vp8_sub_pixel_variance16x8_mmx @1582
- vp8_sub_pixel_variance16x8_ssse3 @1583
- vp8_sub_pixel_variance16x8_wmt @1584
- vp8_sub_pixel_variance4x4 @1585
- vp8_sub_pixel_variance4x4_c @1586
- vp8_sub_pixel_variance4x4_mmx @1587
- vp8_sub_pixel_variance4x4_wmt @1588
- vp8_sub_pixel_variance8x16 @1589
- vp8_sub_pixel_variance8x16_c @1590
- vp8_sub_pixel_variance8x16_mmx @1591
- vp8_sub_pixel_variance8x16_wmt @1592
- vp8_sub_pixel_variance8x8 @1593
- vp8_sub_pixel_variance8x8_c @1594
- vp8_sub_pixel_variance8x8_mmx @1595
- vp8_sub_pixel_variance8x8_wmt @1596
- vp8_subtract_b @1597
- vp8_subtract_b_c @1598
- vp8_subtract_b_mmx @1599
- vp8_subtract_b_mmx_impl @1600
- vp8_subtract_b_sse2 @1601
- vp8_subtract_b_sse2_impl @1602
- vp8_subtract_mbuv @1603
- vp8_subtract_mbuv_c @1604
- vp8_subtract_mbuv_mmx @1605
- vp8_subtract_mbuv_sse2 @1606
- vp8_subtract_mby @1607
- vp8_subtract_mby_c @1608
- vp8_subtract_mby_mmx @1609
- vp8_subtract_mby_sse2 @1610
- vp8_swap_yv12_buffer @1611
- vp8_temporal_filter_apply @1612
- vp8_temporal_filter_apply_c @1613
- vp8_temporal_filter_apply_sse2 @1614
- vp8_temporal_filter_prepare_c @1615
- vp8_tokenize_mb @1616
- vp8_tokens_from_tree @1617
- vp8_tokens_from_tree_offset @1618
- vp8_transform_intra_mby @1619
- vp8_transform_mbuv @1620
- vp8_tree_probs_from_distribution @1621
- vp8_unpack_block1d16_h6_sse2 @1622
- vp8_update_coef_probs @1623
- vp8_update_entropy @1624
- vp8_update_gf_useage_maps @1625
- vp8_update_rate_correction_factors @1626
- vp8_update_reference @1627
- vp8_update_zbin_extra @1628
- vp8_use_as_reference @1629
- vp8_uv_mode_encodings @1630
- vp8_uv_mode_prob @1631
- vp8_uv_mode_tree @1632
- vp8_variance16x16 @1633
- vp8_variance16x16_c @1634
- vp8_variance16x16_mmx @1635
- vp8_variance16x16_wmt @1636
- vp8_variance16x8 @1637
- vp8_variance16x8_c @1638
- vp8_variance16x8_mmx @1639
- vp8_variance16x8_wmt @1640
- vp8_variance4x4 @1641
- vp8_variance4x4_c @1642
- vp8_variance4x4_mmx @1643
- vp8_variance4x4_wmt @1644
- vp8_variance8x16 @1645
- vp8_variance8x16_c @1646
- vp8_variance8x16_mmx @1647
- vp8_variance8x16_wmt @1648
- vp8_variance8x8 @1649
- vp8_variance8x8_c @1650
- vp8_variance8x8_mmx @1651
- vp8_variance8x8_wmt @1652
- vp8_variance_and_sad_16x16_sse2 @1653
- vp8_variance_halfpixvar16x16_h @1654
- vp8_variance_halfpixvar16x16_h_c @1655
- vp8_variance_halfpixvar16x16_h_mmx @1656
- vp8_variance_halfpixvar16x16_h_wmt @1657
- vp8_variance_halfpixvar16x16_hv @1658
- vp8_variance_halfpixvar16x16_hv_c @1659
- vp8_variance_halfpixvar16x16_hv_mmx @1660
- vp8_variance_halfpixvar16x16_hv_wmt @1661
- vp8_variance_halfpixvar16x16_v @1662
- vp8_variance_halfpixvar16x16_v_c @1663
- vp8_variance_halfpixvar16x16_v_mmx @1664
- vp8_variance_halfpixvar16x16_v_wmt @1665
- vp8_vertical_band_2_1_scale_c @1666
- vp8_vertical_band_2_1_scale_i_c @1667
- vp8_vertical_band_5_3_scale_c @1668
- vp8_vertical_band_5_4_scale_c @1669
- vp8_write_mvprobs @1670
- vp8_ymode_encodings @1671
- vp8_ymode_prob @1672
- vp8_ymode_tree @1673
- vp8_yv12_alloc_frame_buffer @1674
- vp8_yv12_copy_frame_c @1675
- vp8_yv12_copy_partial_frame_c @1676
- vp8_yv12_de_alloc_frame_buffer @1677
- vp8_yv12_extend_frame_borders_c @1678
- vp8_yv12_realloc_frame_buffer @1679
- vp8cx_base_skip_false_prob @1680
- vp8cx_create_encoder_threads @1681
- vp8cx_encode_inter_macroblock @1682
- vp8cx_encode_intra_macroblock @1683
- vp8cx_frame_init_quantizer @1684
- vp8cx_init_de_quantizer @1685
- vp8cx_init_mbrthread_data @1686
- vp8cx_init_quantizer @1687
- vp8cx_initialize_me_consts @1688
- vp8cx_mb_init_quantizer @1689
- vp8cx_pick_filter_level @1690
- vp8cx_pick_filter_level_fast @1691
- vp8cx_remove_encoder_threads @1692
- vp8cx_set_alt_lf_level @1693
- vp8dx_bool_decoder_fill @1694
- vp8dx_get_raw_frame @1695
- vp8dx_get_reference @1696
- vp8dx_receive_compressed_data @1697
- vp8dx_references_buffer @1698
- vp8dx_set_reference @1699
- vp8dx_start_decode @1700
- vp8mt_alloc_temp_buffers @1701
- vp8mt_de_alloc_temp_buffers @1702
- vp8mt_decode_mb_rows @1703
- vp9_alloc_frame_buffer @1704
- vp9_extend_frame_borders_c @1705
- vp9_extend_frame_inner_borders_c @1706
- vp9_free_frame_buffer @1707
- vp9_realloc_frame_buffer @1708
- vpx_calloc @1709
- vpx_codec_control_ @1710
- vpx_codec_dec_init_ver @1711
- vpx_codec_decode @1712
- vpx_codec_destroy @1713
- vpx_codec_enc_config_default @1714
- vpx_codec_enc_config_set @1715
- vpx_codec_enc_init_multi_ver @1716
- vpx_codec_enc_init_ver @1717
- vpx_codec_encode @1718
- vpx_codec_err_to_string @1719
- vpx_codec_error @1720
- vpx_codec_error_detail @1721
- vpx_codec_get_caps @1722
- vpx_codec_get_cx_data @1723
- vpx_codec_get_frame @1724
- vpx_codec_get_global_headers @1725
- vpx_codec_get_mem_map @1726
- vpx_codec_get_preview_frame @1727
- vpx_codec_get_stream_info @1728
- vpx_codec_iface_name @1729
- vpx_codec_peek_stream_info @1730
- vpx_codec_pkt_list_add @1731
- vpx_codec_pkt_list_get @1732
- vpx_codec_register_put_frame_cb @1733
- vpx_codec_register_put_slice_cb @1734
- vpx_codec_set_cx_data_buf @1735
- vpx_codec_set_mem_map @1736
- vpx_codec_version @1737
- vpx_codec_version_extra_str @1738
- vpx_codec_version_str @1739
- vpx_codec_vp8_cx @1740
- vpx_codec_vp8_cx_algo @1741
- vpx_codec_vp8_dx @1742
- vpx_codec_vp8_dx_algo @1743
- vpx_free @1744
- vpx_malloc @1745
- vpx_mem_get_version @1746
- vpx_mem_set_functions @1747
- vpx_mem_set_heap_size @1748
- vpx_mem_unset_functions @1749
- vpx_memalign @1750
- vpx_memcpy @1751
- vpx_memmove @1752
- vpx_memset @1753
- vpx_mmap_alloc @1754
- vpx_mmap_dtor @1755
- vpx_realloc @1756
- vpx_reset_mmx_state @1757
- vpx_scale_frame @1758
- vpx_scale_rtcd @1759
- vpx_validate_mmaps @1760
- vpx_yv12_copy_y_c @1761
- write_cryptpacket @1762
diff --git a/protocols/Tox/tox/lib/x86/libtox.exp b/protocols/Tox/tox/lib/x86/libtox.exp
deleted file mode 100644
index 79981ba88e..0000000000
--- a/protocols/Tox/tox/lib/x86/libtox.exp
+++ /dev/null
Binary files differ
diff --git a/protocols/Tox/tox/lib/x86/libtox.lib b/protocols/Tox/tox/lib/x86/libtox.lib
deleted file mode 100644
index 555823149e..0000000000
--- a/protocols/Tox/tox/lib/x86/libtox.lib
+++ /dev/null
Binary files differ