From f1f8a71bd4df7f239e28a9625b82ee02428c3f3f Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Sat, 3 Jan 2015 08:12:27 +0000 Subject: Tox: work commit - removed *.lib and lib generator - disabled profile encryption and import - loading tox profile on connection - project reordering - http proxy support git-svn-id: http://svn.miranda-ng.org/main/trunk@11730 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tox/Tox_12.vcxproj | 37 +- protocols/Tox/Tox_12.vcxproj.filters | 24 + protocols/Tox/bin/x64/libtox.dll | Bin 0 -> 3947782 bytes protocols/Tox/bin/x86/libtox.dll | Bin 0 -> 3293572 bytes protocols/Tox/include/tox.h | 951 +++++++++++ protocols/Tox/include/toxav.h | 329 ++++ protocols/Tox/include/toxdns.h | 96 ++ protocols/Tox/include/toxencryptsave.h | 196 +++ protocols/Tox/res/resource.rc | 20 +- protocols/Tox/src/api_avatars.cpp | 48 + protocols/Tox/src/api_connection.cpp | 28 + protocols/Tox/src/api_dns.cpp | 23 + protocols/Tox/src/api_encryption.cpp | 88 + protocols/Tox/src/api_groupchats.cpp | 88 + protocols/Tox/src/api_main.cpp | 252 +++ protocols/Tox/src/api_transfer.cpp | 43 + protocols/Tox/src/tox_account.cpp | 100 +- protocols/Tox/src/tox_accounts.cpp | 14 +- protocols/Tox/src/tox_api.cpp | 561 ------- protocols/Tox/src/tox_avatars.cpp | 37 +- protocols/Tox/src/tox_events.cpp | 12 +- protocols/Tox/src/tox_options.cpp | 30 +- protocols/Tox/src/tox_profile.cpp | 56 +- protocols/Tox/src/tox_proto.cpp | 9 +- protocols/Tox/src/tox_proto.h | 3 +- protocols/Tox/src/tox_utils.cpp | 2 +- protocols/Tox/tox/README.md | 18 - protocols/Tox/tox/deflibcreator/as.exe | Bin 792360 -> 0 bytes protocols/Tox/tox/deflibcreator/as64.exe | Bin 1510620 -> 0 bytes protocols/Tox/tox/deflibcreator/deflibcreator.exe | Bin 77824 -> 0 bytes protocols/Tox/tox/deflibcreator/dlltool.exe | Bin 611153 -> 0 bytes protocols/Tox/tox/deflibcreator/dlltool64.exe | Bin 1023386 -> 0 bytes protocols/Tox/tox/deflibcreator/link.exe | Bin 733440 -> 0 bytes protocols/Tox/tox/deflibcreator/link.exe.manifest | 11 - protocols/Tox/tox/deflibcreator/mspdb80.dll | Bin 173056 -> 0 bytes .../Tox/tox/deflibcreator/mspdb80.dll.2.manifest | 11 - protocols/Tox/tox/deflibcreator/src/build.cmd | 5 - .../Tox/tox/deflibcreator/src/deflib.manifest | 8 - .../Tox/tox/deflibcreator/src/deflibcreator.cpp | 310 ---- protocols/Tox/tox/deflibcreator/src/dlc.ico | Bin 34494 -> 0 bytes protocols/Tox/tox/deflibcreator/src/resource.rc | 94 -- protocols/Tox/tox/dll/x64/libtox.dll | Bin 3854890 -> 0 bytes protocols/Tox/tox/dll/x86/libtox.dll | Bin 3220556 -> 0 bytes protocols/Tox/tox/generate_libs.cmd | 4 - protocols/Tox/tox/include/tox.h | 887 ---------- protocols/Tox/tox/include/toxav.h | 389 ----- protocols/Tox/tox/include/toxdns.h | 96 -- protocols/Tox/tox/include/toxencryptsave.h | 74 - protocols/Tox/tox/lib/x64/libtox-x64.exp | Bin 223873 -> 0 bytes protocols/Tox/tox/lib/x64/libtox-x64.lib | Bin 368158 -> 0 bytes protocols/Tox/tox/lib/x64/libtox.def | 1617 ------------------ protocols/Tox/tox/lib/x86/libtox.def | 1765 -------------------- protocols/Tox/tox/lib/x86/libtox.exp | Bin 249739 -> 0 bytes protocols/Tox/tox/lib/x86/libtox.lib | Bin 413236 -> 0 bytes 54 files changed, 2340 insertions(+), 5996 deletions(-) create mode 100644 protocols/Tox/bin/x64/libtox.dll create mode 100644 protocols/Tox/bin/x86/libtox.dll create mode 100644 protocols/Tox/include/tox.h create mode 100644 protocols/Tox/include/toxav.h create mode 100644 protocols/Tox/include/toxdns.h create mode 100644 protocols/Tox/include/toxencryptsave.h create mode 100644 protocols/Tox/src/api_avatars.cpp create mode 100644 protocols/Tox/src/api_connection.cpp create mode 100644 protocols/Tox/src/api_dns.cpp create mode 100644 protocols/Tox/src/api_encryption.cpp create mode 100644 protocols/Tox/src/api_groupchats.cpp create mode 100644 protocols/Tox/src/api_main.cpp create mode 100644 protocols/Tox/src/api_transfer.cpp delete mode 100644 protocols/Tox/src/tox_api.cpp delete mode 100644 protocols/Tox/tox/README.md delete mode 100644 protocols/Tox/tox/deflibcreator/as.exe delete mode 100644 protocols/Tox/tox/deflibcreator/as64.exe delete mode 100644 protocols/Tox/tox/deflibcreator/deflibcreator.exe delete mode 100644 protocols/Tox/tox/deflibcreator/dlltool.exe delete mode 100644 protocols/Tox/tox/deflibcreator/dlltool64.exe delete mode 100644 protocols/Tox/tox/deflibcreator/link.exe delete mode 100644 protocols/Tox/tox/deflibcreator/link.exe.manifest delete mode 100644 protocols/Tox/tox/deflibcreator/mspdb80.dll delete mode 100644 protocols/Tox/tox/deflibcreator/mspdb80.dll.2.manifest delete mode 100644 protocols/Tox/tox/deflibcreator/src/build.cmd delete mode 100644 protocols/Tox/tox/deflibcreator/src/deflib.manifest delete mode 100644 protocols/Tox/tox/deflibcreator/src/deflibcreator.cpp delete mode 100644 protocols/Tox/tox/deflibcreator/src/dlc.ico delete mode 100644 protocols/Tox/tox/deflibcreator/src/resource.rc delete mode 100644 protocols/Tox/tox/dll/x64/libtox.dll delete mode 100644 protocols/Tox/tox/dll/x86/libtox.dll delete mode 100644 protocols/Tox/tox/generate_libs.cmd delete mode 100644 protocols/Tox/tox/include/tox.h delete mode 100644 protocols/Tox/tox/include/toxav.h delete mode 100644 protocols/Tox/tox/include/toxdns.h delete mode 100644 protocols/Tox/tox/include/toxencryptsave.h delete mode 100644 protocols/Tox/tox/lib/x64/libtox-x64.exp delete mode 100644 protocols/Tox/tox/lib/x64/libtox-x64.lib delete mode 100644 protocols/Tox/tox/lib/x64/libtox.def delete mode 100644 protocols/Tox/tox/lib/x86/libtox.def delete mode 100644 protocols/Tox/tox/lib/x86/libtox.exp delete mode 100644 protocols/Tox/tox/lib/x86/libtox.lib (limited to 'protocols') 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 @@ Level3 Disabled _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true 4996;%(DisableSpecificWarnings) @@ -93,18 +93,18 @@ Windows true - tox\lib\x86;$(ProfileDir)..\..\bin12\lib + $(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib false false - ws2_32.lib;dnsapi.lib;libtox.lib;%(AdditionalDependencies) + ws2_32.lib;dnsapi.lib;%(AdditionalDependencies) _DEBUG;%(PreprocessorDefinitions) ..\..\include\msapi - xcopy tox\dll\x86\*.dll "$(SolutionDir)$(Configuration)" /Y + copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)\libtox.dll" /y @@ -112,7 +112,7 @@ Level3 Disabled _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) false true 4996;%(DisableSpecificWarnings) @@ -123,9 +123,9 @@ Windows true - tox\lib\x64;$(ProfileDir)..\..\bin12\lib + $(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib - dnsapi.lib;libtox-x64.lib;%(AdditionalDependencies) + dnsapi.lib;%(AdditionalDependencies) false @@ -133,7 +133,7 @@ ..\..\include\msapi - xcopy tox\dll\x64\*.dll "$(SolutionDir)$(Configuration)64" /Y + copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)64\libtox.dll" /y @@ -143,7 +143,7 @@ true true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) 4996;%(DisableSpecificWarnings) Use common.h @@ -154,16 +154,16 @@ true true false - tox\lib\x86;$(ProfileDir)..\..\bin12\lib + $(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib - dnsapi.lib;libtox.lib;%(AdditionalDependencies) + dnsapi.lib;%(AdditionalDependencies) NDEBUG;%(PreprocessorDefinitions) ..\..\include\msapi - xcopy tox\dll\x86\*.dll "$(SolutionDir)$(Configuration)" /Y + copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)\libtox.dll" /y @@ -173,7 +173,7 @@ true true NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - tox\include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + include;..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) 4996;%(DisableSpecificWarnings) Use common.h @@ -185,7 +185,7 @@ true false dnsapi.lib;libtox-x64.lib;%(AdditionalDependencies) - tox\lib\x64;$(ProfileDir)..\..\bin12\lib + $(ProfileDir)..\..\bin12\lib $(IntDir)$(TargetName).lib @@ -193,7 +193,7 @@ ..\..\include\msapi - xcopy tox\dll\x64\*.dll "$(SolutionDir)$(Configuration)64" /Y + copy bin\$(PlatformTarget)\libtox.dll "$(SolutionDir)$(Configuration)64\libtox.dll" /y @@ -205,6 +205,13 @@ + + + + + + + Create 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 @@ {b818611d-200d-4eb8-be7a-f15b396ae26d} + + {87c3094c-c0d1-4179-856d-55d02a4450cc} + @@ -77,6 +80,27 @@ Source Files + + Source Files\api + + + Source Files\api + + + Source Files\api + + + Source Files\api + + + Source Files\api + + + Source Files\api + + + Source Files\api + diff --git a/protocols/Tox/bin/x64/libtox.dll b/protocols/Tox/bin/x64/libtox.dll new file mode 100644 index 0000000000..0bb4918bfe Binary files /dev/null and b/protocols/Tox/bin/x64/libtox.dll differ diff --git a/protocols/Tox/bin/x86/libtox.dll b/protocols/Tox/bin/x86/libtox.dll new file mode 100644 index 0000000000..307215fbbf Binary files /dev/null and b/protocols/Tox/bin/x86/libtox.dll differ diff --git a/protocols/Tox/include/tox.h b/protocols/Tox/include/tox.h new file mode 100644 index 0000000000..db1b10331c --- /dev/null +++ b/protocols/Tox/include/tox.h @@ -0,0 +1,951 @@ +/* tox.h + * + * The Tox public API. + * + * Copyright (C) 2013 Tox project All Rights Reserved. + * + * This file is part of Tox. + * + * Tox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tox is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tox. If not, see . + * + */ + +#ifndef TOX_H +#define TOX_H + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +#define TOX_MAX_NAME_LENGTH 128 + +/* Maximum length of single messages after which they should be split. */ +#define TOX_MAX_MESSAGE_LENGTH 1368 +#define TOX_MAX_STATUSMESSAGE_LENGTH 1007 +#define TOX_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 + +#define TOX_FRIEND_ADDRESS_SIZE (TOX_CLIENT_ID_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) + +#define TOX_ENABLE_IPV6_DEFAULT 1 + +#define TOX_ENC_SAVE_MAGIC_NUMBER "toxEsave" +#define TOX_ENC_SAVE_MAGIC_LENGTH 8 + +/* Errors for m_addfriend + * FAERR - Friend Add Error + */ +enum { + TOX_FAERR_TOOLONG = -1, + TOX_FAERR_NOMESSAGE = -2, + TOX_FAERR_OWNKEY = -3, + TOX_FAERR_ALREADYSENT = -4, + TOX_FAERR_UNKNOWN = -5, + TOX_FAERR_BADCHECKSUM = -6, + TOX_FAERR_SETNEWNOSPAM = -7, + TOX_FAERR_NOMEM = -8 +}; + +/* USERSTATUS - + * Represents userstatuses someone can have. + */ +typedef enum { + TOX_USERSTATUS_NONE, + TOX_USERSTATUS_AWAY, + TOX_USERSTATUS_BUSY, + TOX_USERSTATUS_INVALID +} +TOX_USERSTATUS; + + +/* AVATAR_FORMAT - + * Data formats for user avatar images + */ +typedef enum { + TOX_AVATAR_FORMAT_NONE = 0, + TOX_AVATAR_FORMAT_PNG +} +TOX_AVATAR_FORMAT; + +#ifndef __TOX_DEFINED__ +#define __TOX_DEFINED__ +typedef struct Tox Tox; +#endif + +/* NOTE: Strings in Tox are all UTF-8, (This means that there is no terminating NULL character.) + * + * The exact buffer you send will be received at the other end without modification. + * + * Do not treat Tox strings as C strings. + */ + +/* return TOX_FRIEND_ADDRESS_SIZE byte address to give to others. + * format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)] + */ +void tox_get_address(const Tox *tox, uint8_t *address); + +/* Add a friend. + * Set the data that will be sent along with friend request. + * address is the address of the friend (returned by getaddress of the friend you wish to add) it must be TOX_FRIEND_ADDRESS_SIZE bytes. TODO: add checksum. + * data is the data and length is the length (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. + * return TOX_FAERR_NOMESSAGE if no message (message length must be >= 1 byte). + * return TOX_FAERR_OWNKEY if user's own key. + * return TOX_FAERR_ALREADYSENT if friend request already sent or already a friend. + * return TOX_FAERR_UNKNOWN for unknown error. + * return TOX_FAERR_BADCHECKSUM if bad checksum in address. + * return TOX_FAERR_SETNEWNOSPAM if the friend was already there but the nospam was different. + * (the nospam for that friend was set to the new one). + * return TOX_FAERR_NOMEM if increasing the friend list size fails. + */ +int32_t tox_add_friend(Tox *tox, const uint8_t *address, const uint8_t *data, uint16_t length); + + +/* Add a friend without sending a friendrequest. + * return the friend number if success. + * return -1 if failure. + */ +int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id); + +/* return the friend number associated to that client id. + return -1 if no such friend */ +int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id); + +/* Copies the public key associated to that friend id into client_id buffer. + * Make sure that client_id is of size CLIENT_ID_SIZE. + * return 0 if success. + * return -1 if failure. + */ +int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id); + +/* Remove a friend. + * + * return 0 if success. + * return -1 if failure. + */ +int tox_del_friend(Tox *tox, int32_t friendnumber); + +/* Checks friend's connecting status. + * + * return 1 if friend is connected to us (Online). + * return 0 if friend is not connected to us (Offline). + * return -1 on failure. + */ +int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber); + +/* Checks if there exists a friend with given friendnumber. + * + * return 1 if friend exists. + * return 0 if friend doesn't exist. + */ +int tox_friend_exists(const Tox *tox, int32_t friendnumber); + +/* Send a text chat message to an online friend. + * + * return the message id if packet was successfully put into the send queue. + * return 0 if it was not. + * + * maximum length of messages is TOX_MAX_MESSAGE_LENGTH, your client must split larger messages + * or else sending them will not work. No the core will not split messages for you because that + * requires me to parse UTF-8. + * + * You will want to retain the return value, it will be passed to your read_receipt callback + * if one is received. + */ +uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length); + +/* Send an action to an online friend. + * + * return the message id if packet was successfully put into the send queue. + * return 0 if it was not. + * + * maximum length of actions is TOX_MAX_MESSAGE_LENGTH, your client must split larger actions + * or else sending them will not work. No the core will not split actions for you because that + * requires me to parse UTF-8. + * + * You will want to retain the return value, it will be passed to your read_receipt callback + * if one is received. + */ +uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length); + +/* Set our nickname. + * name must be a string of maximum MAX_NAME_LENGTH length. + * length must be at least 1 byte. + * length is the length of name. + * + * return 0 if success. + * return -1 if failure. + */ +int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length); + +/* + * Get your nickname. + * m - The messenger context to use. + * name - needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. + * + * return length of name. + * return 0 on error. + */ +uint16_t tox_get_self_name(const Tox *tox, uint8_t *name); + +/* Get name of friendnumber and put it in name. + * name needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. + * + * return length of name if success. + * return -1 if failure. + */ +int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name); + +/* returns the length of name on success. + * returns -1 on failure. + */ +int tox_get_name_size(const Tox *tox, int32_t friendnumber); +int tox_get_self_name_size(const Tox *tox); + +/* Set our user status. + * + * userstatus must be one of TOX_USERSTATUS values. + * max length of the status is TOX_MAX_STATUSMESSAGE_LENGTH. + * + * returns 0 on success. + * returns -1 on failure. + */ +int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length); +int tox_set_user_status(Tox *tox, uint8_t userstatus); + +/* returns the length of status message on success. + * returns -1 on failure. + */ +int tox_get_status_message_size(const Tox *tox, int32_t friendnumber); +int tox_get_self_status_message_size(const Tox *tox); + +/* Copy friendnumber's status message into buf, truncating if size is over maxlen. + * Get the size you need to allocate from m_get_statusmessage_size. + * The self variant will copy our own status message. + * + * returns the length of the copied data on success + * retruns -1 on failure. + */ +int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen); +int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen); + +/* return one of TOX_USERSTATUS values. + * Values unknown to your application should be represented as TOX_USERSTATUS_NONE. + * As above, the self variant will return our own TOX_USERSTATUS. + * If friendnumber is invalid, this shall return TOX_USERSTATUS_INVALID. + */ +uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber); +uint8_t tox_get_self_user_status(const Tox *tox); + +/* returns timestamp of last time friendnumber was seen online, or 0 if never seen. + * returns -1 on error. + */ +uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber); + +/* Set our typing status for a friend. + * You are responsible for turning it on or off. + * + * returns 0 on success. + * returns -1 on failure. + */ +int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing); + +/* Get the typing status of a friend. + * + * returns 0 if friend is not typing. + * returns 1 if friend is typing. + */ +uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber); + +/* Return the number of friends in the instance m. + * You should use this to determine how much memory to allocate + * for copy_friendlist. */ +uint32_t tox_count_friendlist(const Tox *tox); + +/* Return the number of online friends in the instance m. */ +uint32_t tox_get_num_online_friends(const Tox *tox); + +/* Copy a list of valid friend IDs into the array out_list. + * If out_list is NULL, returns 0. + * Otherwise, returns the number of elements copied. + * If the array was too small, the contents + * of out_list will be truncated to list_size. */ +uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size); + +/* Set the function that will be executed when a friend request is received. + * Function format is function(Tox *tox, 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, 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, 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, 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, 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 *), + void *userdata); + +/* Set the callback for status type changes. + * function(Tox *tox, int32_t friendnumber, uint8_t TOX_USERSTATUS, void *userdata) + */ +void tox_callback_user_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + +/* Set the callback for typing changes. + * function (Tox *tox, int32_t friendnumber, uint8_t is_typing, void *userdata) + */ +void tox_callback_typing_change(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + +/* Set the callback for read receipts. + * function(Tox *tox, int32_t friendnumber, uint32_t receipt, void *userdata) + * + * If you are keeping a record of returns from m_sendmessage; + * receipt might be one of those values, meaning the message + * has been received on the other side. + * Since core doesn't track ids for you, receipt may not correspond to any message. + * In that case, you should discard it. + */ +void tox_callback_read_receipt(Tox *tox, void (*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata); + +/* Set the callback for connection status changes. + * function(Tox *tox, int32_t friendnumber, uint8_t status, void *userdata) + * + * Status: + * 0 -- friend went offline after being previously online + * 1 -- friend went online + * + * NOTE: This callback is not called when adding friends, thus the "after + * being previously online" part. it's assumed that when adding friends, + * their connection status is offline. + */ +void tox_callback_connection_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); + + +/**********ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) ************/ + +/* Functions to get/set the nospam part of the id. + */ +uint32_t tox_get_nospam(const Tox *tox); +void tox_set_nospam(Tox *tox, uint32_t nospam); + +/* Copy the public and secret key from the Tox object. + public_key and secret_key must be 32 bytes big. + if the pointer is NULL, no data will be copied to it.*/ +void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key); + +/* Maximum size of custom packets. */ +#define TOX_MAX_CUSTOM_PACKET_SIZE 1373 + +/* Set handlers for custom lossy packets. + * Set the function to be called when friend sends us a lossy packet starting with byte. + * byte must be in the 200-254 range. + * + * NOTE: lossy packets behave like UDP packets meaning they might never reach the other side + * or might arrive more than once (if someone is messing with the connection) or might arrive + * in the wrong order. + * + * Unless latency is an issue, it is recommended that you use lossless packets instead. + * + * return -1 on failure. + * return 0 on success. + */ +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); + +/* Function to send custom lossy packets. + * First byte of data must be in the range: 200-254. + * + * return -1 on failure. + * return 0 on success. + */ +int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length); + +/* Set handlers for custom lossless packets. + * Set the function to be called when friend sends us a lossless packet starting with byte. + * byte must be in the 160-191 range. + * + * Lossless packets behave kind of like TCP (reliability, arrive in order.) but with packets instead of a stream. + * + * return -1 on failure. + * return 0 on success. + */ +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); + +/* Function to send custom lossless packets. + * First byte of data must be in the range: 160-191. + * + * return -1 on failure. + * return 0 on success. + */ +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 ************/ + +/* 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 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, uint8_t, const uint8_t *, uint16_t, + void *), void *userdata); + +/* Set the callback for group messages. + * + * 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 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) + * Function(Tox *tox, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) + */ +typedef enum { + TOX_CHAT_CHANGE_PEER_ADD, + TOX_CHAT_CHANGE_PEER_DEL, + TOX_CHAT_CHANGE_PEER_NAME, +} TOX_CHAT_CHANGE; + +void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), + void *userdata); + +/* Creates a new groupchat and puts it in the chats array. + * + * return group number on success. + * return -1 on failure. + */ +int tox_add_groupchat(Tox *tox); + +/* Delete a groupchat from the chats array. + * + * return 0 on success. + * return -1 if failure. + */ +int tox_del_groupchat(Tox *tox, int groupnumber); + +/* Copy the name of peernumber who is in groupnumber to name. + * name must be at least TOX_MAX_NAME_LENGTH long. + * + * return length of name if success + * return -1 if failure + */ +int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name); + +/* 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 + */ +int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber); + +/* Join a group (you need to have been invited first.) using data of length obtained + * in the group invite callback. + * + * returns group number on success + * returns -1 on failure. + */ +int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length); + +/* send a group message + * return 0 on success + * return -1 on failure + */ +int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint16_t length); + +/* send a group action + * return 0 on success + * return -1 on failure + */ +int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, 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 + */ +int tox_group_number_peers(const Tox *tox, int groupnumber); + +/* List all the peers in the group chat. + * + * Copies the names of the peers to the name[length][TOX_MAX_NAME_LENGTH] array. + * + * Copies the lengths of the names to lengths[length] + * + * returns the number of peers on success. + * + * return -1 on failure. + */ +int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], + uint16_t length); + +/* Return the number of chats in the instance m. + * You should use this to determine how much memory to allocate + * for copy_chatlist. */ +uint32_t tox_count_chatlist(const Tox *tox); + +/* Copy a list of valid chat IDs into the array out_list. + * If out_list is NULL, returns 0. + * Otherwise, returns the number of elements copied. + * If the array was too small, the contents + * of out_list will be truncated to list_size. */ +uint32_t tox_get_chatlist(const Tox *tox, 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*****************/ + +/* Set the callback function for avatar information. + * This callback will be called when avatar information are received from friends. These events + * can arrive at anytime, but are usually received uppon connection and in reply of avatar + * information requests. + * + * Function format is: + * function(Tox *tox, int32_t friendnumber, uint8_t format, uint8_t *hash, void *userdata) + * + * where 'format' is the avatar image format (see TOX_AVATAR_FORMAT) and 'hash' is the hash of + * the avatar data for caching purposes and it is exactly TOX_HASH_LENGTH long. If the image + * format is NONE, the hash is zeroed. + * + */ +void tox_callback_avatar_info(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, uint8_t *, void *), + void *userdata); + + +/* Set the callback function for avatar data. + * This callback will be called when the complete avatar data was correctly received from a + * friend. This only happens in reply of a avatar data request (see tox_request_avatar_data); + * + * Function format is: + * function(Tox *tox, int32_t friendnumber, uint8_t format, uint8_t *hash, uint8_t *data, uint32_t datalen, void *userdata) + * + * where 'format' is the avatar image format (see TOX_AVATAR_FORMAT); 'hash' is the + * locally-calculated cryptographic hash of the avatar data and it is exactly + * TOX_HASH_LENGTH long; 'data' is the avatar image data and 'datalen' is the length + * of such data. + * + * If format is NONE, 'data' is NULL, 'datalen' is zero, and the hash is zeroed. The hash is + * always validated locally with the function tox_hash and ensured to match the image data, + * so this value can be safely used to compare with cached avatars. + * + * WARNING: users MUST treat all avatar image data received from another peer as untrusted and + * potentially malicious. The library only ensures that the data which arrived is the same the + * other user sent, and does not interpret or validate any image data. + */ +void tox_callback_avatar_data(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, uint8_t *, uint8_t *, uint32_t, + void *), void *userdata); + +/* Set the user avatar image data. + * This should be made before connecting, so we will not announce that the user have no avatar + * before setting and announcing a new one, forcing the peers to re-download it. + * + * Notice that the library treats the image as raw data and does not interpret it by any way. + * + * Arguments: + * format - Avatar image format or NONE for user with no avatar (see TOX_AVATAR_FORMAT); + * data - pointer to the avatar data (may be NULL it the format is NONE); + * length - length of image data. Must be <= TOX_AVATAR_MAX_DATA_LENGTH. + * + * returns 0 on success + * returns -1 on failure. + */ +int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length); + +/* Unsets the user avatar. + + returns 0 on success (currently always returns 0) */ +int tox_unset_avatar(Tox *tox); + +/* Get avatar data from the current user. + * Copies the current user avatar data to the destination buffer and sets the image format + * accordingly. + * + * If the avatar format is NONE, the buffer 'buf' isleft uninitialized, 'hash' is zeroed, and + * 'length' is set to zero. + * + * If any of the pointers format, buf, length, and hash are NULL, that particular field will be ignored. + * + * Arguments: + * format - destination pointer to the avatar image format (see TOX_AVATAR_FORMAT); + * buf - destination buffer to the image data. Must have at least 'maxlen' bytes; + * length - destination pointer to the image data length; + * maxlen - length of the destination buffer 'buf'; + * hash - destination pointer to the avatar hash (it must be exactly TOX_HASH_LENGTH bytes long). + * + * returns 0 on success; + * returns -1 on failure. + * + */ +int tox_get_self_avatar(const Tox *tox, uint8_t *format, uint8_t *buf, uint32_t *length, uint32_t maxlen, + uint8_t *hash); + + +/* Generates a cryptographic hash of the given data. + * This function may be used by clients for any purpose, but is provided primarily for + * validating cached avatars. This use is highly recommended to avoid unnecessary avatar + * updates. + * This function is a wrapper to internal message-digest functions. + * + * Arguments: + * hash - destination buffer for the hash data, it must be exactly TOX_HASH_LENGTH bytes long. + * data - data to be hashed; + * datalen - length of the data; for avatars, should be TOX_AVATAR_MAX_DATA_LENGTH + * + * returns 0 on success + * returns -1 on failure. + */ +int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen); + +/* Request avatar information from a friend. + * Asks a friend to provide their avatar information (image format and hash). The friend may + * or may not answer this request and, if answered, the information will be provided through + * the callback 'avatar_info'. + * + * returns 0 on success + * returns -1 on failure. + */ +int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber); + + +/* Send an unrequested avatar information to a friend. + * Sends our avatar format and hash to a friend; he/she can use this information to validate + * an avatar from the cache and may (or not) reply with an avatar data request. + * + * Notice: it is NOT necessary to send these notification after changing the avatar or + * connecting. The library already does this. + * + * returns 0 on success + * returns -1 on failure. + */ +int tox_send_avatar_info(Tox *tox, const int32_t friendnumber); + + +/* Request the avatar data from a friend. + * Ask a friend to send their avatar data. The friend may or may not answer this request and, + * if answered, the information will be provided in callback 'avatar_data'. + * + * returns 0 on sucess + * returns -1 on failure. + */ +int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber); + +/****************FILE SENDING FUNCTIONS*****************/ +/* NOTE: This how to will be updated. + * + * HOW TO SEND FILES CORRECTLY: + * 1. Use tox_new_file_sender(...) to create a new file sender. + * 2. Wait for the callback set with tox_callback_file_control(...) to be called with receive_send == 1 and control_type == TOX_FILECONTROL_ACCEPT + * 3. Send the data with tox_file_send_data(...) with chunk size tox_file_data_size(...) + * 4. When sending is done, send a tox_file_send_control(...) with send_receive = 0 and message_id = TOX_FILECONTROL_FINISHED + * 5. when the callback set with tox_callback_file_control(...) is called with receive_send == 1 and control_type == TOX_FILECONTROL_FINISHED + * the other person has received the file correctly. + * + * HOW TO RECEIVE FILES CORRECTLY: + * 1. wait for the callback set with tox_callback_file_send_request(...) + * 2. accept or refuse the connection with tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_ACCEPT or TOX_FILECONTROL_KILL + * 3. save all the data received with the callback set with tox_callback_file_data(...) to a file. + * 4. when the callback set with tox_callback_file_control(...) is called with receive_send == 0 and control_type == TOX_FILECONTROL_FINISHED + * the file is done transferring. + * 5. send a tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_FINISHED to confirm that we did receive the file. + * + * tox_file_data_remaining(...) can be used to know how many bytes are left to send/receive. + * + * If the connection breaks during file sending (The other person goes offline without pausing the sending and then comes back) + * the receiver must send a control packet with send_receive == 1 message_id = TOX_FILECONTROL_RESUME_BROKEN and the data being + * a uint64_t (in host byte order) containing the number of bytes received. + * + * If the sender receives this packet, he must send a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT + * then he must start sending file data from the position (data , uint64_t in host byte order) received in the TOX_FILECONTROL_RESUME_BROKEN packet. + * + * To pause a file transfer send a control packet with control_type == TOX_FILECONTROL_PAUSE. + * To unpause a file transfer send a control packet with control_type == TOX_FILECONTROL_ACCEPT. + * + * If you receive a control packet with receive_send == 1 and control_type == TOX_FILECONTROL_PAUSE, you must stop sending filenumber until the other + * person sends a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT with the filenumber being a paused filenumber. + * + * If you receive a control packet with receive_send == 0 and control_type == TOX_FILECONTROL_PAUSE, it means the sender of filenumber has paused the + * transfer and will resume it later with a control packet with send_receive == 1 and control_type == TOX_FILECONTROL_ACCEPT for that file number. + * + * More to come... + */ + +enum { + TOX_FILECONTROL_ACCEPT, + TOX_FILECONTROL_PAUSE, + TOX_FILECONTROL_KILL, + TOX_FILECONTROL_FINISHED, + TOX_FILECONTROL_RESUME_BROKEN +}; +/* Set the callback for file send requests. + * + * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, 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); + +/* Set the callback for file control requests. + * + * receive_send is 1 if the message is for a slot on which we are currently sending a file and 0 if the message + * is for a slot on which we are receiving the file + * + * Function(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, 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 *, + uint16_t, void *), void *userdata); + +/* Set the callback for file data. + * + * 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, + void *), void *userdata); + + +/* Send a file send request. + * Maximum filename length is 255 bytes. + * return file number on success + * return -1 on failure + */ +int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, + uint16_t filename_length); + +/* Send a file control request. + * + * send_receive is 0 if we want the control packet to target a file we are currently sending, + * 1 if it targets a file we are currently receiving. + * + * return 0 on success + * return -1 on failure + */ +int tox_file_send_control(Tox *tox, int32_t friendnumber, uint8_t send_receive, uint8_t filenumber, uint8_t message_id, + const uint8_t *data, uint16_t length); + +/* Send file data. + * + * return 0 on success + * return -1 on failure + */ +int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length); + +/* Returns the recommended/maximum size of the filedata you send with tox_file_send_data() + * + * return size on success + * return -1 on failure (currently will never return -1) + */ +int tox_file_data_size(const Tox *tox, int32_t friendnumber); + +/* Give the number of bytes left to be sent/received. + * + * send_receive is 0 if we want the sending files, 1 if we want the receiving. + * + * return number of bytes remaining to be sent/received on success + * return 0 on failure + */ +uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive); + +/***************END OF FILE SENDING FUNCTIONS******************/ + +/* + * Use this function to bootstrap the client. + */ + +/* Resolves address into an IP address. If successful, sends a "get nodes" + * request to the given node with ip, port (in host byte order). + * and public_key to setup connections + * + * address can be a hostname or an IP address (IPv4 or IPv6). + * + * returns 1 if the address could be converted into an IP address + * returns 0 otherwise + */ +int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); + +/* Like tox_bootstrap_from_address but for TCP relays only. + * + * return 0 on failure. + * return 1 on success. + */ +int tox_add_tcp_relay(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); + +/* return 0 if we are not connected to the DHT. + * return 1 if we are. + */ +int tox_isconnected(const Tox *tox); + +typedef enum { + TOX_PROXY_NONE, + TOX_PROXY_SOCKS5, + TOX_PROXY_HTTP +} TOX_PROXY_TYPE; + +typedef struct { + /* + * The type of UDP socket created depends on ipv6enabled: + * If set to 0 (zero), creates an IPv4 socket which subsequently only allows + * IPv4 communication + * If set to anything else (default), creates an IPv6 socket which allows both IPv4 AND + * IPv6 communication + */ + uint8_t ipv6enabled; + + /* Set to 1 to disable udp support. (default: 0) + This will force Tox to use TCP only which may slow things down. + Disabling udp support is necessary when using proxies or Tor.*/ + uint8_t udp_disabled; + 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. */ +} Tox_Options; + +/* + * Run this function at startup. + * + * Options are some options that can be passed to the Tox instance (see above struct). + * + * If options is NULL, tox_new() will use default settings. + * + * Initializes a tox structure + * return allocated instance of tox on success. + * return NULL on failure. + */ +Tox *tox_new(Tox_Options *options); + +/* Run this before closing shop. + * Free all datastructures. */ +void tox_kill(Tox *tox); + +/* Return the time in milliseconds before tox_do() should be called again + * for optimal performance. + * + * returns time (in ms) before the next tox_do() needs to be run on success. + */ +uint32_t tox_do_interval(Tox *tox); + +/* The main loop that needs to be run in intervals of tox_do_interval() ms. */ +void tox_do(Tox *tox); + +/* SAVING AND LOADING FUNCTIONS: */ + +/* return size of messenger data (for saving). */ +uint32_t tox_size(const Tox *tox); + +/* Save the messenger in data (must be allocated memory of size Messenger_size()). */ +void tox_save(const Tox *tox, uint8_t *data); + +/* Load the messenger from data of size length. + * NOTE: The Tox save format isn't stable yet meaning this function sometimes + * returns -1 when loading older saves. This however does not mean nothing was + * loaded from the save. + * + * returns 0 on success + * returns -1 on failure + * returns +1 on finding encrypted save data + */ +int tox_load(Tox *tox, const uint8_t *data, uint32_t length); + +#ifdef __cplusplus +} +#endif + +#endif 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 . + * + */ + + +#ifndef __TOXAV +#define __TOXAV +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _ToxAv ToxAv; + +/* vpx_image_t */ +#include + +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/include/toxdns.h b/protocols/Tox/include/toxdns.h new file mode 100644 index 0000000000..06071b82d6 --- /dev/null +++ b/protocols/Tox/include/toxdns.h @@ -0,0 +1,96 @@ +/* toxdns.h + * + * Tox secure username DNS toxid resolving functions. + * + * Copyright (C) 2014 Tox project All Rights Reserved. + * + * This file is part of Tox. + * + * Tox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tox is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tox. If not, see . + * + */ + +#ifndef TOXDNS_H +#define TOXDNS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Clients are encouraged to set this as the maximum length names can have. */ +#define TOXDNS_MAX_RECOMMENDED_NAME_LENGTH 32 + +/* How to use this api to make secure tox dns3 requests: + * + * 1. Get the public key of a server that supports tox dns3. + * 2. use tox_dns3_new() to create a new object to create DNS requests + * and handle responses for that server. + * 3. Use tox_generate_dns3_string() to generate a string based on the name we want to query and a request_id + * that must be stored somewhere for when we want to decrypt the response. + * 4. take the string and use it for your DNS request like this: + * _4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc._tox.utox.org + * 5. The TXT in the DNS you receive should look like this: + * v=tox3;id=2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp + * 6. Take the id string and use it with tox_decrypt_dns3_TXT() and the request_id corresponding to the + * request we stored earlier to get the Tox id returned by the DNS server. + */ + +/* Create a new tox_dns3 object for server with server_public_key of size TOX_CLIENT_ID_SIZE. + * + * return Null on failure. + * return pointer object on success. + */ +void *tox_dns3_new(uint8_t *server_public_key); + +/* Destroy the tox dns3 object. + */ +void tox_dns3_kill(void *dns3_object); + +/* Generate a dns3 string of string_max_len used to query the dns server referred to by to + * dns3_object for a tox id registered to user with name of name_len. + * + * the uint32_t pointed by request_id will be set to the request id which must be passed to + * tox_decrypt_dns3_TXT() to correctly decode the response. + * + * This is what the string returned looks like: + * 4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc + * + * returns length of string on success. + * returns -1 on failure. + */ +int tox_generate_dns3_string(void *dns3_object, uint8_t *string, uint16_t string_max_len, uint32_t *request_id, + uint8_t *name, uint8_t name_len); + +/* Decode and decrypt the id_record returned of length id_record_len into + * tox_id (needs to be at least TOX_FRIEND_ADDRESS_SIZE). + * + * request_id is the request id given by tox_generate_dns3_string() when creating the request. + * + * the id_record passed to this function should look somewhat like this: + * 2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp + * + * returns -1 on failure. + * returns 0 on success. + * + */ +int tox_decrypt_dns3_TXT(void *dns3_object, uint8_t *tox_id, uint8_t *id_record, uint32_t id_record_len, + uint32_t request_id); + +#ifdef __cplusplus +} +#endif + +#endif 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 . + * + */ + +#ifndef TOXENCRYPTSAVE_H +#define TOXENCRYPTSAVE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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(__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(__FUNCTION__)(tox, function, userdata); +} + +int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length) +{ + return CreateFunction(__FUNCTION__)(tox, format, data, length); +} + +int tox_unset_avatar(Tox *tox) +{ + return CreateFunction(__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(__FUNCTION__)(tox, format, buf, length, maxlen, hash); +} + +int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen) +{ + return CreateFunction(__FUNCTION__)(hash, data, datalen); +} + +int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_send_avatar_info(Tox *tox, const int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber) +{ + return CreateFunction(__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(__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(__FUNCTION__)(tox, address, port, public_key); +} + +int tox_isconnected(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +uint32_t tox_do_interval(Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +void tox_do(Tox *tox) +{ + CreateFunction(__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(__FUNCTION__)(server_public_key); +} + +void tox_dns3_kill(void *dns3_object) +{ + CreateFunction(__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(__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(__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(__FUNCTION__)(); +} + +int tox_pass_key_length() +{ + return CreateFunction(__FUNCTION__)(); +} + +int tox_pass_salt_length() +{ + return CreateFunction(__FUNCTION__)(); +} + +uint32_t tox_encrypted_size(const Tox *tox) +{ + return CreateFunction(__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(__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(__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(__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(__FUNCTION__)(tox, data, length, passphrase, pplength); +} + +int tox_derive_key_from_pass(uint8_t *passphrase, uint32_t pplength, uint8_t *out_key) +{ + return CreateFunction(__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(__FUNCTION__)(passphrase, pplength, salt, out_key); +} + +int tox_get_salt(uint8_t *data, uint8_t *salt) +{ + return CreateFunction(__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(__FUNCTION__)(data, data_len, key, out); +} + +int tox_encrypted_key_save(const Tox *tox, uint8_t *data, uint8_t *key) +{ + return CreateFunction(__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(__FUNCTION__)(data, length, key, out); +} + +int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *key) +{ + return CreateFunction(__FUNCTION__)(tox, data, length, key); +} + +int tox_is_data_encrypted(const uint8_t *data) +{ + return CreateFunction(__FUNCTION__)(data); +} + +int tox_is_save_encrypted(const uint8_t *data) +{ + return CreateFunction(__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(__FUNCTION__)(options); +} + +void tox_kill(Tox *tox) +{ + CreateFunction(__FUNCTION__)(tox); + tox = NULL; +} + +void tox_get_address(const Tox *tox, uint8_t *address) +{ + CreateFunction(__FUNCTION__)(tox, address); +} + +int32_t tox_add_friend(Tox *tox,const uint8_t *address, const uint8_t *data, uint16_t length) +{ + return CreateFunction(__FUNCTION__)(tox, address, data, length); +} + +int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id) +{ + return CreateFunction(__FUNCTION__)(tox, client_id); +} + +int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id) +{ + return CreateFunction(__FUNCTION__)(tox, client_id); +} + +int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, client_id); +} + +int tox_del_friend(Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_friend_exists(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, message, length); +} + +uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, action, length); +} + +int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length) +{ + return CreateFunction(__FUNCTION__ )(tox, name, length); +} + +uint16_t tox_get_self_name(const Tox *tox, uint8_t *name) +{ + return CreateFunction(__FUNCTION__)(tox, name); +} + +int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, name); +} + +int tox_get_name_size(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_get_self_name_size(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length) +{ + return CreateFunction(__FUNCTION__)(tox, status, length); +} + +int tox_set_user_status(Tox *tox, uint8_t userstatus) +{ + return CreateFunction(__FUNCTION__)(tox, userstatus); +} + +int tox_get_status_message_size(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_get_self_status_message_size(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, buf, maxlen); +} + +int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen) +{ + return CreateFunction(__FUNCTION__)(tox, buf, maxlen); +} + +uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +uint8_t tox_get_self_user_status(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber, is_typing); +} + +uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +uint32_t tox_count_friendlist(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +uint32_t tox_get_num_online_friends(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size) +{ + return CreateFunction(__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(__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(__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(__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(__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(__FUNCTION__)(tox, function, userdata); +} + +void tox_callback_user_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) +{ + CreateFunction(__FUNCTION__)(tox, function, userdata); +} + +void tox_callback_typing_change(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) +{ + CreateFunction(__FUNCTION__)(tox, function, userdata); +} + +void tox_callback_read_receipt(Tox *tox, void(*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata) +{ + CreateFunction(__FUNCTION__)(tox, function, userdata); +} + +void tox_callback_connection_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) +{ + CreateFunction(__FUNCTION__)(tox, function, userdata); +} + +/* SAVING AND LOADING FUNCTIONS */ + +uint32_t tox_size(const Tox *tox) +{ + return CreateFunction(__FUNCTION__)(tox); +} + +void tox_save(const Tox *tox, uint8_t *data) +{ + CreateFunction(__FUNCTION__)(tox, data); +} + +int tox_load(Tox *tox, const uint8_t *data, uint32_t length) +{ + return CreateFunction(__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(__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(__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(__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(__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(__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(__FUNCTION__)(tox, friendnumber, filenumber, data, length); +} + +int tox_file_data_size(const Tox *tox, int32_t friendnumber) +{ + return CreateFunction(__FUNCTION__)(tox, friendnumber); +} + +uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive) +{ + return CreateFunction(__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 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 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 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(__FUNCTION__)(options); -} - -void tox_kill(Tox *tox) -{ - CreateFunction(__FUNCTION__)(tox); -} - -void tox_get_address(const Tox *tox, uint8_t *address) -{ - CreateFunction(__FUNCTION__)(tox, address); -} - -int32_t tox_add_friend(Tox *tox,const uint8_t *address, const uint8_t *data, uint16_t length) -{ - return CreateFunction(__FUNCTION__)(tox, address, data, length); -} - -int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id) -{ - return CreateFunction(__FUNCTION__)(tox, client_id); -} - -int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id) -{ - return CreateFunction(__FUNCTION__)(tox, client_id); -} - -int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, client_id); -} - -int tox_del_friend(Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_friend_exists(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, message, length); -} - -uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, action, length); -} - -int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length) -{ - return CreateFunction(__FUNCTION__ )(tox, name, length); -} - -uint16_t tox_get_self_name(const Tox *tox, uint8_t *name) -{ - return CreateFunction(__FUNCTION__)(tox, name); -} - -int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, name); -} - -int tox_get_name_size(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_get_self_name_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length) -{ - return CreateFunction(__FUNCTION__)(tox, status, length); -} - -int tox_set_user_status(Tox *tox, uint8_t userstatus) -{ - return CreateFunction(__FUNCTION__)(tox, userstatus); -} - -int tox_get_status_message_size(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_get_self_status_message_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, buf, maxlen); -} - -int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen) -{ - return CreateFunction(__FUNCTION__)(tox, buf, maxlen); -} - -uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -uint8_t tox_get_self_user_status(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, is_typing); -} - -uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -uint32_t tox_count_friendlist(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint32_t tox_get_num_online_friends(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size) -{ - return CreateFunction(__FUNCTION__ )(); -} - -void tox_callback_friend_request(Tox *tox, void(*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, void *), void *userdata) -{ - CreateFunction(__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(__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(__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(__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(__FUNCTION__)(tox, function, userdata); -} - -void tox_callback_user_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) -{ - CreateFunction(__FUNCTION__)(tox, function, userdata); -} - -void tox_callback_typing_change(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) -{ - CreateFunction(__FUNCTION__)(tox, function, userdata); -} - -void tox_callback_read_receipt(Tox *tox, void(*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata) -{ - CreateFunction(__FUNCTION__)(tox, function, userdata); -} - -void tox_callback_connection_status(Tox *tox, void(*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata) -{ - CreateFunction(__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(__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(__FUNCTION__)(tox, function, userdata); -} - -int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length) -{ - return CreateFunction(__FUNCTION__)(tox, format, data, length); -} - -int tox_unset_avatar(Tox *tox) -{ - return CreateFunction(__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(__FUNCTION__)(tox, format, buf, length, maxlen, hash); -} - -int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen) -{ - return CreateFunction(__FUNCTION__)(hash, data, datalen); -} - -int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_send_avatar_info(Tox *tox, const int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber) -{ - return CreateFunction(__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(__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(__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(__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(__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(__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(__FUNCTION__)(tox, friendnumber, filenumber, data, length); -} - -int tox_file_data_size(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive) -{ - return CreateFunction(__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(__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(__FUNCTION__)(tox, address, port,public_key); -} - -int tox_isconnected(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint32_t tox_do_interval(Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -void tox_do(Tox *tox) -{ - CreateFunction(__FUNCTION__)(tox); -} - -/* SAVING AND LOADING FUNCTIONS */ - -uint32_t tox_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -void tox_save(const Tox *tox, uint8_t *data) -{ - CreateFunction(__FUNCTION__)(tox, data); -} - -int tox_load(Tox *tox, const uint8_t *data, uint32_t length) -{ - return CreateFunction(__FUNCTION__)(tox, data, length); -} - -/* ENCRYPTION FUNCTIONS */ - -int tox_pass_encryption_extra_length() -{ - return CreateFunction(__FUNCTION__)(); -} - -int tox_pass_key_length() -{ - return CreateFunction(__FUNCTION__)(); -} - -int tox_pass_salt_length() -{ - return CreateFunction(__FUNCTION__)(); -} - -uint32_t tox_encrypted_size(const Tox *tox) -{ - return CreateFunction(__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(__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(__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(__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(__FUNCTION__)(tox, data, length, passphrase, pplength); -} - -int tox_derive_key_from_pass(uint8_t *passphrase, uint32_t pplength, uint8_t *out_key) -{ - return CreateFunction(__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(__FUNCTION__)(passphrase, pplength, salt, out_key); -} - -int tox_get_salt(uint8_t *data, uint8_t *salt) -{ - return CreateFunction(__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(__FUNCTION__)(data, data_len, key, out); -} - -int tox_encrypted_key_save(const Tox *tox, uint8_t *data, uint8_t *key) -{ - return CreateFunction(__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(__FUNCTION__)(data, length, key, out); -} - -int tox_encrypted_key_load(Tox *tox, const uint8_t *data, uint32_t length, uint8_t *key) -{ - return CreateFunction(__FUNCTION__)(tox, data, length, key); -} - -int tox_is_data_encrypted(const uint8_t *data) -{ - return CreateFunction(__FUNCTION__)(data); -} - -int tox_is_save_encrypted(const uint8_t *data) -{ - return CreateFunction(__FUNCTION__)(data); -} - -/* DNS TOXID RESOILVING FUNCTIONS */ - -void *tox_dns3_new(uint8_t *server_public_key) -{ - return CreateFunction(__FUNCTION__)(server_public_key); -} - -void tox_dns3_kill(void *dns3_object) -{ - CreateFunction(__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(__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(__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(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 Binary files a/protocols/Tox/tox/deflibcreator/as.exe and /dev/null differ diff --git a/protocols/Tox/tox/deflibcreator/as64.exe b/protocols/Tox/tox/deflibcreator/as64.exe deleted file mode 100644 index 4f5095abf8..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/as64.exe and /dev/null differ diff --git a/protocols/Tox/tox/deflibcreator/deflibcreator.exe b/protocols/Tox/tox/deflibcreator/deflibcreator.exe deleted file mode 100644 index 5969f5d4c2..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/deflibcreator.exe and /dev/null differ diff --git a/protocols/Tox/tox/deflibcreator/dlltool.exe b/protocols/Tox/tox/deflibcreator/dlltool.exe deleted file mode 100644 index 7874bdd13e..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/dlltool.exe and /dev/null differ diff --git a/protocols/Tox/tox/deflibcreator/dlltool64.exe b/protocols/Tox/tox/deflibcreator/dlltool64.exe deleted file mode 100644 index 6a41e5228c..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/dlltool64.exe and /dev/null differ diff --git a/protocols/Tox/tox/deflibcreator/link.exe b/protocols/Tox/tox/deflibcreator/link.exe deleted file mode 100644 index 5215aecd5d..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/link.exe and /dev/null 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 @@ - - - - - - - - - - - diff --git a/protocols/Tox/tox/deflibcreator/mspdb80.dll b/protocols/Tox/tox/deflibcreator/mspdb80.dll deleted file mode 100644 index cbe888915c..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/mspdb80.dll and /dev/null 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 @@ - - - - - - - - - - - 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 @@ - - - - - - - - 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#pragma comment(lib, "dbghelp.lib") -#pragma comment(lib, "shlwapi.lib") -#pragma comment(lib, "shell32.lib") - -// ordinals to names -typedef std::map > ExportMap; - -void GetExports(PVOID pMapping, ExportMap& exports, WORD& imageType) -{ - ULONG size = 0; - PIMAGE_NT_HEADERS pHead = ImageNtHeader(pMapping); - PIMAGE_EXPORT_DIRECTORY pDir = static_cast(ImageDirectoryEntryToData(pMapping, FALSE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size)); - if(pHead && pDir) - { - imageType = pHead->FileHeader.Machine; - char* base = static_cast(pMapping); - DWORD rvaExportDir = reinterpret_cast(pDir) - base; - PIMAGE_SECTION_HEADER pSec = NULL; - PDWORD namesAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNames, &pSec)); - PWORD ordinalAddr = static_cast(ImageRvaToVa(pHead, pMapping, pDir->AddressOfNameOrdinals, &pSec)); - DWORD numFuncs = pDir->NumberOfFunctions; - DWORD numNames = pDir->NumberOfNames; - DWORD baseOrd = pDir->Base; - - std::set ordinals; - DWORD lastOrd = baseOrd + numFuncs; - for(DWORD i = baseOrd; i < lastOrd; ++i) - { - ordinals.insert(i); - } - - for(DWORD i = 0; i < numNames; ++i) - { - WORD thisZeroBasedOrd = ordinalAddr[i]; - DWORD thisBasedOrd = thisZeroBasedOrd + baseOrd; - ordinals.erase(thisBasedOrd); - LPCSTR name = static_cast(ImageRvaToVa(pHead, pMapping, namesAddr[i], &pSec)); - exports[thisBasedOrd].push_back(name); - } - - for(std::set::const_iterator iter = ordinals.begin(), end = ordinals.end(); - iter != end; - ++iter - ) - { - exports.insert(std::make_pair(*iter, ExportMap::mapped_type())); - } - } -} - -PVOID MapFile(HANDLE hFile, DWORD fileMapPerm, DWORD mappedPerms) -{ - PVOID base = NULL; - HANDLE hMap = CreateFileMappingW( - hFile, - NULL, - fileMapPerm, - 0, - 0, - NULL - ); - if(hMap) - { - base = MapViewOfFile(hMap, mappedPerms, 0, 0, 0); - CloseHandle(hMap); - } - return base; -} - -PVOID MapFile(const wchar_t* fileName, DWORD filePerms, DWORD fileMapPerm, DWORD mappedPerms) -{ - PVOID base = NULL; - HANDLE hFile = CreateFileW( - fileName, - filePerms, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, - NULL - ); - if(hFile != INVALID_HANDLE_VALUE) - { - base = MapFile(hFile, fileMapPerm, mappedPerms); - CloseHandle(hFile); - } - return base; -} - -PVOID MapFileRO(const wchar_t* fileName, BOOL image) -{ - return MapFile(fileName, GENERIC_READ, PAGE_READONLY | (image ? SEC_IMAGE : 0), FILE_MAP_READ); -} - -std::wstring GetFileName(const wchar_t* pFilePath) -{ - const wchar_t* pAfterSlash = pFilePath, *pSlash = NULL; - while((pSlash = wcspbrk(pAfterSlash, L"\\/")) != NULL) - { - pAfterSlash = pSlash + 1; - } - const wchar_t* pDot = wcschr(pAfterSlash, L'.'); - if(pDot != NULL) - { - return std::wstring(pAfterSlash, pDot); - } - else return std::wstring(pAfterSlash); -} - -std::wstring MakeWString(const char* string) -{ - size_t reqd = mbstowcs(NULL, string, 0); - if(reqd != static_cast(-1)) - { - std::wstring str(reqd, 0); - mbstowcs(&str[0], string, reqd); - return str; - } - return std::wstring(string, string + strlen(string) + 1); -} - -void DoAndWaitForExecution(SHELLEXECUTEINFO& sei) -{ - if(!ShellExecuteEx(&sei)) - { - std::wcerr << L"Couldn't execute \"" << sei.lpFile << L'\n'; - } - else - { - WaitForSingleObject(sei.hProcess, INFINITE); - CloseHandle(sei.hProcess); - } -} - -void CreateLibs(const std::wstring& defFile, const std::wstring& baseName, const std::wstring& outDir, WORD machineType) -{ - std::wstring curDir(1000, 0); - curDir.resize(GetModuleFileName(GetModuleHandle(NULL), &curDir[0], curDir.length())); - curDir.resize(curDir.find_last_of(L"\\/") + 1); - SHELLEXECUTEINFO sei = {sizeof(sei), 0}; - sei.fMask = SEE_MASK_NOCLOSEPROCESS; - sei.hwnd = GetConsoleWindow(); - sei.lpVerb = L"open"; - sei.lpDirectory = outDir.c_str(); - - // 32-bit libs - if(machineType == IMAGE_FILE_MACHINE_I386) - { - std::wcout << L"Creating 32-bit libs...\n"; - // dlltool for mingw (x86) - std::wcout << L"\tCreating lib" << baseName << L".a...\n"; - std::wostringstream pstream; - pstream << L"-d \"" << defFile << L"\" -l lib" << baseName << L".a"; - - std::wstring binary = curDir + L"dlltool.exe"; - std::wstring parameters = pstream.str(); - - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - - DoAndWaitForExecution(sei); - - pstream.str(L""); - - // link for msvc (x86) - std::wcout << L"\tCreating " << baseName << L".lib...\n"; - pstream << L"/lib /nologo /machine:x86 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L".lib\""; - - binary = curDir + L"link.exe"; - parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - } - else - { - std::wcout << L"Creating 64-bit libs...\n"; - // dlltool for mingw (x64) (my fail if running on 32-bit comp) - std::wcout << L"\tlib" << baseName << L"-x64.a...\n"; - - std::wstring binary = curDir + L"dlltool64.exe"; - std::wstring as64Pos = L"\""; - as64Pos += (curDir + L"as64.exe\""); - std::wostringstream pstream; - pstream << L"-d \"" << defFile << L"\" -S " << as64Pos << L" -l lib" << baseName << L"-x64.a"; - - std::wstring parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - - pstream.str(L""); - - // link for msvc (x64) - std::wcout << L'\t' << baseName << L"-x64.lib...\n"; - binary = curDir + L"link.exe"; - pstream << L"/lib /nologo /machine:x64 /def:\"" << defFile << "\" /out:\"" << outDir << baseName << L"-x64.lib\""; - parameters = pstream.str(); - sei.lpFile = binary.c_str(); - sei.lpParameters = parameters.c_str(); - DoAndWaitForExecution(sei); - } -} - -BOOL CreateDef(LPCWSTR dllFile, const std::wstring& defFile, WORD& machineType) -{ - std::wcout << L"Creating " << defFile << L"...\n"; - // this is FALSE on purpose. If it's true, some dll's (mainly bcrypt.dll from Vista) - // fail to map as an image because of some funkyness with the certificate or - // something (STATUS_INVALID_IMAGE_HASH fyi). So this is just easier - PVOID pMapping = MapFileRO(dllFile, FALSE); - if(pMapping) - { - ExportMap exports; - GetExports(pMapping, exports, machineType); - if(!exports.empty()) - { - std::wofstream defFile(defFile.c_str()); - std::wostringstream expDetails; - defFile << L"LIBRARY \"" << GetFileName(dllFile) << L"\"\n\nEXPORTS\n"; - for(ExportMap::const_iterator iter = exports.begin(), end = exports.end(); - iter != end; - ++iter - ) - { - expDetails.str(L""); - expDetails.clear(); - expDetails << L'\t'; - const ExportMap::mapped_type& names = iter->second; - if(!names.empty()) - { - const std::wstring& initialName = MakeWString(*(names.begin())); - expDetails << initialName << L"\t@" << iter->first << L'\n'; - for(ExportMap::mapped_type::const_iterator namesIter = names.begin() + 1, namesEnd = names.end(); - namesIter != namesEnd; - ++namesIter - ) - { - expDetails << '\t' << MakeWString(*namesIter) << L'=' << initialName << L'\n'; - } - } - // unnamed export - else - { - expDetails << L"Ordinal" << iter->first << L" NONAME\t@" << iter->first << L'\n'; - } - defFile << expDetails.str(); - } - } - else - { - std::wcerr << dllFile << L" has no exports, nothing to do\n"; - return FALSE; - } - UnmapViewOfFile(pMapping); - } - return TRUE; -} - -int __cdecl wmain(int argc, wchar_t** argv) -{ - std::wcout << L"DefLibCreator v1.0 - Airesoft.co.uk\n\n"; - if(argc < 2) - { - puts("Usage: DefLibCreator dll [outDir]"); - return 1; - } - else - { - std::wstring baseFileName = PathFindFileName(argv[1]); - baseFileName.erase(baseFileName.find_last_of('.')); - int outDirArg = (argc >= 3) ? 2 : 1; - LPWSTR pFilePart = NULL; - std::wstring outDir(GetFullPathName(argv[outDirArg], 0, NULL, NULL), 0); - outDir.resize(GetFullPathName(argv[outDirArg], outDir.length(), &outDir[0], &pFilePart)); - // if the explicit output dir wasn't specified, we need to chop the dll filename off the end of outDir - if(outDirArg == 1) - { - outDir.resize(pFilePart - outDir.c_str()); - } - else - { - CreateDirectory(outDir.c_str(), NULL); - } - outDir.push_back(L'\\'); // ensure it ends with a slash - std::wstring defFile(outDir); - defFile += (baseFileName + L".def"); - WORD machineType = 0; - if(CreateDef(argv[1], defFile, machineType)) - { - CreateLibs(defFile, baseFileName, outDir, machineType); - } - } - return 0; -} diff --git a/protocols/Tox/tox/deflibcreator/src/dlc.ico b/protocols/Tox/tox/deflibcreator/src/dlc.ico deleted file mode 100644 index aa524c729c..0000000000 Binary files a/protocols/Tox/tox/deflibcreator/src/dlc.ico and /dev/null 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 Binary files a/protocols/Tox/tox/dll/x64/libtox.dll and /dev/null 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 Binary files a/protocols/Tox/tox/dll/x86/libtox.dll and /dev/null 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/tox.h b/protocols/Tox/tox/include/tox.h deleted file mode 100644 index 52069f8698..0000000000 --- a/protocols/Tox/tox/include/tox.h +++ /dev/null @@ -1,887 +0,0 @@ -/* tox.h - * - * The Tox public API. - * - * Copyright (C) 2013 Tox project All Rights Reserved. - * - * This file is part of Tox. - * - * Tox is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tox is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tox. If not, see . - * - */ - -#ifndef TOX_H -#define TOX_H - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -#define TOX_MAX_NAME_LENGTH 128 - -/* Maximum length of single messages after which they should be split. */ -#define TOX_MAX_MESSAGE_LENGTH 1368 -#define TOX_MAX_STATUSMESSAGE_LENGTH 1007 -#define TOX_CLIENT_ID_SIZE 32 -#define TOX_AVATAR_MAX_DATA_LENGTH 16384 -#define TOX_HASH_LENGTH /*crypto_hash_sha256_BYTES*/ 32 - -#define TOX_FRIEND_ADDRESS_SIZE (TOX_CLIENT_ID_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) - -#define TOX_ENABLE_IPV6_DEFAULT 1 - -#define TOX_ENC_SAVE_MAGIC_NUMBER "toxEsave" -#define TOX_ENC_SAVE_MAGIC_LENGTH 8 - -/* Errors for m_addfriend - * FAERR - Friend Add Error - */ -enum { - TOX_FAERR_TOOLONG = -1, - TOX_FAERR_NOMESSAGE = -2, - TOX_FAERR_OWNKEY = -3, - TOX_FAERR_ALREADYSENT = -4, - TOX_FAERR_UNKNOWN = -5, - TOX_FAERR_BADCHECKSUM = -6, - TOX_FAERR_SETNEWNOSPAM = -7, - TOX_FAERR_NOMEM = -8 -}; - -/* USERSTATUS - - * Represents userstatuses someone can have. - */ -typedef enum { - TOX_USERSTATUS_NONE, - TOX_USERSTATUS_AWAY, - TOX_USERSTATUS_BUSY, - TOX_USERSTATUS_INVALID -} -TOX_USERSTATUS; - - -/* AVATAR_FORMAT - - * Data formats for user avatar images - */ -typedef enum { - TOX_AVATAR_FORMAT_NONE = 0, - TOX_AVATAR_FORMAT_PNG -} -TOX_AVATAR_FORMAT; - -#ifndef __TOX_DEFINED__ -#define __TOX_DEFINED__ -typedef struct Tox Tox; -#endif - -/* NOTE: Strings in Tox are all UTF-8, (This means that there is no terminating NULL character.) - * - * The exact buffer you send will be received at the other end without modification. - * - * Do not treat Tox strings as C strings. - */ - -/* return TOX_FRIEND_ADDRESS_SIZE byte address to give to others. - * format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)] - */ -void tox_get_address(const Tox *tox, uint8_t *address); - -/* Add a friend. - * Set the data that will be sent along with friend request. - * address is the address of the friend (returned by getaddress of the friend you wish to add) it must be TOX_FRIEND_ADDRESS_SIZE bytes. TODO: add checksum. - * data is the data and length is the length. - * - * return the friend number if success. - * return TOX_FAERR_TOOLONG if message length is too long. - * return TOX_FAERR_NOMESSAGE if no message (message length must be >= 1 byte). - * return TOX_FAERR_OWNKEY if user's own key. - * return TOX_FAERR_ALREADYSENT if friend request already sent or already a friend. - * return TOX_FAERR_UNKNOWN for unknown error. - * return TOX_FAERR_BADCHECKSUM if bad checksum in address. - * return TOX_FAERR_SETNEWNOSPAM if the friend was already there but the nospam was different. - * (the nospam for that friend was set to the new one). - * return TOX_FAERR_NOMEM if increasing the friend list size fails. - */ -int32_t tox_add_friend(Tox *tox, const uint8_t *address, const uint8_t *data, uint16_t length); - - -/* Add a friend without sending a friendrequest. - * return the friend number if success. - * return -1 if failure. - */ -int32_t tox_add_friend_norequest(Tox *tox, const uint8_t *client_id); - -/* return the friend number associated to that client id. - return -1 if no such friend */ -int32_t tox_get_friend_number(const Tox *tox, const uint8_t *client_id); - -/* Copies the public key associated to that friend id into client_id buffer. - * Make sure that client_id is of size CLIENT_ID_SIZE. - * return 0 if success. - * return -1 if failure. - */ -int tox_get_client_id(const Tox *tox, int32_t friendnumber, uint8_t *client_id); - -/* Remove a friend. - * - * return 0 if success. - * return -1 if failure. - */ -int tox_del_friend(Tox *tox, int32_t friendnumber); - -/* Checks friend's connecting status. - * - * return 1 if friend is connected to us (Online). - * return 0 if friend is not connected to us (Offline). - * return -1 on failure. - */ -int tox_get_friend_connection_status(const Tox *tox, int32_t friendnumber); - -/* Checks if there exists a friend with given friendnumber. - * - * return 1 if friend exists. - * return 0 if friend doesn't exist. - */ -int tox_friend_exists(const Tox *tox, int32_t friendnumber); - -/* Send a text chat message to an online friend. - * - * return the message id if packet was successfully put into the send queue. - * return 0 if it was not. - * - * maximum length of messages is TOX_MAX_MESSAGE_LENGTH, your client must split larger messages - * or else sending them will not work. No the core will not split messages for you because that - * requires me to parse UTF-8. - * - * You will want to retain the return value, it will be passed to your read_receipt callback - * if one is received. - */ -uint32_t tox_send_message(Tox *tox, int32_t friendnumber, const uint8_t *message, uint32_t length); - -/* Send an action to an online friend. - * - * return the message id if packet was successfully put into the send queue. - * return 0 if it was not. - * - * maximum length of actions is TOX_MAX_MESSAGE_LENGTH, your client must split larger actions - * or else sending them will not work. No the core will not split actions for you because that - * requires me to parse UTF-8. - * - * You will want to retain the return value, it will be passed to your read_receipt callback - * if one is received. - */ -uint32_t tox_send_action(Tox *tox, int32_t friendnumber, const uint8_t *action, uint32_t length); - -/* Set our nickname. - * name must be a string of maximum MAX_NAME_LENGTH length. - * length must be at least 1 byte. - * length is the length of name. - * - * return 0 if success. - * return -1 if failure. - */ -int tox_set_name(Tox *tox, const uint8_t *name, uint16_t length); - -/* - * Get your nickname. - * m - The messenger context to use. - * name - needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. - * - * return length of name. - * return 0 on error. - */ -uint16_t tox_get_self_name(const Tox *tox, uint8_t *name); - -/* Get name of friendnumber and put it in name. - * name needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. - * - * return length of name if success. - * return -1 if failure. - */ -int tox_get_name(const Tox *tox, int32_t friendnumber, uint8_t *name); - -/* returns the length of name on success. - * returns -1 on failure. - */ -int tox_get_name_size(const Tox *tox, int32_t friendnumber); -int tox_get_self_name_size(const Tox *tox); - -/* Set our user status. - * - * userstatus must be one of TOX_USERSTATUS values. - * max length of the status is TOX_MAX_STATUSMESSAGE_LENGTH. - * - * returns 0 on success. - * returns -1 on failure. - */ -int tox_set_status_message(Tox *tox, const uint8_t *status, uint16_t length); -int tox_set_user_status(Tox *tox, uint8_t userstatus); - -/* returns the length of status message on success. - * returns -1 on failure. - */ -int tox_get_status_message_size(const Tox *tox, int32_t friendnumber); -int tox_get_self_status_message_size(const Tox *tox); - -/* Copy friendnumber's status message into buf, truncating if size is over maxlen. - * Get the size you need to allocate from m_get_statusmessage_size. - * The self variant will copy our own status message. - * - * returns the length of the copied data on success - * retruns -1 on failure. - */ -int tox_get_status_message(const Tox *tox, int32_t friendnumber, uint8_t *buf, uint32_t maxlen); -int tox_get_self_status_message(const Tox *tox, uint8_t *buf, uint32_t maxlen); - -/* return one of TOX_USERSTATUS values. - * Values unknown to your application should be represented as TOX_USERSTATUS_NONE. - * As above, the self variant will return our own TOX_USERSTATUS. - * If friendnumber is invalid, this shall return TOX_USERSTATUS_INVALID. - */ -uint8_t tox_get_user_status(const Tox *tox, int32_t friendnumber); -uint8_t tox_get_self_user_status(const Tox *tox); - -/* returns timestamp of last time friendnumber was seen online, or 0 if never seen. - * returns -1 on error. - */ -uint64_t tox_get_last_online(const Tox *tox, int32_t friendnumber); - -/* Set our typing status for a friend. - * You are responsible for turning it on or off. - * - * returns 0 on success. - * returns -1 on failure. - */ -int tox_set_user_is_typing(Tox *tox, int32_t friendnumber, uint8_t is_typing); - -/* Get the typing status of a friend. - * - * returns 0 if friend is not typing. - * returns 1 if friend is typing. - */ -uint8_t tox_get_is_typing(const Tox *tox, int32_t friendnumber); - -/* Return the number of friends in the instance m. - * You should use this to determine how much memory to allocate - * for copy_friendlist. */ -uint32_t tox_count_friendlist(const Tox *tox); - -/* Return the number of online friends in the instance m. */ -uint32_t tox_get_num_online_friends(const Tox *tox); - -/* Copy a list of valid friend IDs into the array out_list. - * If out_list is NULL, returns 0. - * Otherwise, returns the number of elements copied. - * If the array was too small, the contents - * of out_list will be truncated to list_size. */ -uint32_t tox_get_friendlist(const Tox *tox, int32_t *out_list, uint32_t list_size); - -/* Set the function that will be executed when a friend request is received. - * Function format is function(Tox *tox, uint8_t * public_key, uint8_t * data, uint16_t length, void *userdata) - */ -void tox_callback_friend_request(Tox *tox, void (*function)(Tox *tox, const uint8_t *, const uint8_t *, uint16_t, - void *), void *userdata); - -/* Set the function that will be executed when a message from a friend is received. - * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * message, uint16_t length, void *userdata) - */ -void tox_callback_friend_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the function that will be executed when an action from a friend is received. - * Function format is: function(Tox *tox, int32_t friendnumber, uint8_t * action, uint16_t length, void *userdata) - */ -void tox_callback_friend_action(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for name changes. - * function(Tox *tox, int32_t friendnumber, uint8_t *newname, uint16_t length, void *userdata) - * You are not responsible for freeing newname - */ -void tox_callback_name_change(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for status message changes. - * function(Tox *tox, int32_t friendnumber, uint8_t *newstatus, uint16_t length, void *userdata) - * You are not responsible for freeing newstatus. - */ -void tox_callback_status_message(Tox *tox, void (*function)(Tox *tox, int32_t, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for status type changes. - * function(Tox *tox, int32_t friendnumber, uint8_t TOX_USERSTATUS, void *userdata) - */ -void tox_callback_user_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - -/* Set the callback for typing changes. - * function (Tox *tox, int32_t friendnumber, uint8_t is_typing, void *userdata) - */ -void tox_callback_typing_change(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - -/* Set the callback for read receipts. - * function(Tox *tox, int32_t friendnumber, uint32_t receipt, void *userdata) - * - * If you are keeping a record of returns from m_sendmessage; - * receipt might be one of those values, meaning the message - * has been received on the other side. - * Since core doesn't track ids for you, receipt may not correspond to any message. - * In that case, you should discard it. - */ -void tox_callback_read_receipt(Tox *tox, void (*function)(Tox *tox, int32_t, uint32_t, void *), void *userdata); - -/* Set the callback for connection status changes. - * function(Tox *tox, int32_t friendnumber, uint8_t status, void *userdata) - * - * Status: - * 0 -- friend went offline after being previously online - * 1 -- friend went online - * - * NOTE: This callback is not called when adding friends, thus the "after - * being previously online" part. it's assumed that when adding friends, - * their connection status is offline. - */ -void tox_callback_connection_status(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, void *), void *userdata); - - -/**********ADVANCED FUNCTIONS (If you don't know what they do you can safely ignore them.) ************/ - -/* Functions to get/set the nospam part of the id. - */ -uint32_t tox_get_nospam(const Tox *tox); -void tox_set_nospam(Tox *tox, uint32_t nospam); - -/* Copy the public and secret key from the Tox object. - public_key and secret_key must be 32 bytes big. - if the pointer is NULL, no data will be copied to it.*/ -void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key); - -/* Maximum size of custom packets. */ -#define TOX_MAX_CUSTOM_PACKET_SIZE 1373 - -/* Set handlers for custom lossy packets. - * Set the function to be called when friend sends us a lossy packet starting with byte. - * byte must be in the 200-254 range. - * - * NOTE: lossy packets behave like UDP packets meaning they might never reach the other side - * or might arrive more than once (if someone is messing with the connection) or might arrive - * in the wrong order. - * - * Unless latency is an issue, it is recommended that you use lossless packets instead. - * - * return -1 on failure. - * 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); - -/* Function to send custom lossy packets. - * First byte of data must be in the range: 200-254. - * - * return -1 on failure. - * return 0 on success. - */ -int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t length); - -/* Set handlers for custom lossless packets. - * Set the function to be called when friend sends us a lossless packet starting with byte. - * byte must be in the 160-191 range. - * - * Lossless packets behave kind of like TCP (reliability, arrive in order.) but with packets instead of a stream. - * - * return -1 on failure. - * 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); - -/* Function to send custom lossless packets. - * First byte of data must be in the range: 160-191. - * - * return -1 on failure. - * return 0 on success. - */ -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 ************/ - -/* Set the callback for group invites. - * - * Function(Tox *tox, int32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) - * - * data of length is what needs to be passed to join_groupchat(). - */ -void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_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) - */ -void tox_callback_group_message(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set the callback for group actions. - * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * action, uint16_t length, void *userdata) - */ -void tox_callback_group_action(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), - void *userdata); - -/* Set callback function for peer name list changes. - * - * It gets called every time the name list changes(new peer/name, deleted peer) - * Function(Tox *tox, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) - */ -typedef enum { - TOX_CHAT_CHANGE_PEER_ADD, - TOX_CHAT_CHANGE_PEER_DEL, - TOX_CHAT_CHANGE_PEER_NAME, -} TOX_CHAT_CHANGE; - -void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), - void *userdata); - -/* Creates a new groupchat and puts it in the chats array. - * - * return group number on success. - * return -1 on failure. - */ -int tox_add_groupchat(Tox *tox); - -/* Delete a groupchat from the chats array. - * - * return 0 on success. - * return -1 if failure. - */ -int tox_del_groupchat(Tox *tox, int groupnumber); - -/* Copy the name of peernumber who is in groupnumber to name. - * name must be at least TOX_MAX_NAME_LENGTH long. - * - * return length of name if success - * return -1 if failure - */ -int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name); - -/* invite friendnumber to groupnumber - * return 0 on success - * return -1 on failure - */ -int tox_invite_friend(Tox *tox, int32_t friendnumber, int groupnumber); - -/* Join a group (you need to have been invited first.) using data of length obtained - * in the group invite callback. - * - * returns group number on success - * returns -1 on failure. - */ -int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length); - -/* send a group message - * return 0 on success - * return -1 on failure - */ -int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, uint16_t length); - -/* send a group action - * return 0 on success - * return -1 on failure - */ -int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint16_t length); - -/* Return the number of peers in the group chat on success. - * return -1 on failure - */ -int tox_group_number_peers(const Tox *tox, int groupnumber); - -/* List all the peers in the group chat. - * - * Copies the names of the peers to the name[length][TOX_MAX_NAME_LENGTH] array. - * - * Copies the lengths of the names to lengths[length] - * - * returns the number of peers on success. - * - * return -1 on failure. - */ -int tox_group_get_names(const Tox *tox, int groupnumber, uint8_t names[][TOX_MAX_NAME_LENGTH], uint16_t lengths[], - uint16_t length); - -/* Return the number of chats in the instance m. - * You should use this to determine how much memory to allocate - * for copy_chatlist. */ -uint32_t tox_count_chatlist(const Tox *tox); - -/* Copy a list of valid chat IDs into the array out_list. - * If out_list is NULL, returns 0. - * Otherwise, returns the number of elements copied. - * If the array was too small, the contents - * of out_list will be truncated to list_size. */ -uint32_t tox_get_chatlist(const Tox *tox, int *out_list, uint32_t list_size); - -/****************AVATAR FUNCTIONS*****************/ - -/* Set the callback function for avatar information. - * This callback will be called when avatar information are received from friends. These events - * can arrive at anytime, but are usually received uppon connection and in reply of avatar - * information requests. - * - * Function format is: - * function(Tox *tox, int32_t friendnumber, uint8_t format, uint8_t *hash, void *userdata) - * - * where 'format' is the avatar image format (see TOX_AVATAR_FORMAT) and 'hash' is the hash of - * the avatar data for caching purposes and it is exactly TOX_HASH_LENGTH long. If the image - * format is NONE, the hash is zeroed. - * - */ -void tox_callback_avatar_info(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, uint8_t *, void *), - void *userdata); - - -/* Set the callback function for avatar data. - * This callback will be called when the complete avatar data was correctly received from a - * friend. This only happens in reply of a avatar data request (see tox_request_avatar_data); - * - * Function format is: - * function(Tox *tox, int32_t friendnumber, uint8_t format, uint8_t *hash, uint8_t *data, uint32_t datalen, void *userdata) - * - * where 'format' is the avatar image format (see TOX_AVATAR_FORMAT); 'hash' is the - * locally-calculated cryptographic hash of the avatar data and it is exactly - * TOX_HASH_LENGTH long; 'data' is the avatar image data and 'datalen' is the length - * of such data. - * - * If format is NONE, 'data' is NULL, 'datalen' is zero, and the hash is zeroed. The hash is - * always validated locally with the function tox_hash and ensured to match the image data, - * so this value can be safely used to compare with cached avatars. - * - * WARNING: users MUST treat all avatar image data received from another peer as untrusted and - * potentially malicious. The library only ensures that the data which arrived is the same the - * other user sent, and does not interpret or validate any image data. - */ -void tox_callback_avatar_data(Tox *tox, void (*function)(Tox *tox, int32_t, uint8_t, uint8_t *, uint8_t *, uint32_t, - void *), void *userdata); - -/* Set the user avatar image data. - * This should be made before connecting, so we will not announce that the user have no avatar - * before setting and announcing a new one, forcing the peers to re-download it. - * - * Notice that the library treats the image as raw data and does not interpret it by any way. - * - * Arguments: - * format - Avatar image format or NONE for user with no avatar (see TOX_AVATAR_FORMAT); - * data - pointer to the avatar data (may be NULL it the format is NONE); - * length - length of image data. Must be <= TOX_AVATAR_MAX_DATA_LENGTH. - * - * returns 0 on success - * returns -1 on failure. - */ -int tox_set_avatar(Tox *tox, uint8_t format, const uint8_t *data, uint32_t length); - -/* Unsets the user avatar. - - returns 0 on success (currently always returns 0) */ -int tox_unset_avatar(Tox *tox); - -/* Get avatar data from the current user. - * Copies the current user avatar data to the destination buffer and sets the image format - * accordingly. - * - * If the avatar format is NONE, the buffer 'buf' isleft uninitialized, 'hash' is zeroed, and - * 'length' is set to zero. - * - * If any of the pointers format, buf, length, and hash are NULL, that particular field will be ignored. - * - * Arguments: - * format - destination pointer to the avatar image format (see TOX_AVATAR_FORMAT); - * buf - destination buffer to the image data. Must have at least 'maxlen' bytes; - * length - destination pointer to the image data length; - * maxlen - length of the destination buffer 'buf'; - * hash - destination pointer to the avatar hash (it must be exactly TOX_HASH_LENGTH bytes long). - * - * returns 0 on success; - * returns -1 on failure. - * - */ -int tox_get_self_avatar(const Tox *tox, uint8_t *format, uint8_t *buf, uint32_t *length, uint32_t maxlen, - uint8_t *hash); - - -/* Generates a cryptographic hash of the given data. - * This function may be used by clients for any purpose, but is provided primarily for - * validating cached avatars. This use is highly recommended to avoid unnecessary avatar - * updates. - * This function is a wrapper to internal message-digest functions. - * - * Arguments: - * hash - destination buffer for the hash data, it must be exactly TOX_HASH_LENGTH bytes long. - * data - data to be hashed; - * datalen - length of the data; for avatars, should be TOX_AVATAR_MAX_DATA_LENGTH - * - * returns 0 on success - * returns -1 on failure. - */ -int tox_hash(uint8_t *hash, const uint8_t *data, const uint32_t datalen); - -/* Request avatar information from a friend. - * Asks a friend to provide their avatar information (image format and hash). The friend may - * or may not answer this request and, if answered, the information will be provided through - * the callback 'avatar_info'. - * - * returns 0 on success - * returns -1 on failure. - */ -int tox_request_avatar_info(const Tox *tox, const int32_t friendnumber); - - -/* Send an unrequested avatar information to a friend. - * Sends our avatar format and hash to a friend; he/she can use this information to validate - * an avatar from the cache and may (or not) reply with an avatar data request. - * - * Notice: it is NOT necessary to send these notification after changing the avatar or - * connecting. The library already does this. - * - * returns 0 on success - * returns -1 on failure. - */ -int tox_send_avatar_info(Tox *tox, const int32_t friendnumber); - - -/* Request the avatar data from a friend. - * Ask a friend to send their avatar data. The friend may or may not answer this request and, - * if answered, the information will be provided in callback 'avatar_data'. - * - * returns 0 on sucess - * returns -1 on failure. - */ -int tox_request_avatar_data(const Tox *tox, const int32_t friendnumber); - -/****************FILE SENDING FUNCTIONS*****************/ -/* NOTE: This how to will be updated. - * - * HOW TO SEND FILES CORRECTLY: - * 1. Use tox_new_file_sender(...) to create a new file sender. - * 2. Wait for the callback set with tox_callback_file_control(...) to be called with receive_send == 1 and control_type == TOX_FILECONTROL_ACCEPT - * 3. Send the data with tox_file_send_data(...) with chunk size tox_file_data_size(...) - * 4. When sending is done, send a tox_file_send_control(...) with send_receive = 0 and message_id = TOX_FILECONTROL_FINISHED - * 5. when the callback set with tox_callback_file_control(...) is called with receive_send == 1 and control_type == TOX_FILECONTROL_FINISHED - * the other person has received the file correctly. - * - * HOW TO RECEIVE FILES CORRECTLY: - * 1. wait for the callback set with tox_callback_file_send_request(...) - * 2. accept or refuse the connection with tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_ACCEPT or TOX_FILECONTROL_KILL - * 3. save all the data received with the callback set with tox_callback_file_data(...) to a file. - * 4. when the callback set with tox_callback_file_control(...) is called with receive_send == 0 and control_type == TOX_FILECONTROL_FINISHED - * the file is done transferring. - * 5. send a tox_file_send_control(...) with send_receive = 1 and message_id = TOX_FILECONTROL_FINISHED to confirm that we did receive the file. - * - * tox_file_data_remaining(...) can be used to know how many bytes are left to send/receive. - * - * If the connection breaks during file sending (The other person goes offline without pausing the sending and then comes back) - * the receiver must send a control packet with send_receive == 1 message_id = TOX_FILECONTROL_RESUME_BROKEN and the data being - * a uint64_t (in host byte order) containing the number of bytes received. - * - * If the sender receives this packet, he must send a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT - * then he must start sending file data from the position (data , uint64_t in host byte order) received in the TOX_FILECONTROL_RESUME_BROKEN packet. - * - * To pause a file transfer send a control packet with control_type == TOX_FILECONTROL_PAUSE. - * To unpause a file transfer send a control packet with control_type == TOX_FILECONTROL_ACCEPT. - * - * If you receive a control packet with receive_send == 1 and control_type == TOX_FILECONTROL_PAUSE, you must stop sending filenumber until the other - * person sends a control packet with send_receive == 0 and control_type == TOX_FILECONTROL_ACCEPT with the filenumber being a paused filenumber. - * - * If you receive a control packet with receive_send == 0 and control_type == TOX_FILECONTROL_PAUSE, it means the sender of filenumber has paused the - * transfer and will resume it later with a control packet with send_receive == 1 and control_type == TOX_FILECONTROL_ACCEPT for that file number. - * - * More to come... - */ - -enum { - TOX_FILECONTROL_ACCEPT, - TOX_FILECONTROL_PAUSE, - TOX_FILECONTROL_KILL, - TOX_FILECONTROL_FINISHED, - TOX_FILECONTROL_RESUME_BROKEN -}; -/* Set the callback for file send requests. - * - * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *filename, uint16_t filename_length, void *userdata) - */ -void tox_callback_file_send_request(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint64_t, const uint8_t *, - uint16_t, void *), void *userdata); - -/* Set the callback for file control requests. - * - * receive_send is 1 if the message is for a slot on which we are currently sending a file and 0 if the message - * is for a slot on which we are receiving the file - * - * Function(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, uint8_t *data, uint16_t length, void *userdata) - * - */ -void tox_callback_file_control(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, uint8_t, uint8_t, const uint8_t *, - uint16_t, void *), void *userdata); - -/* Set the callback for file data. - * - * Function(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata) - * - */ -void tox_callback_file_data(Tox *tox, void (*function)(Tox *m, int32_t, uint8_t, const uint8_t *, uint16_t length, - void *), void *userdata); - - -/* Send a file send request. - * Maximum filename length is 255 bytes. - * return file number on success - * return -1 on failure - */ -int tox_new_file_sender(Tox *tox, int32_t friendnumber, uint64_t filesize, const uint8_t *filename, - uint16_t filename_length); - -/* Send a file control request. - * - * send_receive is 0 if we want the control packet to target a file we are currently sending, - * 1 if it targets a file we are currently receiving. - * - * return 0 on success - * return -1 on failure - */ -int tox_file_send_control(Tox *tox, int32_t friendnumber, uint8_t send_receive, uint8_t filenumber, uint8_t message_id, - const uint8_t *data, uint16_t length); - -/* Send file data. - * - * return 0 on success - * return -1 on failure - */ -int tox_file_send_data(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length); - -/* Returns the recommended/maximum size of the filedata you send with tox_file_send_data() - * - * return size on success - * return -1 on failure (currently will never return -1) - */ -int tox_file_data_size(const Tox *tox, int32_t friendnumber); - -/* Give the number of bytes left to be sent/received. - * - * send_receive is 0 if we want the sending files, 1 if we want the receiving. - * - * return number of bytes remaining to be sent/received on success - * return 0 on failure - */ -uint64_t tox_file_data_remaining(const Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t send_receive); - -/***************END OF FILE SENDING FUNCTIONS******************/ - -/* - * Use this function to bootstrap the client. - */ - -/* Resolves address into an IP address. If successful, sends a "get nodes" - * request to the given node with ip, port (in host byte order). - * and public_key to setup connections - * - * address can be a hostname or an IP address (IPv4 or IPv6). - * - * returns 1 if the address could be converted into an IP address - * returns 0 otherwise - */ -int tox_bootstrap_from_address(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); - -/* Like tox_bootstrap_from_address but for TCP relays only. - * - * return 0 on failure. - * return 1 on success. - */ -int tox_add_tcp_relay(Tox *tox, const char *address, uint16_t port, const uint8_t *public_key); - -/* return 0 if we are not connected to the DHT. - * return 1 if we are. - */ -int tox_isconnected(const Tox *tox); - -typedef struct { - /* - * The type of UDP socket created depends on ipv6enabled: - * If set to 0 (zero), creates an IPv4 socket which subsequently only allows - * IPv4 communication - * If set to anything else (default), creates an IPv6 socket which allows both IPv4 AND - * IPv6 communication - */ - uint8_t ipv6enabled; - - /* Set to 1 to disable udp support. (default: 0) - This will force Tox to use TCP only which may slow things down. - Disabling udp support is necessary when using anonymous proxies or Tor.*/ - uint8_t udp_disabled; - - /* Enable proxy support. (only basic TCP socks5 proxy currently supported.) (default: 0 (disabled))*/ - uint8_t proxy_enabled; - char proxy_address[256]; /* Proxy ip or domain in NULL terminated string format. */ - uint16_t proxy_port; /* Proxy port: in host byte order. */ -} Tox_Options; - -/* - * Run this function at startup. - * - * Options are some options that can be passed to the Tox instance (see above struct). - * - * If options is NULL, tox_new() will use default settings. - * - * Initializes a tox structure - * return allocated instance of tox on success. - * return NULL on failure. - */ -Tox *tox_new(Tox_Options *options); - -/* Run this before closing shop. - * Free all datastructures. */ -void tox_kill(Tox *tox); - -/* Return the time in milliseconds before tox_do() should be called again - * for optimal performance. - * - * returns time (in ms) before the next tox_do() needs to be run on success. - */ -uint32_t tox_do_interval(Tox *tox); - -/* The main loop that needs to be run in intervals of tox_do_interval() ms. */ -void tox_do(Tox *tox); - -/* SAVING AND LOADING FUNCTIONS: */ - -/* return size of messenger data (for saving). */ -uint32_t tox_size(const Tox *tox); - -/* Save the messenger in data (must be allocated memory of size Messenger_size()). */ -void tox_save(const Tox *tox, uint8_t *data); - -/* Load the messenger from data of size length. - * NOTE: The Tox save format isn't stable yet meaning this function sometimes - * returns -1 when loading older saves. This however does not mean nothing was - * loaded from the save. - * - * returns 0 on success - * returns -1 on failure - * returns +1 on finding encrypted save data - */ -int tox_load(Tox *tox, const uint8_t *data, uint32_t length); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/Tox/tox/include/toxav.h b/protocols/Tox/tox/include/toxav.h 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 . - * - */ - - -#ifndef __TOXAV -#define __TOXAV -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* vpx_image_t */ -#include - -typedef void ( *ToxAVCallback ) ( void *agent, int32_t call_idx, void *arg ); -typedef struct _ToxAv ToxAv; - -#ifndef __TOX_DEFINED__ -#define __TOX_DEFINED__ -typedef struct Tox Tox; -#endif - -#define RTP_PAYLOAD_SIZE 65535 - - -/** - * @brief Callbacks ids that handle the call states. - */ -typedef enum { - /* Requests */ - av_OnInvite, - av_OnStart, - av_OnCancel, - av_OnReject, - av_OnEnd, - - /* Responses */ - av_OnRinging, - av_OnStarting, - av_OnEnding, - - /* Protocol */ - av_OnRequestTimeout, - av_OnPeerTimeout, - av_OnMediaChange -} ToxAvCallbackID; - - -/** - * @brief Call type identifier. - */ -typedef enum { - TypeAudio = 192, - TypeVideo -} ToxAvCallType; - - -typedef enum { - av_CallNonExistant = -1, - av_CallInviting, /* when sending call invite */ - av_CallStarting, /* when getting call invite */ - av_CallActive, - av_CallHold, - av_CallHanged_up -} ToxAvCallState; - -/** - * @brief Error indicators. - */ -typedef enum { - ErrorNone = 0, - ErrorInternal = -1, /* Internal error */ - ErrorAlreadyInCall = -2, /* Already has an active call */ - ErrorNoCall = -3, /* Trying to perform call action while not in a call */ - ErrorInvalidState = -4, /* Trying to perform call action while in invalid state*/ - ErrorNoRtpSession = -5, /* Trying to perform rtp action on invalid session */ - ErrorAudioPacketLost = -6, /* Indicating packet loss */ - ErrorStartingAudioRtp = -7, /* Error in toxav_prepare_transmission() */ - ErrorStartingVideoRtp = -8 , /* Error in toxav_prepare_transmission() */ - ErrorTerminatingAudioRtp = -9, /* Returned in toxav_kill_transmission() */ - ErrorTerminatingVideoRtp = -10, /* Returned in toxav_kill_transmission() */ - ErrorPacketTooLarge = -11, /* Buffer exceeds size while encoding */ - ErrorInvalidCodecState = -12, /* Codec state not initialized */ - -} ToxAvError; - - -/** - * @brief Locally supported capabilities. - */ -typedef enum { - AudioEncoding = 1 << 0, - AudioDecoding = 1 << 1, - VideoEncoding = 1 << 2, - VideoDecoding = 1 << 3 -} ToxAvCapabilities; - - -/** - * @brief Encoding settings. - */ -typedef struct _ToxAvCodecSettings { - ToxAvCallType call_type; - - uint32_t video_bitrate; /* In kbits/s */ - uint16_t max_video_width; /* In px */ - uint16_t max_video_height; /* In px */ - - uint32_t audio_bitrate; /* In bits/s */ - uint16_t audio_frame_duration; /* In ms */ - uint32_t audio_sample_rate; /* In Hz */ - uint32_t audio_channels; -} ToxAvCSettings; - -extern const ToxAvCSettings av_DefaultSettings; -extern const uint32_t av_jbufdc; /* Jitter buffer default capacity */ -extern const uint32_t av_VADd; /* VAD default treshold */ - -/** - * @brief Start new A/V session. There can only be one session at the time. If you register more - * it will result in undefined behaviour. - * - * @param messenger The messenger handle. - * @param userdata The agent handling A/V session (i.e. phone). - * @param video_width Width of video frame. - * @param video_height Height of video frame. - * @return ToxAv* - * @retval NULL On error. - */ -ToxAv *toxav_new(Tox *messenger, int32_t max_calls); - -/** - * @brief Remove A/V session. - * - * @param av Handler. - * @return void - */ -void toxav_kill(ToxAv *av); - -/** - * @brief Register callback for call state. - * - * @param av Handler. - * @param callback The callback - * @param id One of the ToxAvCallbackID values - * @return void - */ -void toxav_register_callstate_callback (ToxAv *av, ToxAVCallback callback, ToxAvCallbackID id, void *userdata); - -/** - * @brief Register callback for 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/toxdns.h b/protocols/Tox/tox/include/toxdns.h deleted file mode 100644 index 06071b82d6..0000000000 --- a/protocols/Tox/tox/include/toxdns.h +++ /dev/null @@ -1,96 +0,0 @@ -/* toxdns.h - * - * Tox secure username DNS toxid resolving functions. - * - * Copyright (C) 2014 Tox project All Rights Reserved. - * - * This file is part of Tox. - * - * Tox is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tox is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tox. If not, see . - * - */ - -#ifndef TOXDNS_H -#define TOXDNS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Clients are encouraged to set this as the maximum length names can have. */ -#define TOXDNS_MAX_RECOMMENDED_NAME_LENGTH 32 - -/* How to use this api to make secure tox dns3 requests: - * - * 1. Get the public key of a server that supports tox dns3. - * 2. use tox_dns3_new() to create a new object to create DNS requests - * and handle responses for that server. - * 3. Use tox_generate_dns3_string() to generate a string based on the name we want to query and a request_id - * that must be stored somewhere for when we want to decrypt the response. - * 4. take the string and use it for your DNS request like this: - * _4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc._tox.utox.org - * 5. The TXT in the DNS you receive should look like this: - * v=tox3;id=2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp - * 6. Take the id string and use it with tox_decrypt_dns3_TXT() and the request_id corresponding to the - * request we stored earlier to get the Tox id returned by the DNS server. - */ - -/* Create a new tox_dns3 object for server with server_public_key of size TOX_CLIENT_ID_SIZE. - * - * return Null on failure. - * return pointer object on success. - */ -void *tox_dns3_new(uint8_t *server_public_key); - -/* Destroy the tox dns3 object. - */ -void tox_dns3_kill(void *dns3_object); - -/* Generate a dns3 string of string_max_len used to query the dns server referred to by to - * dns3_object for a tox id registered to user with name of name_len. - * - * the uint32_t pointed by request_id will be set to the request id which must be passed to - * tox_decrypt_dns3_TXT() to correctly decode the response. - * - * This is what the string returned looks like: - * 4haaaaipr1o3mz0bxweox541airydbovqlbju51mb4p0ebxq.rlqdj4kkisbep2ks3fj2nvtmk4daduqiueabmexqva1jc - * - * returns length of string on success. - * returns -1 on failure. - */ -int tox_generate_dns3_string(void *dns3_object, uint8_t *string, uint16_t string_max_len, uint32_t *request_id, - uint8_t *name, uint8_t name_len); - -/* Decode and decrypt the id_record returned of length id_record_len into - * tox_id (needs to be at least TOX_FRIEND_ADDRESS_SIZE). - * - * request_id is the request id given by tox_generate_dns3_string() when creating the request. - * - * the id_record passed to this function should look somewhat like this: - * 2vgcxuycbuctvauik3plsv3d3aadv4zfjfhi3thaizwxinelrvigchv0ah3qjcsx5qhmaksb2lv2hm5cwbtx0yp - * - * returns -1 on failure. - * returns 0 on success. - * - */ -int tox_decrypt_dns3_TXT(void *dns3_object, uint8_t *tox_id, uint8_t *id_record, uint32_t id_record_len, - uint32_t request_id); - -#ifdef __cplusplus -} -#endif - -#endif 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 . - * - */ - -#ifndef TOXENCRYPTSAVE_H -#define TOXENCRYPTSAVE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#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 Binary files a/protocols/Tox/tox/lib/x64/libtox-x64.exp and /dev/null 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 Binary files a/protocols/Tox/tox/lib/x64/libtox-x64.lib and /dev/null 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 Binary files a/protocols/Tox/tox/lib/x86/libtox.exp and /dev/null 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 Binary files a/protocols/Tox/tox/lib/x86/libtox.lib and /dev/null differ -- cgit v1.2.3