From 41a5dbf4d9d937b5fe9df3c700e8c43c82f2343c Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 16 Dec 2017 20:26:23 +0300 Subject: Tox: (#1068) - moved to self compiled libtox - removed unused code (multimedia & chatrooms) - removed unneeded files & tools - version bump --- protocols/Tox/Tox.vcxproj | 9 +- protocols/Tox/bin/x64/libtox.dll | Bin 3016025 -> 0 bytes protocols/Tox/bin/x86/libtox.dll | Bin 2753946 -> 0 bytes protocols/Tox/copydll.cmd | 7 - protocols/Tox/include/toxav.h | 763 --------------------- protocols/Tox/include/vpx/vp8.h | 153 ----- protocols/Tox/include/vpx/vp8cx.h | 850 ----------------------- protocols/Tox/include/vpx/vp8dx.h | 180 ----- protocols/Tox/include/vpx/vpx_codec.h | 463 ------------- protocols/Tox/include/vpx/vpx_decoder.h | 365 ---------- protocols/Tox/include/vpx/vpx_encoder.h | 980 --------------------------- protocols/Tox/include/vpx/vpx_frame_buffer.h | 83 --- protocols/Tox/include/vpx/vpx_image.h | 224 ------ protocols/Tox/include/vpx/vpx_integer.h | 63 -- protocols/Tox/res/Icons/audio_call.ico | Bin 5430 -> 0 bytes protocols/Tox/res/Icons/audio_end.ico | Bin 5430 -> 0 bytes protocols/Tox/res/Icons/audio_ring.ico | Bin 5430 -> 0 bytes protocols/Tox/res/Icons/audio_start.ico | Bin 5430 -> 0 bytes protocols/Tox/res/resource.rc | 98 --- protocols/Tox/src/api_av.cpp | 98 --- protocols/Tox/src/api_avatars.cpp | 43 -- protocols/Tox/src/api_connection.cpp | 28 - protocols/Tox/src/api_dns.cpp | 23 - protocols/Tox/src/api_encryption.cpp | 18 - protocols/Tox/src/api_friends.cpp | 135 ---- protocols/Tox/src/api_groupchats.cpp | 96 --- protocols/Tox/src/api_main.cpp | 131 ---- protocols/Tox/src/api_transfer.cpp | 63 -- protocols/Tox/src/main.cpp | 9 +- protocols/Tox/src/resource.h | 14 +- protocols/Tox/src/stdafx.h | 12 - protocols/Tox/src/tox_chatrooms.cpp | 326 --------- protocols/Tox/src/tox_chatrooms.h | 10 - protocols/Tox/src/tox_core.cpp | 16 - protocols/Tox/src/tox_icons.cpp | 4 - protocols/Tox/src/tox_menus.cpp | 12 - protocols/Tox/src/tox_multimedia.cpp | 626 ----------------- protocols/Tox/src/tox_multimedia.h | 84 --- protocols/Tox/src/tox_proto.cpp | 8 - protocols/Tox/src/tox_proto.h | 29 - protocols/Tox/src/tox_thread.h | 13 +- protocols/Tox/src/version.h | 4 +- protocols/Tox/tools/CHANGES | 266 -------- protocols/Tox/tools/FEATURES | 33 - protocols/Tox/tools/INSTALL | 71 -- protocols/Tox/tools/LICENSE | 201 ------ protocols/Tox/tools/README | 139 ---- protocols/Tox/tools/TODO | 28 - protocols/Tox/tools/VERSION | 1 - protocols/Tox/tools/cv2pdb.exe | Bin 243712 -> 0 bytes 50 files changed, 8 insertions(+), 6771 deletions(-) delete mode 100644 protocols/Tox/bin/x64/libtox.dll delete mode 100644 protocols/Tox/bin/x86/libtox.dll delete mode 100644 protocols/Tox/copydll.cmd delete mode 100644 protocols/Tox/include/toxav.h delete mode 100644 protocols/Tox/include/vpx/vp8.h delete mode 100644 protocols/Tox/include/vpx/vp8cx.h delete mode 100644 protocols/Tox/include/vpx/vp8dx.h delete mode 100644 protocols/Tox/include/vpx/vpx_codec.h delete mode 100644 protocols/Tox/include/vpx/vpx_decoder.h delete mode 100644 protocols/Tox/include/vpx/vpx_encoder.h delete mode 100644 protocols/Tox/include/vpx/vpx_frame_buffer.h delete mode 100644 protocols/Tox/include/vpx/vpx_image.h delete mode 100644 protocols/Tox/include/vpx/vpx_integer.h delete mode 100644 protocols/Tox/res/Icons/audio_call.ico delete mode 100644 protocols/Tox/res/Icons/audio_end.ico delete mode 100644 protocols/Tox/res/Icons/audio_ring.ico delete mode 100644 protocols/Tox/res/Icons/audio_start.ico delete mode 100644 protocols/Tox/src/api_av.cpp delete mode 100644 protocols/Tox/src/api_avatars.cpp delete mode 100644 protocols/Tox/src/api_connection.cpp delete mode 100644 protocols/Tox/src/api_dns.cpp delete mode 100644 protocols/Tox/src/api_encryption.cpp delete mode 100644 protocols/Tox/src/api_friends.cpp delete mode 100644 protocols/Tox/src/api_groupchats.cpp delete mode 100644 protocols/Tox/src/api_main.cpp delete mode 100644 protocols/Tox/src/api_transfer.cpp delete mode 100644 protocols/Tox/src/tox_chatrooms.cpp delete mode 100644 protocols/Tox/src/tox_chatrooms.h delete mode 100644 protocols/Tox/src/tox_multimedia.cpp delete mode 100644 protocols/Tox/src/tox_multimedia.h delete mode 100644 protocols/Tox/tools/CHANGES delete mode 100644 protocols/Tox/tools/FEATURES delete mode 100644 protocols/Tox/tools/INSTALL delete mode 100644 protocols/Tox/tools/LICENSE delete mode 100644 protocols/Tox/tools/README delete mode 100644 protocols/Tox/tools/TODO delete mode 100644 protocols/Tox/tools/VERSION delete mode 100644 protocols/Tox/tools/cv2pdb.exe diff --git a/protocols/Tox/Tox.vcxproj b/protocols/Tox/Tox.vcxproj index 622d96816b..f786bfae1a 100644 --- a/protocols/Tox/Tox.vcxproj +++ b/protocols/Tox/Tox.vcxproj @@ -32,12 +32,6 @@ Winmm.lib;dnsapi.lib;comctl32.lib;%(AdditionalDependencies) - - call copydll.cmd x86 "$(OutputPath)..\Libs" - - - call copydll.cmd x64 "$(OutputPath)..\Libs" - @@ -52,5 +46,8 @@ {f6a9340e-b8d9-4c75-be30-47dc66d0abc7} + + {a21c50cd-28a6-481a-a12b-47189fe66641} + \ No newline at end of file diff --git a/protocols/Tox/bin/x64/libtox.dll b/protocols/Tox/bin/x64/libtox.dll deleted file mode 100644 index 17fde89b19..0000000000 Binary files a/protocols/Tox/bin/x64/libtox.dll and /dev/null differ diff --git a/protocols/Tox/bin/x86/libtox.dll b/protocols/Tox/bin/x86/libtox.dll deleted file mode 100644 index 7e392e4665..0000000000 Binary files a/protocols/Tox/bin/x86/libtox.dll and /dev/null differ diff --git a/protocols/Tox/copydll.cmd b/protocols/Tox/copydll.cmd deleted file mode 100644 index dffde39b53..0000000000 --- a/protocols/Tox/copydll.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@echo off -set p1=%1 -set p2=%2 -set p3="%~2\libtox.dll" -copy /y bin\%p1%\libtox.dll %p2% -tools\cv2pdb.exe %p3% -exit 0 diff --git a/protocols/Tox/include/toxav.h b/protocols/Tox/include/toxav.h deleted file mode 100644 index 2a8b90fa5e..0000000000 --- a/protocols/Tox/include/toxav.h +++ /dev/null @@ -1,763 +0,0 @@ -/* - * Copyright © 2016-2017 The TokTok team. - * Copyright © 2013-2015 Tox project. - * - * This file is part of Tox, the free peer to peer instant messenger. - * - * 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_H -#define TOXAV_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** \page av Public audio/video API for Tox clients. - * - * This API can handle multiple calls. Each call has its state, in very rare - * occasions the library can change the state of the call without apps knowledge. - * - */ -/** \subsection events Events and callbacks - * - * As in Core API, events are handled by callbacks. One callback can be - * registered per event. All events have a callback function type named - * `toxav_{event}_cb` and a function to register it named `toxav_callback_{event}`. - * Passing a NULL callback will result in no callback being registered for that - * event. Only one callback per event can be registered, so if a client needs - * multiple event listeners, it needs to implement the dispatch functionality - * itself. Unlike Core API, lack of some event handlers will cause the the - * library to drop calls before they are started. Hanging up call from a - * callback causes undefined behaviour. - * - */ -/** \subsection threading Threading implications - * - * Unlike the Core API, this API is fully thread-safe. The library will ensure - * the proper synchronization of parallel calls. - * - * A common way to run ToxAV (multiple or single instance) is to have a thread, - * separate from tox instance thread, running a simple toxav_iterate loop, - * sleeping for toxav_iteration_interval * milliseconds on each iteration. - * - * An important thing to note is that events are triggered from both tox and - * toxav thread (see above). Audio and video receive frame events are triggered - * from toxav thread while all the other events are triggered from tox thread. - * - * Tox thread has priority with mutex mechanisms. Any api function can - * fail if mutexes are held by tox thread in which case they will set SYNC - * error code. - */ -/** - * External Tox type. - */ -#ifndef TOX_DEFINED -#define TOX_DEFINED -typedef struct Tox Tox; -#endif /* TOX_DEFINED */ - -/** - * ToxAV. - */ -/** - * The ToxAV instance type. Each ToxAV instance can be bound to only one Tox - * instance, and Tox instance can have only one ToxAV instance. One must make - * sure to close ToxAV instance prior closing Tox instance otherwise undefined - * behaviour occurs. Upon closing of ToxAV instance, all active calls will be - * forcibly terminated without notifying peers. - * - */ -#ifndef TOXAV_DEFINED -#define TOXAV_DEFINED -typedef struct ToxAV ToxAV; -#endif /* TOXAV_DEFINED */ - - -/******************************************************************************* - * - * :: Creation and destruction - * - ******************************************************************************/ - - - -typedef enum TOXAV_ERR_NEW { - - /** - * The function returned successfully. - */ - TOXAV_ERR_NEW_OK, - - /** - * One of the arguments to the function was NULL when it was not expected. - */ - TOXAV_ERR_NEW_NULL, - - /** - * Memory allocation failure while trying to allocate structures required for - * the A/V session. - */ - TOXAV_ERR_NEW_MALLOC, - - /** - * Attempted to create a second session for the same Tox instance. - */ - TOXAV_ERR_NEW_MULTIPLE, - -} TOXAV_ERR_NEW; - - -/** - * Start new A/V session. There can only be only one session per Tox instance. - */ -ToxAV *toxav_new(Tox *tox, TOXAV_ERR_NEW *error); - -/** - * Releases all resources associated with the A/V session. - * - * If any calls were ongoing, these will be forcibly terminated without - * notifying peers. After calling this function, no other functions may be - * called and the av pointer becomes invalid. - */ -void toxav_kill(ToxAV *av); - -/** - * Returns the Tox instance the A/V object was created for. - */ -Tox *toxav_get_tox(const ToxAV *av); - - -/******************************************************************************* - * - * :: A/V event loop - * - ******************************************************************************/ - - - -/** - * Returns the interval in milliseconds when the next toxav_iterate call should - * be. If no call is active at the moment, this function returns 200. - */ -uint32_t toxav_iteration_interval(const ToxAV *av); - -/** - * Main loop for the session. This function needs to be called in intervals of - * toxav_iteration_interval() milliseconds. It is best called in the separate - * thread from tox_iterate. - */ -void toxav_iterate(ToxAV *av); - - -/******************************************************************************* - * - * :: Call setup - * - ******************************************************************************/ - - - -typedef enum TOXAV_ERR_CALL { - - /** - * The function returned successfully. - */ - TOXAV_ERR_CALL_OK, - - /** - * A resource allocation error occurred while trying to create the structures - * required for the call. - */ - TOXAV_ERR_CALL_MALLOC, - - /** - * Synchronization error occurred. - */ - TOXAV_ERR_CALL_SYNC, - - /** - * The friend number did not designate a valid friend. - */ - TOXAV_ERR_CALL_FRIEND_NOT_FOUND, - - /** - * The friend was valid, but not currently connected. - */ - TOXAV_ERR_CALL_FRIEND_NOT_CONNECTED, - - /** - * Attempted to call a friend while already in an audio or video call with - * them. - */ - TOXAV_ERR_CALL_FRIEND_ALREADY_IN_CALL, - - /** - * Audio or video bit rate is invalid. - */ - TOXAV_ERR_CALL_INVALID_BIT_RATE, - -} TOXAV_ERR_CALL; - - -/** - * Call a friend. This will start ringing the friend. - * - * It is the client's responsibility to stop ringing after a certain timeout, - * if such behaviour is desired. If the client does not stop ringing, the - * library will not stop until the friend is disconnected. Audio and video - * receiving are both enabled by default. - * - * @param friend_number The friend number of the friend that should be called. - * @param audio_bit_rate Audio bit rate in Kb/sec. Set this to 0 to disable - * audio sending. - * @param video_bit_rate Video bit rate in Kb/sec. Set this to 0 to disable - * video sending. - */ -bool toxav_call(ToxAV *av, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, - TOXAV_ERR_CALL *error); - -/** - * The function type for the call callback. - * - * @param friend_number The friend number from which the call is incoming. - * @param audio_enabled True if friend is sending audio. - * @param video_enabled True if friend is sending video. - */ -typedef void toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *user_data); - - -/** - * Set the callback for the `call` event. Pass NULL to unset. - * - */ -void toxav_callback_call(ToxAV *av, toxav_call_cb *callback, void *user_data); - -typedef enum TOXAV_ERR_ANSWER { - - /** - * The function returned successfully. - */ - TOXAV_ERR_ANSWER_OK, - - /** - * Synchronization error occurred. - */ - TOXAV_ERR_ANSWER_SYNC, - - /** - * Failed to initialize codecs for call session. Note that codec initiation - * will fail if there is no receive callback registered for either audio or - * video. - */ - TOXAV_ERR_ANSWER_CODEC_INITIALIZATION, - - /** - * The friend number did not designate a valid friend. - */ - TOXAV_ERR_ANSWER_FRIEND_NOT_FOUND, - - /** - * The friend was valid, but they are not currently trying to initiate a call. - * This is also returned if this client is already in a call with the friend. - */ - TOXAV_ERR_ANSWER_FRIEND_NOT_CALLING, - - /** - * Audio or video bit rate is invalid. - */ - TOXAV_ERR_ANSWER_INVALID_BIT_RATE, - -} TOXAV_ERR_ANSWER; - - -/** - * Accept an incoming call. - * - * If answering fails for any reason, the call will still be pending and it is - * possible to try and answer it later. Audio and video receiving are both - * enabled by default. - * - * @param friend_number The friend number of the friend that is calling. - * @param audio_bit_rate Audio bit rate in Kb/sec. Set this to 0 to disable - * audio sending. - * @param video_bit_rate Video bit rate in Kb/sec. Set this to 0 to disable - * video sending. - */ -bool toxav_answer(ToxAV *av, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, - TOXAV_ERR_ANSWER *error); - - -/******************************************************************************* - * - * :: Call state graph - * - ******************************************************************************/ - - - -enum TOXAV_FRIEND_CALL_STATE { - - /** - * The empty bit mask. None of the bits specified below are set. - */ - TOXAV_FRIEND_CALL_STATE_NONE = 0, - - /** - * Set by the AV core if an error occurred on the remote end or if friend - * timed out. This is the final state after which no more state - * transitions can occur for the call. This call state will never be triggered - * in combination with other call states. - */ - TOXAV_FRIEND_CALL_STATE_ERROR = 1, - - /** - * The call has finished. This is the final state after which no more state - * transitions can occur for the call. This call state will never be - * triggered in combination with other call states. - */ - TOXAV_FRIEND_CALL_STATE_FINISHED = 2, - - /** - * The flag that marks that friend is sending audio. - */ - TOXAV_FRIEND_CALL_STATE_SENDING_A = 4, - - /** - * The flag that marks that friend is sending video. - */ - TOXAV_FRIEND_CALL_STATE_SENDING_V = 8, - - /** - * The flag that marks that friend is receiving audio. - */ - TOXAV_FRIEND_CALL_STATE_ACCEPTING_A = 16, - - /** - * The flag that marks that friend is receiving video. - */ - TOXAV_FRIEND_CALL_STATE_ACCEPTING_V = 32, - -}; - - -/** - * The function type for the call_state callback. - * - * @param friend_number The friend number for which the call state changed. - * @param state The bitmask of the new call state which is guaranteed to be - * different than the previous state. The state is set to 0 when the call is - * paused. The bitmask represents all the activities currently performed by the - * friend. - */ -typedef void toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data); - - -/** - * Set the callback for the `call_state` event. Pass NULL to unset. - * - */ -void toxav_callback_call_state(ToxAV *av, toxav_call_state_cb *callback, void *user_data); - - -/******************************************************************************* - * - * :: Call control - * - ******************************************************************************/ - - - -typedef enum TOXAV_CALL_CONTROL { - - /** - * Resume a previously paused call. Only valid if the pause was caused by this - * client, if not, this control is ignored. Not valid before the call is accepted. - */ - TOXAV_CALL_CONTROL_RESUME, - - /** - * Put a call on hold. Not valid before the call is accepted. - */ - TOXAV_CALL_CONTROL_PAUSE, - - /** - * Reject a call if it was not answered, yet. Cancel a call after it was - * answered. - */ - TOXAV_CALL_CONTROL_CANCEL, - - /** - * Request that the friend stops sending audio. Regardless of the friend's - * compliance, this will cause the audio_receive_frame event to stop being - * triggered on receiving an audio frame from the friend. - */ - TOXAV_CALL_CONTROL_MUTE_AUDIO, - - /** - * Calling this control will notify client to start sending audio again. - */ - TOXAV_CALL_CONTROL_UNMUTE_AUDIO, - - /** - * Request that the friend stops sending video. Regardless of the friend's - * compliance, this will cause the video_receive_frame event to stop being - * triggered on receiving a video frame from the friend. - */ - TOXAV_CALL_CONTROL_HIDE_VIDEO, - - /** - * Calling this control will notify client to start sending video again. - */ - TOXAV_CALL_CONTROL_SHOW_VIDEO, - -} TOXAV_CALL_CONTROL; - - -typedef enum TOXAV_ERR_CALL_CONTROL { - - /** - * The function returned successfully. - */ - TOXAV_ERR_CALL_CONTROL_OK, - - /** - * Synchronization error occurred. - */ - TOXAV_ERR_CALL_CONTROL_SYNC, - - /** - * The friend_number passed did not designate a valid friend. - */ - TOXAV_ERR_CALL_CONTROL_FRIEND_NOT_FOUND, - - /** - * This client is currently not in a call with the friend. Before the call is - * answered, only CANCEL is a valid control. - */ - TOXAV_ERR_CALL_CONTROL_FRIEND_NOT_IN_CALL, - - /** - * Happens if user tried to pause an already paused call or if trying to - * resume a call that is not paused. - */ - TOXAV_ERR_CALL_CONTROL_INVALID_TRANSITION, - -} TOXAV_ERR_CALL_CONTROL; - - -/** - * Sends a call control command to a friend. - * - * @param friend_number The friend number of the friend this client is in a call - * with. - * @param control The control command to send. - * - * @return true on success. - */ -bool toxav_call_control(ToxAV *av, uint32_t friend_number, TOXAV_CALL_CONTROL control, TOXAV_ERR_CALL_CONTROL *error); - - -/******************************************************************************* - * - * :: Controlling bit rates - * - ******************************************************************************/ - - - -typedef enum TOXAV_ERR_BIT_RATE_SET { - - /** - * The function returned successfully. - */ - TOXAV_ERR_BIT_RATE_SET_OK, - - /** - * Synchronization error occurred. - */ - TOXAV_ERR_BIT_RATE_SET_SYNC, - - /** - * The audio bit rate passed was not one of the supported values. - */ - TOXAV_ERR_BIT_RATE_SET_INVALID_AUDIO_BIT_RATE, - - /** - * The video bit rate passed was not one of the supported values. - */ - TOXAV_ERR_BIT_RATE_SET_INVALID_VIDEO_BIT_RATE, - - /** - * The friend_number passed did not designate a valid friend. - */ - TOXAV_ERR_BIT_RATE_SET_FRIEND_NOT_FOUND, - - /** - * This client is currently not in a call with the friend. - */ - TOXAV_ERR_BIT_RATE_SET_FRIEND_NOT_IN_CALL, - -} TOXAV_ERR_BIT_RATE_SET; - - -/** - * Set the bit rate to be used in subsequent audio/video frames. - * - * @param friend_number The friend number of the friend for which to set the - * bit rate. - * @param audio_bit_rate The new audio bit rate in Kb/sec. Set to 0 to disable - * audio sending. Set to -1 to leave unchanged. - * @param video_bit_rate The new video bit rate in Kb/sec. Set to 0 to disable - * video sending. Set to -1 to leave unchanged. - * - */ -bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rate, int32_t video_bit_rate, - TOXAV_ERR_BIT_RATE_SET *error); - -/** - * The function type for the bit_rate_status callback. The event is triggered - * when the network becomes too saturated for current bit rates at which - * point core suggests new bit rates. - * - * @param friend_number The friend number of the friend for which to set the - * bit rate. - * @param audio_bit_rate Suggested maximum audio bit rate in Kb/sec. - * @param video_bit_rate Suggested maximum video bit rate in Kb/sec. - */ -typedef void toxav_bit_rate_status_cb(ToxAV *av, uint32_t friend_number, uint32_t audio_bit_rate, - uint32_t video_bit_rate, void *user_data); - - -/** - * Set the callback for the `bit_rate_status` event. Pass NULL to unset. - * - */ -void toxav_callback_bit_rate_status(ToxAV *av, toxav_bit_rate_status_cb *callback, void *user_data); - - -/******************************************************************************* - * - * :: A/V sending - * - ******************************************************************************/ - - - -typedef enum TOXAV_ERR_SEND_FRAME { - - /** - * The function returned successfully. - */ - TOXAV_ERR_SEND_FRAME_OK, - - /** - * In case of video, one of Y, U, or V was NULL. In case of audio, the samples - * data pointer was NULL. - */ - TOXAV_ERR_SEND_FRAME_NULL, - - /** - * The friend_number passed did not designate a valid friend. - */ - TOXAV_ERR_SEND_FRAME_FRIEND_NOT_FOUND, - - /** - * This client is currently not in a call with the friend. - */ - TOXAV_ERR_SEND_FRAME_FRIEND_NOT_IN_CALL, - - /** - * Synchronization error occurred. - */ - TOXAV_ERR_SEND_FRAME_SYNC, - - /** - * One of the frame parameters was invalid. E.g. the resolution may be too - * small or too large, or the audio sampling rate may be unsupported. - */ - TOXAV_ERR_SEND_FRAME_INVALID, - - /** - * Either friend turned off audio or video receiving or we turned off sending - * for the said payload. - */ - TOXAV_ERR_SEND_FRAME_PAYLOAD_TYPE_DISABLED, - - /** - * Failed to push frame through rtp interface. - */ - TOXAV_ERR_SEND_FRAME_RTP_FAILED, - -} TOXAV_ERR_SEND_FRAME; - - -/** - * Send an audio frame to a friend. - * - * The expected format of the PCM data is: [s1c1][s1c2][...][s2c1][s2c2][...]... - * Meaning: sample 1 for channel 1, sample 1 for channel 2, ... - * For mono audio, this has no meaning, every sample is subsequent. For stereo, - * this means the expected format is LRLRLR... with samples for left and right - * alternating. - * - * @param friend_number The friend number of the friend to which to send an - * audio frame. - * @param pcm An array of audio samples. The size of this array must be - * sample_count * channels. - * @param sample_count Number of samples in this frame. Valid numbers here are - * ((sample rate) * (audio length) / 1000), where audio length can be - * 2.5, 5, 10, 20, 40 or 60 millseconds. - * @param channels Number of audio channels. Supported values are 1 and 2. - * @param sampling_rate Audio sampling rate used in this frame. Valid sampling - * rates are 8000, 12000, 16000, 24000, or 48000. - */ -bool toxav_audio_send_frame(ToxAV *av, uint32_t friend_number, const int16_t *pcm, size_t sample_count, - uint8_t channels, uint32_t sampling_rate, TOXAV_ERR_SEND_FRAME *error); - -/** - * Send a video frame to a friend. - * - * Y - plane should be of size: height * width - * U - plane should be of size: (height/2) * (width/2) - * V - plane should be of size: (height/2) * (width/2) - * - * @param friend_number The friend number of the friend to which to send a video - * frame. - * @param width Width of the frame in pixels. - * @param height Height of the frame in pixels. - * @param y Y (Luminance) plane data. - * @param u U (Chroma) plane data. - * @param v V (Chroma) plane data. - */ -bool toxav_video_send_frame(ToxAV *av, uint32_t friend_number, uint16_t width, uint16_t height, const uint8_t *y, - const uint8_t *u, const uint8_t *v, TOXAV_ERR_SEND_FRAME *error); - - -/******************************************************************************* - * - * :: A/V receiving - * - ******************************************************************************/ - - - -/** - * The function type for the audio_receive_frame callback. The callback can be - * called multiple times per single iteration depending on the amount of queued - * frames in the buffer. The received format is the same as in send function. - * - * @param friend_number The friend number of the friend who sent an audio frame. - * @param pcm An array of audio samples (sample_count * channels elements). - * @param sample_count The number of audio samples per channel in the PCM array. - * @param channels Number of audio channels. - * @param sampling_rate Sampling rate used in this frame. - * - */ -typedef void toxav_audio_receive_frame_cb(ToxAV *av, uint32_t friend_number, const int16_t *pcm, size_t sample_count, - uint8_t channels, uint32_t sampling_rate, void *user_data); - - -/** - * Set the callback for the `audio_receive_frame` event. Pass NULL to unset. - * - */ -void toxav_callback_audio_receive_frame(ToxAV *av, toxav_audio_receive_frame_cb *callback, void *user_data); - -/** - * The function type for the video_receive_frame callback. - * - * The size of plane data is derived from width and height as documented - * below. - * - * Strides represent padding for each plane that may or may not be present. - * You must handle strides in your image processing code. Strides are - * negative if the image is bottom-up hence why you MUST abs() it when - * calculating plane buffer size. - * - * @param friend_number The friend number of the friend who sent a video frame. - * @param width Width of the frame in pixels. - * @param height Height of the frame in pixels. - * @param y Luminosity plane. Size = MAX(width, abs(ystride)) * height. - * @param u U chroma plane. Size = MAX(width/2, abs(ustride)) * (height/2). - * @param v V chroma plane. Size = MAX(width/2, abs(vstride)) * (height/2). - * - * @param ystride Luminosity plane stride. - * @param ustride U chroma plane stride. - * @param vstride V chroma plane stride. - */ -typedef void toxav_video_receive_frame_cb(ToxAV *av, uint32_t friend_number, uint16_t width, uint16_t height, - const uint8_t *y, const uint8_t *u, const uint8_t *v, int32_t ystride, int32_t ustride, int32_t vstride, - void *user_data); - - -/** - * Set the callback for the `video_receive_frame` event. Pass NULL to unset. - * - */ -void toxav_callback_video_receive_frame(ToxAV *av, toxav_video_receive_frame_cb *callback, void *user_data); - -/** - * NOTE Compatibility with old toxav group calls. TODO(iphydf): remove - */ -/* 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)(void *, 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)(void *, 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_H */ diff --git a/protocols/Tox/include/vpx/vp8.h b/protocols/Tox/include/vpx/vp8.h deleted file mode 100644 index 059c9d0f65..0000000000 --- a/protocols/Tox/include/vpx/vp8.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/*!\defgroup vp8 VP8 - * \ingroup codecs - * VP8 is vpx's newest video compression algorithm that uses motion - * compensated prediction, Discrete Cosine Transform (DCT) coding of the - * prediction error signal and context dependent entropy coding techniques - * based on arithmetic principles. It features: - * - YUV 4:2:0 image format - * - Macro-block based coding (16x16 luma plus two 8x8 chroma) - * - 1/4 (1/8) pixel accuracy motion compensated prediction - * - 4x4 DCT transform - * - 128 level linear quantizer - * - In loop deblocking filter - * - Context-based entropy coding - * - * @{ - */ -/*!\file - * \brief Provides controls common to both the VP8 encoder and decoder. - */ -#ifndef VPX_VP8_H_ -#define VPX_VP8_H_ - -#include "./vpx_codec.h" -#include "./vpx_image.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*!\brief Control functions - * - * The set of macros define the control functions of VP8 interface - */ -enum vp8_com_control_id { - /*!\brief pass in an external frame into decoder to be used as reference frame - */ - VP8_SET_REFERENCE = 1, - VP8_COPY_REFERENCE = 2, /**< get a copy of reference frame from the decoder */ - VP8_SET_POSTPROC = 3, /**< set the decoder's post processing settings */ - VP8_SET_DBG_COLOR_REF_FRAME = 4, /**< \deprecated */ - VP8_SET_DBG_COLOR_MB_MODES = 5, /**< \deprecated */ - VP8_SET_DBG_COLOR_B_MODES = 6, /**< \deprecated */ - VP8_SET_DBG_DISPLAY_MV = 7, /**< \deprecated */ - - /* TODO(jkoleszar): The encoder incorrectly reuses some of these values (5+) - * for its control ids. These should be migrated to something like the - * VP8_DECODER_CTRL_ID_START range next time we're ready to break the ABI. - */ - VP9_GET_REFERENCE = 128, /**< get a pointer to a reference frame */ - VP8_COMMON_CTRL_ID_MAX, - VP8_DECODER_CTRL_ID_START = 256 -}; - -/*!\brief post process flags - * - * The set of macros define VP8 decoder post processing flags - */ -enum vp8_postproc_level { - VP8_NOFILTERING = 0, - VP8_DEBLOCK = 1 << 0, - VP8_DEMACROBLOCK = 1 << 1, - VP8_ADDNOISE = 1 << 2, - VP8_DEBUG_TXT_FRAME_INFO = 1 << 3, /**< print frame information */ - VP8_DEBUG_TXT_MBLK_MODES = - 1 << 4, /**< print macro block modes over each macro block */ - VP8_DEBUG_TXT_DC_DIFF = 1 << 5, /**< print dc diff for each macro block */ - VP8_DEBUG_TXT_RATE_INFO = 1 << 6, /**< print video rate info (encoder only) */ - VP8_MFQE = 1 << 10 -}; - -/*!\brief post process flags - * - * This define a structure that describe the post processing settings. For - * the best objective measure (using the PSNR metric) set post_proc_flag - * to VP8_DEBLOCK and deblocking_level to 1. - */ - -typedef struct vp8_postproc_cfg { - /*!\brief the types of post processing to be done, should be combination of - * "vp8_postproc_level" */ - int post_proc_flag; - int deblocking_level; /**< the strength of deblocking, valid range [0, 16] */ - int noise_level; /**< the strength of additive noise, valid range [0, 16] */ -} vp8_postproc_cfg_t; - -/*!\brief reference frame type - * - * The set of macros define the type of VP8 reference frames - */ -typedef enum vpx_ref_frame_type { - VP8_LAST_FRAME = 1, - VP8_GOLD_FRAME = 2, - VP8_ALTR_FRAME = 4 -} vpx_ref_frame_type_t; - -/*!\brief reference frame data struct - * - * Define the data struct to access vp8 reference frames. - */ -typedef struct vpx_ref_frame { - vpx_ref_frame_type_t frame_type; /**< which reference frame */ - vpx_image_t img; /**< reference frame data in image format */ -} vpx_ref_frame_t; - -/*!\brief VP9 specific reference frame data struct - * - * Define the data struct to access vp9 reference frames. - */ -typedef struct vp9_ref_frame { - int idx; /**< frame index to get (input) */ - vpx_image_t img; /**< img structure to populate (output) */ -} vp9_ref_frame_t; - -/*!\cond */ -/*!\brief vp8 decoder control function parameter type - * - * defines the data type for each of VP8 decoder control function requires - */ -VPX_CTRL_USE_TYPE(VP8_SET_REFERENCE, vpx_ref_frame_t *) -#define VPX_CTRL_VP8_SET_REFERENCE -VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *) -#define VPX_CTRL_VP8_COPY_REFERENCE -VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *) -#define VPX_CTRL_VP8_SET_POSTPROC -VPX_CTRL_USE_TYPE_DEPRECATED(VP8_SET_DBG_COLOR_REF_FRAME, int) -#define VPX_CTRL_VP8_SET_DBG_COLOR_REF_FRAME -VPX_CTRL_USE_TYPE_DEPRECATED(VP8_SET_DBG_COLOR_MB_MODES, int) -#define VPX_CTRL_VP8_SET_DBG_COLOR_MB_MODES -VPX_CTRL_USE_TYPE_DEPRECATED(VP8_SET_DBG_COLOR_B_MODES, int) -#define VPX_CTRL_VP8_SET_DBG_COLOR_B_MODES -VPX_CTRL_USE_TYPE_DEPRECATED(VP8_SET_DBG_DISPLAY_MV, int) -#define VPX_CTRL_VP8_SET_DBG_DISPLAY_MV -VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *) -#define VPX_CTRL_VP9_GET_REFERENCE - -/*!\endcond */ -/*! @} - end defgroup vp8 */ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // VPX_VP8_H_ diff --git a/protocols/Tox/include/vpx/vp8cx.h b/protocols/Tox/include/vpx/vp8cx.h deleted file mode 100644 index cc90159bc3..0000000000 --- a/protocols/Tox/include/vpx/vp8cx.h +++ /dev/null @@ -1,850 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -#ifndef VPX_VP8CX_H_ -#define VPX_VP8CX_H_ - -/*!\defgroup vp8_encoder WebM VP8/VP9 Encoder - * \ingroup vp8 - * - * @{ - */ -#include "./vp8.h" -#include "./vpx_encoder.h" - -/*!\file - * \brief Provides definitions for using VP8 or VP9 encoder algorithm within the - * vpx Codec Interface. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/*!\name Algorithm interface for VP8 - * - * This interface provides the capability to encode raw VP8 streams. - * @{ - */ -extern vpx_codec_iface_t vpx_codec_vp8_cx_algo; -extern vpx_codec_iface_t *vpx_codec_vp8_cx(void); -/*!@} - end algorithm interface member group*/ - -/*!\name Algorithm interface for VP9 - * - * This interface provides the capability to encode raw VP9 streams. - * @{ - */ -extern vpx_codec_iface_t vpx_codec_vp9_cx_algo; -extern vpx_codec_iface_t *vpx_codec_vp9_cx(void); -/*!@} - end algorithm interface member group*/ - -/* - * Algorithm Flags - */ - -/*!\brief Don't reference the last frame - * - * When this flag is set, the encoder will not use the last frame as a - * predictor. When not set, the encoder will choose whether to use the - * last frame or not automatically. - */ -#define VP8_EFLAG_NO_REF_LAST (1 << 16) - -/*!\brief Don't reference the golden frame - * - * When this flag is set, the encoder will not use the golden frame as a - * predictor. When not set, the encoder will choose whether to use the - * golden frame or not automatically. - */ -#define VP8_EFLAG_NO_REF_GF (1 << 17) - -/*!\brief Don't reference the alternate reference frame - * - * When this flag is set, the encoder will not use the alt ref frame as a - * predictor. When not set, the encoder will choose whether to use the - * alt ref frame or not automatically. - */ -#define VP8_EFLAG_NO_REF_ARF (1 << 21) - -/*!\brief Don't update the last frame - * - * When this flag is set, the encoder will not update the last frame with - * the contents of the current frame. - */ -#define VP8_EFLAG_NO_UPD_LAST (1 << 18) - -/*!\brief Don't update the golden frame - * - * When this flag is set, the encoder will not update the golden frame with - * the contents of the current frame. - */ -#define VP8_EFLAG_NO_UPD_GF (1 << 22) - -/*!\brief Don't update the alternate reference frame - * - * When this flag is set, the encoder will not update the alt ref frame with - * the contents of the current frame. - */ -#define VP8_EFLAG_NO_UPD_ARF (1 << 23) - -/*!\brief Force golden frame update - * - * When this flag is set, the encoder copy the contents of the current frame - * to the golden frame buffer. - */ -#define VP8_EFLAG_FORCE_GF (1 << 19) - -/*!\brief Force alternate reference frame update - * - * When this flag is set, the encoder copy the contents of the current frame - * to the alternate reference frame buffer. - */ -#define VP8_EFLAG_FORCE_ARF (1 << 24) - -/*!\brief Disable entropy update - * - * When this flag is set, the encoder will not update its internal entropy - * model based on the entropy of this frame. - */ -#define VP8_EFLAG_NO_UPD_ENTROPY (1 << 20) - -/*!\brief VPx encoder control functions - * - * This set of macros define the control functions available for VPx - * encoder interface. - * - * \sa #vpx_codec_control - */ -enum vp8e_enc_control_id { - /*!\brief Codec control function to pass an ROI map to encoder. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_ROI_MAP = 8, - - /*!\brief Codec control function to pass an Active map to encoder. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_ACTIVEMAP, - - /*!\brief Codec control function to set encoder scaling mode. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_SCALEMODE = 11, - - /*!\brief Codec control function to set encoder internal speed settings. - * - * Changes in this value influences, among others, the encoder's selection - * of motion estimation methods. Values greater than 0 will increase encoder - * speed at the expense of quality. - * - * \note Valid range for VP8: -16..16 - * \note Valid range for VP9: -8..8 - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_CPUUSED = 13, - - /*!\brief Codec control function to enable automatic set and use alf frames. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_ENABLEAUTOALTREF, - - /*!\brief control function to set noise sensitivity - * - * 0: off, 1: OnYOnly, 2: OnYUV, - * 3: OnYUVAggressive, 4: Adaptive - * - * Supported in codecs: VP8 - */ - VP8E_SET_NOISE_SENSITIVITY, - - /*!\brief Codec control function to set sharpness. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_SHARPNESS, - - /*!\brief Codec control function to set the threshold for MBs treated static. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_STATIC_THRESHOLD, - - /*!\brief Codec control function to set the number of token partitions. - * - * Supported in codecs: VP8 - */ - VP8E_SET_TOKEN_PARTITIONS, - - /*!\brief Codec control function to get last quantizer chosen by the encoder. - * - * Return value uses internal quantizer scale defined by the codec. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_GET_LAST_QUANTIZER, - - /*!\brief Codec control function to get last quantizer chosen by the encoder. - * - * Return value uses the 0..63 scale as used by the rc_*_quantizer config - * parameters. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_GET_LAST_QUANTIZER_64, - - /*!\brief Codec control function to set the max no of frames to create arf. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_ARNR_MAXFRAMES, - - /*!\brief Codec control function to set the filter strength for the arf. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_ARNR_STRENGTH, - - /*!\deprecated control function to set the filter type to use for the arf. */ - VP8E_SET_ARNR_TYPE, - - /*!\brief Codec control function to set visual tuning. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_TUNING, - - /*!\brief Codec control function to set constrained quality level. - * - * \attention For this value to be used vpx_codec_enc_cfg_t::g_usage must be - * set to #VPX_CQ. - * \note Valid range: 0..63 - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_CQ_LEVEL, - - /*!\brief Codec control function to set Max data rate for Intra frames. - * - * This value controls additional clamping on the maximum size of a - * keyframe. It is expressed as a percentage of the average - * per-frame bitrate, with the special (and default) value 0 meaning - * unlimited, or no additional clamping beyond the codec's built-in - * algorithm. - * - * For example, to allocate no more than 4.5 frames worth of bitrate - * to a keyframe, set this to 450. - * - * Supported in codecs: VP8, VP9 - */ - VP8E_SET_MAX_INTRA_BITRATE_PCT, - - /*!\brief Codec control function to set reference and update frame flags. - * - * Supported in codecs: VP8 - */ - VP8E_SET_FRAME_FLAGS, - - /*!\brief Codec control function to set max data rate for Inter frames. - * - * This value controls additional clamping on the maximum size of an - * inter frame. It is expressed as a percentage of the average - * per-frame bitrate, with the special (and default) value 0 meaning - * unlimited, or no additional clamping beyond the codec's built-in - * algorithm. - * - * For example, to allow no more than 4.5 frames worth of bitrate - * to an inter frame, set this to 450. - * - * Supported in codecs: VP9 - */ - VP9E_SET_MAX_INTER_BITRATE_PCT, - - /*!\brief Boost percentage for Golden Frame in CBR mode. - * - * This value controls the amount of boost given to Golden Frame in - * CBR mode. It is expressed as a percentage of the average - * per-frame bitrate, with the special (and default) value 0 meaning - * the feature is off, i.e., no golden frame boost in CBR mode and - * average bitrate target is used. - * - * For example, to allow 100% more bits, i.e, 2X, in a golden frame - * than average frame, set this to 100. - * - * Supported in codecs: VP9 - */ - VP9E_SET_GF_CBR_BOOST_PCT, - - /*!\brief Codec control function to set the temporal layer id. - * - * For temporal scalability: this control allows the application to set the - * layer id for each frame to be encoded. Note that this control must be set - * for every frame prior to encoding. The usage of this control function - * supersedes the internal temporal pattern counter, which is now deprecated. - * - * Supported in codecs: VP8 - */ - VP8E_SET_TEMPORAL_LAYER_ID, - - /*!\brief Codec control function to set encoder screen content mode. - * - * 0: off, 1: On, 2: On with more aggressive rate control. - * - * Supported in codecs: VP8 - */ - VP8E_SET_SCREEN_CONTENT_MODE, - - /*!\brief Codec control function to set lossless encoding mode. - * - * VP9 can operate in lossless encoding mode, in which the bitstream - * produced will be able to decode and reconstruct a perfect copy of - * input source. This control function provides a mean to switch encoder - * into lossless coding mode(1) or normal coding mode(0) that may be lossy. - * 0 = lossy coding mode - * 1 = lossless coding mode - * - * By default, encoder operates in normal coding mode (maybe lossy). - * - * Supported in codecs: VP9 - */ - VP9E_SET_LOSSLESS, - - /*!\brief Codec control function to set number of tile columns. - * - * In encoding and decoding, VP9 allows an input image frame be partitioned - * into separated vertical tile columns, which can be encoded or decoded - * independently. This enables easy implementation of parallel encoding and - * decoding. This control requests the encoder to use column tiles in - * encoding an input frame, with number of tile columns (in Log2 unit) as - * the parameter: - * 0 = 1 tile column - * 1 = 2 tile columns - * 2 = 4 tile columns - * ..... - * n = 2**n tile columns - * The requested tile columns will be capped by encoder based on image size - * limitation (The minimum width of a tile column is 256 pixel, the maximum - * is 4096). - * - * By default, the value is 0, i.e. one single column tile for entire image. - * - * Supported in codecs: VP9 - */ - VP9E_SET_TILE_COLUMNS, - - /*!\brief Codec control function to set number of tile rows. - * - * In encoding and decoding, VP9 allows an input image frame be partitioned - * into separated horizontal tile rows. Tile rows are encoded or decoded - * sequentially. Even though encoding/decoding of later tile rows depends on - * earlier ones, this allows the encoder to output data packets for tile rows - * prior to completely processing all tile rows in a frame, thereby reducing - * the latency in processing between input and output. The parameter - * for this control describes the number of tile rows, which has a valid - * range [0, 2]: - * 0 = 1 tile row - * 1 = 2 tile rows - * 2 = 4 tile rows - * - * By default, the value is 0, i.e. one single row tile for entire image. - * - * Supported in codecs: VP9 - */ - VP9E_SET_TILE_ROWS, - - /*!\brief Codec control function to enable frame parallel decoding feature. - * - * VP9 has a bitstream feature to reduce decoding dependency between frames - * by turning off backward update of probability context used in encoding - * and decoding. This allows staged parallel processing of more than one - * video frames in the decoder. This control function provides a mean to - * turn this feature on or off for bitstreams produced by encoder. - * - * By default, this feature is off. - * - * Supported in codecs: VP9 - */ - VP9E_SET_FRAME_PARALLEL_DECODING, - - /*!\brief Codec control function to set adaptive quantization mode. - * - * VP9 has a segment based feature that allows encoder to adaptively change - * quantization parameter for each segment within a frame to improve the - * subjective quality. This control makes encoder operate in one of the - * several AQ_modes supported. - * - * By default, encoder operates with AQ_Mode 0(adaptive quantization off). - * - * Supported in codecs: VP9 - */ - VP9E_SET_AQ_MODE, - - /*!\brief Codec control function to enable/disable periodic Q boost. - * - * One VP9 encoder speed feature is to enable quality boost by lowering - * frame level Q periodically. This control function provides a mean to - * turn on/off this feature. - * 0 = off - * 1 = on - * - * By default, the encoder is allowed to use this feature for appropriate - * encoding modes. - * - * Supported in codecs: VP9 - */ - VP9E_SET_FRAME_PERIODIC_BOOST, - - /*!\brief Codec control function to set noise sensitivity. - * - * 0: off, 1: On(YOnly) - * - * Supported in codecs: VP9 - */ - VP9E_SET_NOISE_SENSITIVITY, - - /*!\brief Codec control function to turn on/off SVC in encoder. - * \note Return value is VPX_CODEC_INVALID_PARAM if the encoder does not - * support SVC in its current encoding mode - * 0: off, 1: on - * - * Supported in codecs: VP9 - */ - VP9E_SET_SVC, - - /*!\brief Codec control function to set parameters for SVC. - * \note Parameters contain min_q, max_q, scaling factor for each of the - * SVC layers. - * - * Supported in codecs: VP9 - */ - VP9E_SET_SVC_PARAMETERS, - - /*!\brief Codec control function to set svc layer for spatial and temporal. - * \note Valid ranges: 0..#vpx_codec_enc_cfg::ss_number_layers for spatial - * layer and 0..#vpx_codec_enc_cfg::ts_number_layers for - * temporal layer. - * - * Supported in codecs: VP9 - */ - VP9E_SET_SVC_LAYER_ID, - - /*!\brief Codec control function to set content type. - * \note Valid parameter range: - * VP9E_CONTENT_DEFAULT = Regular video content (Default) - * VP9E_CONTENT_SCREEN = Screen capture content - * - * Supported in codecs: VP9 - */ - VP9E_SET_TUNE_CONTENT, - - /*!\brief Codec control function to get svc layer ID. - * \note The layer ID returned is for the data packet from the registered - * callback function. - * - * Supported in codecs: VP9 - */ - VP9E_GET_SVC_LAYER_ID, - - /*!\brief Codec control function to register callback to get per layer packet. - * \note Parameter for this control function is a structure with a callback - * function and a pointer to private data used by the callback. - * - * Supported in codecs: VP9 - */ - VP9E_REGISTER_CX_CALLBACK, - - /*!\brief Codec control function to set color space info. - * \note Valid ranges: 0..7, default is "UNKNOWN". - * 0 = UNKNOWN, - * 1 = BT_601 - * 2 = BT_709 - * 3 = SMPTE_170 - * 4 = SMPTE_240 - * 5 = BT_2020 - * 6 = RESERVED - * 7 = SRGB - * - * Supported in codecs: VP9 - */ - VP9E_SET_COLOR_SPACE, - - /*!\brief Codec control function to set temporal layering mode. - * \note Valid ranges: 0..3, default is "0" - * (VP9E_TEMPORAL_LAYERING_MODE_NOLAYERING). - * 0 = VP9E_TEMPORAL_LAYERING_MODE_NOLAYERING - * 1 = VP9E_TEMPORAL_LAYERING_MODE_BYPASS - * 2 = VP9E_TEMPORAL_LAYERING_MODE_0101 - * 3 = VP9E_TEMPORAL_LAYERING_MODE_0212 - * - * Supported in codecs: VP9 - */ - VP9E_SET_TEMPORAL_LAYERING_MODE, - - /*!\brief Codec control function to set minimum interval between GF/ARF frames - * - * By default the value is set as 4. - * - * Supported in codecs: VP9 - */ - VP9E_SET_MIN_GF_INTERVAL, - - /*!\brief Codec control function to set minimum interval between GF/ARF frames - * - * By default the value is set as 16. - * - * Supported in codecs: VP9 - */ - VP9E_SET_MAX_GF_INTERVAL, - - /*!\brief Codec control function to get an Active map back from the encoder. - * - * Supported in codecs: VP9 - */ - VP9E_GET_ACTIVEMAP, - - /*!\brief Codec control function to set color range bit. - * \note Valid ranges: 0..1, default is 0 - * 0 = Limited range (16..235 or HBD equivalent) - * 1 = Full range (0..255 or HBD equivalent) - * - * Supported in codecs: VP9 - */ - VP9E_SET_COLOR_RANGE, - - /*!\brief Codec control function to set the frame flags and buffer indices - * for spatial layers. The frame flags and buffer indices are set using the - * struct #vpx_svc_ref_frame_config defined below. - * - * Supported in codecs: VP9 - */ - VP9E_SET_SVC_REF_FRAME_CONFIG, - - /*!\brief Codec control function to set intended rendering image size. - * - * By default, this is identical to the image size in pixels. - * - * Supported in codecs: VP9 - */ - VP9E_SET_RENDER_SIZE, - - /*!\brief Codec control function to set target level. - * - * 255: off (default); 0: only keep level stats; 10: target for level 1.0; - * 11: target for level 1.1; ... 62: target for level 6.2 - * - * Supported in codecs: VP9 - */ - VP9E_SET_TARGET_LEVEL, - - /*!\brief Codec control function to get bitstream level. - * - * Supported in codecs: VP9 - */ - VP9E_GET_LEVEL, - - /*!\brief Codec control function to enable/disable special mode for altref - * adaptive quantization. You can use it with --aq-mode concurrently. - * - * Enable special adaptive quantization for altref frames based on their - * expected prediction quality for the future frames. - * - * Supported in codecs: VP9 - */ - VP9E_SET_ALT_REF_AQ, - - /*!\brief Boost percentage for Golden Frame in CBR mode. - * - * This value controls the amount of boost given to Golden Frame in - * CBR mode. It is expressed as a percentage of the average - * per-frame bitrate, with the special (and default) value 0 meaning - * the feature is off, i.e., no golden frame boost in CBR mode and - * average bitrate target is used. - * - * For example, to allow 100% more bits, i.e, 2X, in a golden frame - * than average frame, set this to 100. - * - * Supported in codecs: VP8 - */ - VP8E_SET_GF_CBR_BOOST_PCT, -}; - -/*!\brief vpx 1-D scaling mode - * - * This set of constants define 1-D vpx scaling modes - */ -typedef enum vpx_scaling_mode_1d { - VP8E_NORMAL = 0, - VP8E_FOURFIVE = 1, - VP8E_THREEFIVE = 2, - VP8E_ONETWO = 3 -} VPX_SCALING_MODE; - -/*!\brief Temporal layering mode enum for VP9 SVC. - * - * This set of macros define the different temporal layering modes. - * Supported codecs: VP9 (in SVC mode) - * - */ -typedef enum vp9e_temporal_layering_mode { - /*!\brief No temporal layering. - * Used when only spatial layering is used. - */ - VP9E_TEMPORAL_LAYERING_MODE_NOLAYERING = 0, - - /*!\brief Bypass mode. - * Used when application needs to control temporal layering. - * This will only work when the number of spatial layers equals 1. - */ - VP9E_TEMPORAL_LAYERING_MODE_BYPASS = 1, - - /*!\brief 0-1-0-1... temporal layering scheme with two temporal layers. - */ - VP9E_TEMPORAL_LAYERING_MODE_0101 = 2, - - /*!\brief 0-2-1-2... temporal layering scheme with three temporal layers. - */ - VP9E_TEMPORAL_LAYERING_MODE_0212 = 3 -} VP9E_TEMPORAL_LAYERING_MODE; - -/*!\brief vpx region of interest map - * - * These defines the data structures for the region of interest map - * - */ - -typedef struct vpx_roi_map { - /*! An id between 0 and 3 for each 16x16 region within a frame. */ - unsigned char *roi_map; - unsigned int rows; /**< Number of rows. */ - unsigned int cols; /**< Number of columns. */ - // TODO(paulwilkins): broken for VP9 which has 8 segments - // q and loop filter deltas for each segment - // (see MAX_MB_SEGMENTS) - int delta_q[4]; /**< Quantizer deltas. */ - int delta_lf[4]; /**< Loop filter deltas. */ - /*! Static breakout threshold for each segment. */ - unsigned int static_threshold[4]; -} vpx_roi_map_t; - -/*!\brief vpx active region map - * - * These defines the data structures for active region map - * - */ - -typedef struct vpx_active_map { - /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */ - unsigned char *active_map; - unsigned int rows; /**< number of rows */ - unsigned int cols; /**< number of cols */ -} vpx_active_map_t; - -/*!\brief vpx image scaling mode - * - * This defines the data structure for image scaling mode - * - */ -typedef struct vpx_scaling_mode { - VPX_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */ - VPX_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */ -} vpx_scaling_mode_t; - -/*!\brief VP8 token partition mode - * - * This defines VP8 partitioning mode for compressed data, i.e., the number of - * sub-streams in the bitstream. Used for parallelized decoding. - * - */ - -typedef enum { - VP8_ONE_TOKENPARTITION = 0, - VP8_TWO_TOKENPARTITION = 1, - VP8_FOUR_TOKENPARTITION = 2, - VP8_EIGHT_TOKENPARTITION = 3 -} vp8e_token_partitions; - -/*!brief VP9 encoder content type */ -typedef enum { - VP9E_CONTENT_DEFAULT, - VP9E_CONTENT_SCREEN, - VP9E_CONTENT_INVALID -} vp9e_tune_content; - -/*!\brief VP8 model tuning parameters - * - * Changes the encoder to tune for certain types of input material. - * - */ -typedef enum { VP8_TUNE_PSNR, VP8_TUNE_SSIM } vp8e_tuning; - -/*!\brief vp9 svc layer parameters - * - * This defines the spatial and temporal layer id numbers for svc encoding. - * This is used with the #VP9E_SET_SVC_LAYER_ID control to set the spatial and - * temporal layer id for the current frame. - * - */ -typedef struct vpx_svc_layer_id { - int spatial_layer_id; /**< Spatial layer id number. */ - int temporal_layer_id; /**< Temporal layer id number. */ -} vpx_svc_layer_id_t; - -/*!\brief vp9 svc frame flag parameters. - * - * This defines the frame flags and buffer indices for each spatial layer for - * svc encoding. - * This is used with the #VP9E_SET_SVC_REF_FRAME_CONFIG control to set frame - * flags and buffer indices for each spatial layer for the current (super)frame. - * - */ -typedef struct vpx_svc_ref_frame_config { - int frame_flags[VPX_TS_MAX_LAYERS]; /**< Frame flags. */ - int lst_fb_idx[VPX_TS_MAX_LAYERS]; /**< Last buffer index. */ - int gld_fb_idx[VPX_TS_MAX_LAYERS]; /**< Golden buffer index. */ - int alt_fb_idx[VPX_TS_MAX_LAYERS]; /**< Altref buffer index. */ -} vpx_svc_ref_frame_config_t; - -/*!\cond */ -/*!\brief VP8 encoder control function parameter type - * - * Defines the data types that VP8E control functions take. Note that - * additional common controls are defined in vp8.h - * - */ - -VPX_CTRL_USE_TYPE(VP8E_SET_FRAME_FLAGS, int) -#define VPX_CTRL_VP8E_SET_FRAME_FLAGS -VPX_CTRL_USE_TYPE(VP8E_SET_TEMPORAL_LAYER_ID, int) -#define VPX_CTRL_VP8E_SET_TEMPORAL_LAYER_ID -VPX_CTRL_USE_TYPE(VP8E_SET_ROI_MAP, vpx_roi_map_t *) -#define VPX_CTRL_VP8E_SET_ROI_MAP -VPX_CTRL_USE_TYPE(VP8E_SET_ACTIVEMAP, vpx_active_map_t *) -#define VPX_CTRL_VP8E_SET_ACTIVEMAP -VPX_CTRL_USE_TYPE(VP8E_SET_SCALEMODE, vpx_scaling_mode_t *) -#define VPX_CTRL_VP8E_SET_SCALEMODE - -VPX_CTRL_USE_TYPE(VP9E_SET_SVC, int) -#define VPX_CTRL_VP9E_SET_SVC -VPX_CTRL_USE_TYPE(VP9E_SET_SVC_PARAMETERS, void *) -#define VPX_CTRL_VP9E_SET_SVC_PARAMETERS -VPX_CTRL_USE_TYPE(VP9E_REGISTER_CX_CALLBACK, void *) -#define VPX_CTRL_VP9E_REGISTER_CX_CALLBACK -VPX_CTRL_USE_TYPE(VP9E_SET_SVC_LAYER_ID, vpx_svc_layer_id_t *) -#define VPX_CTRL_VP9E_SET_SVC_LAYER_ID - -VPX_CTRL_USE_TYPE(VP8E_SET_CPUUSED, int) -#define VPX_CTRL_VP8E_SET_CPUUSED -VPX_CTRL_USE_TYPE(VP8E_SET_ENABLEAUTOALTREF, unsigned int) -#define VPX_CTRL_VP8E_SET_ENABLEAUTOALTREF -VPX_CTRL_USE_TYPE(VP8E_SET_NOISE_SENSITIVITY, unsigned int) -#define VPX_CTRL_VP8E_SET_NOISE_SENSITIVITY -VPX_CTRL_USE_TYPE(VP8E_SET_SHARPNESS, unsigned int) -#define VPX_CTRL_VP8E_SET_SHARPNESS -VPX_CTRL_USE_TYPE(VP8E_SET_STATIC_THRESHOLD, unsigned int) -#define VPX_CTRL_VP8E_SET_STATIC_THRESHOLD -VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int) /* vp8e_token_partitions */ -#define VPX_CTRL_VP8E_SET_TOKEN_PARTITIONS - -VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_MAXFRAMES, unsigned int) -#define VPX_CTRL_VP8E_SET_ARNR_MAXFRAMES -VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_STRENGTH, unsigned int) -#define VPX_CTRL_VP8E_SET_ARNR_STRENGTH -VPX_CTRL_USE_TYPE_DEPRECATED(VP8E_SET_ARNR_TYPE, unsigned int) -#define VPX_CTRL_VP8E_SET_ARNR_TYPE -VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int) /* vp8e_tuning */ -#define VPX_CTRL_VP8E_SET_TUNING -VPX_CTRL_USE_TYPE(VP8E_SET_CQ_LEVEL, unsigned int) -#define VPX_CTRL_VP8E_SET_CQ_LEVEL - -VPX_CTRL_USE_TYPE(VP9E_SET_TILE_COLUMNS, int) -#define VPX_CTRL_VP9E_SET_TILE_COLUMNS -VPX_CTRL_USE_TYPE(VP9E_SET_TILE_ROWS, int) -#define VPX_CTRL_VP9E_SET_TILE_ROWS - -VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER, int *) -#define VPX_CTRL_VP8E_GET_LAST_QUANTIZER -VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *) -#define VPX_CTRL_VP8E_GET_LAST_QUANTIZER_64 -VPX_CTRL_USE_TYPE(VP9E_GET_SVC_LAYER_ID, vpx_svc_layer_id_t *) -#define VPX_CTRL_VP9E_GET_SVC_LAYER_ID - -VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTRA_BITRATE_PCT, unsigned int) -#define VPX_CTRL_VP8E_SET_MAX_INTRA_BITRATE_PCT -VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTER_BITRATE_PCT, unsigned int) -#define VPX_CTRL_VP8E_SET_MAX_INTER_BITRATE_PCT - -VPX_CTRL_USE_TYPE(VP8E_SET_GF_CBR_BOOST_PCT, unsigned int) -#define VPX_CTRL_VP8E_SET_GF_CBR_BOOST_PCT - -VPX_CTRL_USE_TYPE(VP8E_SET_SCREEN_CONTENT_MODE, unsigned int) -#define VPX_CTRL_VP8E_SET_SCREEN_CONTENT_MODE - -VPX_CTRL_USE_TYPE(VP9E_SET_GF_CBR_BOOST_PCT, unsigned int) -#define VPX_CTRL_VP9E_SET_GF_CBR_BOOST_PCT - -VPX_CTRL_USE_TYPE(VP9E_SET_LOSSLESS, unsigned int) -#define VPX_CTRL_VP9E_SET_LOSSLESS - -VPX_CTRL_USE_TYPE(VP9E_SET_FRAME_PARALLEL_DECODING, unsigned int) -#define VPX_CTRL_VP9E_SET_FRAME_PARALLEL_DECODING - -VPX_CTRL_USE_TYPE(VP9E_SET_AQ_MODE, unsigned int) -#define VPX_CTRL_VP9E_SET_AQ_MODE - -VPX_CTRL_USE_TYPE(VP9E_SET_ALT_REF_AQ, int) -#define VPX_CTRL_VP9E_SET_ALT_REF_AQ - -VPX_CTRL_USE_TYPE(VP9E_SET_FRAME_PERIODIC_BOOST, unsigned int) -#define VPX_CTRL_VP9E_SET_FRAME_PERIODIC_BOOST - -VPX_CTRL_USE_TYPE(VP9E_SET_NOISE_SENSITIVITY, unsigned int) -#define VPX_CTRL_VP9E_SET_NOISE_SENSITIVITY - -VPX_CTRL_USE_TYPE(VP9E_SET_TUNE_CONTENT, int) /* vp9e_tune_content */ -#define VPX_CTRL_VP9E_SET_TUNE_CONTENT - -VPX_CTRL_USE_TYPE(VP9E_SET_COLOR_SPACE, int) -#define VPX_CTRL_VP9E_SET_COLOR_SPACE - -VPX_CTRL_USE_TYPE(VP9E_SET_MIN_GF_INTERVAL, unsigned int) -#define VPX_CTRL_VP9E_SET_MIN_GF_INTERVAL - -VPX_CTRL_USE_TYPE(VP9E_SET_MAX_GF_INTERVAL, unsigned int) -#define VPX_CTRL_VP9E_SET_MAX_GF_INTERVAL - -VPX_CTRL_USE_TYPE(VP9E_GET_ACTIVEMAP, vpx_active_map_t *) -#define VPX_CTRL_VP9E_GET_ACTIVEMAP - -VPX_CTRL_USE_TYPE(VP9E_SET_COLOR_RANGE, int) -#define VPX_CTRL_VP9E_SET_COLOR_RANGE - -VPX_CTRL_USE_TYPE(VP9E_SET_SVC_REF_FRAME_CONFIG, vpx_svc_ref_frame_config_t *) -#define VPX_CTRL_VP9E_SET_SVC_REF_FRAME_CONFIG - -VPX_CTRL_USE_TYPE(VP9E_SET_RENDER_SIZE, int *) -#define VPX_CTRL_VP9E_SET_RENDER_SIZE - -VPX_CTRL_USE_TYPE(VP9E_SET_TARGET_LEVEL, unsigned int) -#define VPX_CTRL_VP9E_SET_TARGET_LEVEL - -VPX_CTRL_USE_TYPE(VP9E_GET_LEVEL, int *) -#define VPX_CTRL_VP9E_GET_LEVEL - -/*!\endcond */ -/*! @} - end defgroup vp8_encoder */ -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // VPX_VP8CX_H_ diff --git a/protocols/Tox/include/vpx/vp8dx.h b/protocols/Tox/include/vpx/vp8dx.h deleted file mode 100644 index 0d7759eb25..0000000000 --- a/protocols/Tox/include/vpx/vp8dx.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/*!\defgroup vp8_decoder WebM VP8/VP9 Decoder - * \ingroup vp8 - * - * @{ - */ -/*!\file - * \brief Provides definitions for using VP8 or VP9 within the vpx Decoder - * interface. - */ -#ifndef VPX_VP8DX_H_ -#define VPX_VP8DX_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Include controls common to both the encoder and decoder */ -#include "./vp8.h" - -/*!\name Algorithm interface for VP8 - * - * This interface provides the capability to decode VP8 streams. - * @{ - */ -extern vpx_codec_iface_t vpx_codec_vp8_dx_algo; -extern vpx_codec_iface_t *vpx_codec_vp8_dx(void); -/*!@} - end algorithm interface member group*/ - -/*!\name Algorithm interface for VP9 - * - * This interface provides the capability to decode VP9 streams. - * @{ - */ -extern vpx_codec_iface_t vpx_codec_vp9_dx_algo; -extern vpx_codec_iface_t *vpx_codec_vp9_dx(void); -/*!@} - end algorithm interface member group*/ - -/*!\enum vp8_dec_control_id - * \brief VP8 decoder control functions - * - * This set of macros define the control functions available for the VP8 - * decoder interface. - * - * \sa #vpx_codec_control - */ -enum vp8_dec_control_id { - /** control function to get info on which reference frames were updated - * by the last decode - */ - VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START, - - /** check if the indicated frame is corrupted */ - VP8D_GET_FRAME_CORRUPTED, - - /** control function to get info on which reference frames were used - * by the last decode - */ - VP8D_GET_LAST_REF_USED, - - /** decryption function to decrypt encoded buffer data immediately - * before decoding. Takes a vpx_decrypt_init, which contains - * a callback function and opaque context pointer. - */ - VPXD_SET_DECRYPTOR, - VP8D_SET_DECRYPTOR = VPXD_SET_DECRYPTOR, - - /** control function to get the dimensions that the current frame is decoded - * at. This may be different to the intended display size for the frame as - * specified in the wrapper or frame header (see VP9D_GET_DISPLAY_SIZE). */ - VP9D_GET_FRAME_SIZE, - - /** control function to get the current frame's intended display dimensions - * (as specified in the wrapper or frame header). This may be different to - * the decoded dimensions of this frame (see VP9D_GET_FRAME_SIZE). */ - VP9D_GET_DISPLAY_SIZE, - - /** control function to get the bit depth of the stream. */ - VP9D_GET_BIT_DEPTH, - - /** control function to set the byte alignment of the planes in the reference - * buffers. Valid values are power of 2, from 32 to 1024. A value of 0 sets - * legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly - * follows Y plane, and V plane directly follows U plane. Default value is 0. - */ - VP9_SET_BYTE_ALIGNMENT, - - /** control function to invert the decoding order to from right to left. The - * function is used in a test to confirm the decoding independence of tile - * columns. The function may be used in application where this order - * of decoding is desired. - * - * TODO(yaowu): Rework the unit test that uses this control, and in a future - * release, this test-only control shall be removed. - */ - VP9_INVERT_TILE_DECODE_ORDER, - - /** control function to set the skip loop filter flag. Valid values are - * integers. The decoder will skip the loop filter when its value is set to - * nonzero. If the loop filter is skipped the decoder may accumulate decode - * artifacts. The default value is 0. - */ - VP9_SET_SKIP_LOOP_FILTER, - - /** control function to decode SVC stream up to the x spatial layers, - * where x is passed in through the control, and is 0 for base layer. - */ - VP9_DECODE_SVC_SPATIAL_LAYER, - - VP8_DECODER_CTRL_ID_MAX -}; - -/** Decrypt n bytes of data from input -> output, using the decrypt_state - * passed in VPXD_SET_DECRYPTOR. - */ -typedef void (*vpx_decrypt_cb)(void *decrypt_state, const unsigned char *input, - unsigned char *output, int count); - -/*!\brief Structure to hold decryption state - * - * Defines a structure to hold the decryption state and access function. - */ -typedef struct vpx_decrypt_init { - /*! Decrypt callback. */ - vpx_decrypt_cb decrypt_cb; - - /*! Decryption state. */ - void *decrypt_state; -} vpx_decrypt_init; - -/*!\brief A deprecated alias for vpx_decrypt_init. - */ -typedef vpx_decrypt_init vp8_decrypt_init; - -/*!\cond */ -/*!\brief VP8 decoder control function parameter type - * - * Defines the data types that VP8D control functions take. Note that - * additional common controls are defined in vp8.h - * - */ - -VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *) -#define VPX_CTRL_VP8D_GET_LAST_REF_UPDATES -VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *) -#define VPX_CTRL_VP8D_GET_FRAME_CORRUPTED -VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *) -#define VPX_CTRL_VP8D_GET_LAST_REF_USED -VPX_CTRL_USE_TYPE(VPXD_SET_DECRYPTOR, vpx_decrypt_init *) -#define VPX_CTRL_VPXD_SET_DECRYPTOR -VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vpx_decrypt_init *) -#define VPX_CTRL_VP8D_SET_DECRYPTOR -VPX_CTRL_USE_TYPE(VP9D_GET_DISPLAY_SIZE, int *) -#define VPX_CTRL_VP9D_GET_DISPLAY_SIZE -VPX_CTRL_USE_TYPE(VP9D_GET_BIT_DEPTH, unsigned int *) -#define VPX_CTRL_VP9D_GET_BIT_DEPTH -VPX_CTRL_USE_TYPE(VP9D_GET_FRAME_SIZE, int *) -#define VPX_CTRL_VP9D_GET_FRAME_SIZE -VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int) -#define VPX_CTRL_VP9_INVERT_TILE_DECODE_ORDER -#define VPX_CTRL_VP9_DECODE_SVC_SPATIAL_LAYER -VPX_CTRL_USE_TYPE(VP9_DECODE_SVC_SPATIAL_LAYER, int) - -/*!\endcond */ -/*! @} - end defgroup vp8_decoder */ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // VPX_VP8DX_H_ diff --git a/protocols/Tox/include/vpx/vpx_codec.h b/protocols/Tox/include/vpx/vpx_codec.h deleted file mode 100644 index fe75d23872..0000000000 --- a/protocols/Tox/include/vpx/vpx_codec.h +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/*!\defgroup codec Common Algorithm Interface - * This abstraction allows applications to easily support multiple video - * formats with minimal code duplication. This section describes the interface - * common to all codecs (both encoders and decoders). - * @{ - */ - -/*!\file - * \brief Describes the codec algorithm interface to applications. - * - * This file describes the interface between an application and a - * video codec algorithm. - * - * An application instantiates a specific codec instance by using - * vpx_codec_init() and a pointer to the algorithm's interface structure: - *
- *     my_app.c:
- *       extern vpx_codec_iface_t my_codec;
- *       {
- *           vpx_codec_ctx_t algo;
- *           res = vpx_codec_init(&algo, &my_codec);
- *       }
- *     
- * - * Once initialized, the instance is manged using other functions from - * the vpx_codec_* family. - */ -#ifndef VPX_VPX_CODEC_H_ -#define VPX_VPX_CODEC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "./vpx_integer.h" -#include "./vpx_image.h" - -/*!\brief Decorator indicating a function is deprecated */ -#ifndef DEPRECATED -#if defined(__GNUC__) && __GNUC__ -#define DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) -#define DEPRECATED -#else -#define DEPRECATED -#endif -#endif /* DEPRECATED */ - -#ifndef DECLSPEC_DEPRECATED -#if defined(__GNUC__) && __GNUC__ -#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */ -#elif defined(_MSC_VER) -/*!\brief \copydoc #DEPRECATED */ -#define DECLSPEC_DEPRECATED __declspec(deprecated) -#else -#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */ -#endif -#endif /* DECLSPEC_DEPRECATED */ - -/*!\brief Decorator indicating a function is potentially unused */ -#ifdef UNUSED -#elif defined(__GNUC__) || defined(__clang__) -#define UNUSED __attribute__((unused)) -#else -#define UNUSED -#endif - -/*!\brief Current ABI version number - * - * \internal - * If this file is altered in any way that changes the ABI, this value - * must be bumped. Examples include, but are not limited to, changing - * types, removing or reassigning enums, adding/removing/rearranging - * fields to structures - */ -#define VPX_CODEC_ABI_VERSION (3 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/ - -/*!\brief Algorithm return codes */ -typedef enum { - /*!\brief Operation completed without error */ - VPX_CODEC_OK, - - /*!\brief Unspecified error */ - VPX_CODEC_ERROR, - - /*!\brief Memory operation failed */ - VPX_CODEC_MEM_ERROR, - - /*!\brief ABI version mismatch */ - VPX_CODEC_ABI_MISMATCH, - - /*!\brief Algorithm does not have required capability */ - VPX_CODEC_INCAPABLE, - - /*!\brief The given bitstream is not supported. - * - * The bitstream was unable to be parsed at the highest level. The decoder - * is unable to proceed. This error \ref SHOULD be treated as fatal to the - * stream. */ - VPX_CODEC_UNSUP_BITSTREAM, - - /*!\brief Encoded bitstream uses an unsupported feature - * - * The decoder does not implement a feature required by the encoder. This - * return code should only be used for features that prevent future - * pictures from being properly decoded. This error \ref MAY be treated as - * fatal to the stream or \ref MAY be treated as fatal to the current GOP. - */ - VPX_CODEC_UNSUP_FEATURE, - - /*!\brief The coded data for this stream is corrupt or incomplete - * - * There was a problem decoding the current frame. This return code - * should only be used for failures that prevent future pictures from - * being properly decoded. This error \ref MAY be treated as fatal to the - * stream or \ref MAY be treated as fatal to the current GOP. If decoding - * is continued for the current GOP, artifacts may be present. - */ - VPX_CODEC_CORRUPT_FRAME, - - /*!\brief An application-supplied parameter is not valid. - * - */ - VPX_CODEC_INVALID_PARAM, - - /*!\brief An iterator reached the end of list. - * - */ - VPX_CODEC_LIST_END - -} vpx_codec_err_t; - -/*! \brief Codec capabilities bitfield - * - * Each codec advertises the capabilities it supports as part of its - * ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces - * or functionality, and are not required to be supported. - * - * The available flags are specified by VPX_CODEC_CAP_* defines. - */ -typedef long vpx_codec_caps_t; -#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */ -#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */ - -/*! \brief Initialization-time Feature Enabling - * - * Certain codec features must be known at initialization time, to allow for - * proper memory allocation. - * - * The available flags are specified by VPX_CODEC_USE_* defines. - */ -typedef long vpx_codec_flags_t; - -/*!\brief Codec interface structure. - * - * Contains function pointers and other data private to the codec - * implementation. This structure is opaque to the application. - */ -typedef const struct vpx_codec_iface vpx_codec_iface_t; - -/*!\brief Codec private data structure. - * - * Contains data private to the codec implementation. This structure is opaque - * to the application. - */ -typedef struct vpx_codec_priv vpx_codec_priv_t; - -/*!\brief Iterator - * - * Opaque storage used for iterating over lists. - */ -typedef const void *vpx_codec_iter_t; - -/*!\brief Codec context structure - * - * All codecs \ref MUST support this context structure fully. In general, - * this data should be considered private to the codec algorithm, and - * not be manipulated or examined by the calling application. Applications - * may reference the 'name' member to get a printable description of the - * algorithm. - */ -typedef struct vpx_codec_ctx { - const char *name; /**< Printable interface name */ - vpx_codec_iface_t *iface; /**< Interface pointers */ - vpx_codec_err_t err; /**< Last returned error */ - const char *err_detail; /**< Detailed info, if available */ - vpx_codec_flags_t init_flags; /**< Flags passed at init time */ - union { - /**< Decoder Configuration Pointer */ - const struct vpx_codec_dec_cfg *dec; - /**< Encoder Configuration Pointer */ - const struct vpx_codec_enc_cfg *enc; - const void *raw; - } config; /**< Configuration pointer aliasing union */ - vpx_codec_priv_t *priv; /**< Algorithm private storage */ -} vpx_codec_ctx_t; - -/*!\brief Bit depth for codec - * * - * This enumeration determines the bit depth of the codec. - */ -typedef enum vpx_bit_depth { - VPX_BITS_8 = 8, /**< 8 bits */ - VPX_BITS_10 = 10, /**< 10 bits */ - VPX_BITS_12 = 12, /**< 12 bits */ -} vpx_bit_depth_t; - -/* - * Library Version Number Interface - * - * For example, see the following sample return values: - * vpx_codec_version() (1<<16 | 2<<8 | 3) - * vpx_codec_version_str() "v1.2.3-rc1-16-gec6a1ba" - * vpx_codec_version_extra_str() "rc1-16-gec6a1ba" - */ - -/*!\brief Return the version information (as an integer) - * - * Returns a packed encoding of the library version number. This will only - * include - * the major.minor.patch component of the version number. Note that this encoded - * value should be accessed through the macros provided, as the encoding may - * change - * in the future. - * - */ -int vpx_codec_version(void); -#define VPX_VERSION_MAJOR(v) \ - ((v >> 16) & 0xff) /**< extract major from packed version */ -#define VPX_VERSION_MINOR(v) \ - ((v >> 8) & 0xff) /**< extract minor from packed version */ -#define VPX_VERSION_PATCH(v) \ - ((v >> 0) & 0xff) /**< extract patch from packed version */ - -/*!\brief Return the version major number */ -#define vpx_codec_version_major() ((vpx_codec_version() >> 16) & 0xff) - -/*!\brief Return the version minor number */ -#define vpx_codec_version_minor() ((vpx_codec_version() >> 8) & 0xff) - -/*!\brief Return the version patch number */ -#define vpx_codec_version_patch() ((vpx_codec_version() >> 0) & 0xff) - -/*!\brief Return the version information (as a string) - * - * Returns a printable string containing the full library version number. This - * may - * contain additional text following the three digit version number, as to - * indicate - * release candidates, prerelease versions, etc. - * - */ -const char *vpx_codec_version_str(void); - -/*!\brief Return the version information (as a string) - * - * Returns a printable "extra string". This is the component of the string - * returned - * by vpx_codec_version_str() following the three digit version number. - * - */ -const char *vpx_codec_version_extra_str(void); - -/*!\brief Return the build configuration - * - * Returns a printable string containing an encoded version of the build - * configuration. This may be useful to vpx support. - * - */ -const char *vpx_codec_build_config(void); - -/*!\brief Return the name for a given interface - * - * Returns a human readable string for name of the given codec interface. - * - * \param[in] iface Interface pointer - * - */ -const char *vpx_codec_iface_name(vpx_codec_iface_t *iface); - -/*!\brief Convert error number to printable string - * - * Returns a human readable string for the last error returned by the - * algorithm. The returned error will be one line and will not contain - * any newline characters. - * - * - * \param[in] err Error number. - * - */ -const char *vpx_codec_err_to_string(vpx_codec_err_t err); - -/*!\brief Retrieve error synopsis for codec context - * - * Returns a human readable string for the last error returned by the - * algorithm. The returned error will be one line and will not contain - * any newline characters. - * - * - * \param[in] ctx Pointer to this instance's context. - * - */ -const char *vpx_codec_error(vpx_codec_ctx_t *ctx); - -/*!\brief Retrieve detailed error information for codec context - * - * Returns a human readable string providing detailed information about - * the last error. - * - * \param[in] ctx Pointer to this instance's context. - * - * \retval NULL - * No detailed information is available. - */ -const char *vpx_codec_error_detail(vpx_codec_ctx_t *ctx); - -/* REQUIRED FUNCTIONS - * - * The following functions are required to be implemented for all codecs. - * They represent the base case functionality expected of all codecs. - */ - -/*!\brief Destroy a codec instance - * - * Destroys a codec context, freeing any associated memory buffers. - * - * \param[in] ctx Pointer to this instance's context - * - * \retval #VPX_CODEC_OK - * The codec algorithm initialized. - * \retval #VPX_CODEC_MEM_ERROR - * Memory allocation failed. - */ -vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx); - -/*!\brief Get the capabilities of an algorithm. - * - * Retrieves the capabilities bitfield from the algorithm's interface. - * - * \param[in] iface Pointer to the algorithm interface - * - */ -vpx_codec_caps_t vpx_codec_get_caps(vpx_codec_iface_t *iface); - -/*!\brief Control algorithm - * - * This function is used to exchange algorithm specific data with the codec - * instance. This can be used to implement features specific to a particular - * algorithm. - * - * This wrapper function dispatches the request to the helper function - * associated with the given ctrl_id. It tries to call this function - * transparently, but will return #VPX_CODEC_ERROR if the request could not - * be dispatched. - * - * Note that this function should not be used directly. Call the - * #vpx_codec_control wrapper macro instead. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] ctrl_id Algorithm specific control identifier - * - * \retval #VPX_CODEC_OK - * The control request was processed. - * \retval #VPX_CODEC_ERROR - * The control request was not processed. - * \retval #VPX_CODEC_INVALID_PARAM - * The data was not valid. - */ -vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx, int ctrl_id, ...); -#if defined(VPX_DISABLE_CTRL_TYPECHECKS) && VPX_DISABLE_CTRL_TYPECHECKS -#define vpx_codec_control(ctx, id, data) vpx_codec_control_(ctx, id, data) -#define VPX_CTRL_USE_TYPE(id, typ) -#define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) -#define VPX_CTRL_VOID(id, typ) - -#else -/*!\brief vpx_codec_control wrapper macro - * - * This macro allows for type safe conversions across the variadic parameter - * to vpx_codec_control_(). - * - * \internal - * It works by dispatching the call to the control function through a wrapper - * function named with the id parameter. - */ -#define vpx_codec_control(ctx, id, data) \ - vpx_codec_control_##id(ctx, id, data) /**<\hideinitializer*/ - -/*!\brief vpx_codec_control type definition macro - * - * This macro allows for type safe conversions across the variadic parameter - * to vpx_codec_control_(). It defines the type of the argument for a given - * control identifier. - * - * \internal - * It defines a static function with - * the correctly typed arguments as a wrapper to the type-unsafe internal - * function. - */ -#define VPX_CTRL_USE_TYPE(id, typ) \ - static vpx_codec_err_t vpx_codec_control_##id(vpx_codec_ctx_t *, int, typ) \ - UNUSED; \ - \ - static vpx_codec_err_t vpx_codec_control_##id(vpx_codec_ctx_t *ctx, \ - int ctrl_id, typ data) { \ - return vpx_codec_control_(ctx, ctrl_id, data); \ - } /**<\hideinitializer*/ - -/*!\brief vpx_codec_control deprecated type definition macro - * - * Like #VPX_CTRL_USE_TYPE, but indicates that the specified control is - * deprecated and should not be used. Consult the documentation for your - * codec for more information. - * - * \internal - * It defines a static function with the correctly typed arguments as a - * wrapper to the type-unsafe internal function. - */ -#define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) \ - DECLSPEC_DEPRECATED static vpx_codec_err_t vpx_codec_control_##id( \ - vpx_codec_ctx_t *, int, typ) DEPRECATED UNUSED; \ - \ - DECLSPEC_DEPRECATED static vpx_codec_err_t vpx_codec_control_##id( \ - vpx_codec_ctx_t *ctx, int ctrl_id, typ data) { \ - return vpx_codec_control_(ctx, ctrl_id, data); \ - } /**<\hideinitializer*/ - -/*!\brief vpx_codec_control void type definition macro - * - * This macro allows for type safe conversions across the variadic parameter - * to vpx_codec_control_(). It indicates that a given control identifier takes - * no argument. - * - * \internal - * It defines a static function without a data argument as a wrapper to the - * type-unsafe internal function. - */ -#define VPX_CTRL_VOID(id) \ - static vpx_codec_err_t vpx_codec_control_##id(vpx_codec_ctx_t *, int) \ - UNUSED; \ - \ - static vpx_codec_err_t vpx_codec_control_##id(vpx_codec_ctx_t *ctx, \ - int ctrl_id) { \ - return vpx_codec_control_(ctx, ctrl_id); \ - } /**<\hideinitializer*/ - -#endif - -/*!@} - end defgroup codec*/ -#ifdef __cplusplus -} -#endif -#endif // VPX_VPX_CODEC_H_ diff --git a/protocols/Tox/include/vpx/vpx_decoder.h b/protocols/Tox/include/vpx/vpx_decoder.h deleted file mode 100644 index 2ff12112bc..0000000000 --- a/protocols/Tox/include/vpx/vpx_decoder.h +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -#ifndef VPX_VPX_DECODER_H_ -#define VPX_VPX_DECODER_H_ - -/*!\defgroup decoder Decoder Algorithm Interface - * \ingroup codec - * This abstraction allows applications using this decoder to easily support - * multiple video formats with minimal code duplication. This section describes - * the interface common to all decoders. - * @{ - */ - -/*!\file - * \brief Describes the decoder algorithm interface to applications. - * - * This file describes the interface between an application and a - * video decoder algorithm. - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -#include "./vpx_codec.h" -#include "./vpx_frame_buffer.h" - -/*!\brief Current ABI version number - * - * \internal - * If this file is altered in any way that changes the ABI, this value - * must be bumped. Examples include, but are not limited to, changing - * types, removing or reassigning enums, adding/removing/rearranging - * fields to structures - */ -#define VPX_DECODER_ABI_VERSION \ - (3 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/ - -/*! \brief Decoder capabilities bitfield - * - * Each decoder advertises the capabilities it supports as part of its - * ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces - * or functionality, and are not required to be supported by a decoder. - * - * The available flags are specified by VPX_CODEC_CAP_* defines. - */ -#define VPX_CODEC_CAP_PUT_SLICE 0x10000 /**< Will issue put_slice callbacks */ -#define VPX_CODEC_CAP_PUT_FRAME 0x20000 /**< Will issue put_frame callbacks */ -#define VPX_CODEC_CAP_POSTPROC 0x40000 /**< Can postprocess decoded frame */ -/*!\brief Can conceal errors due to packet loss */ -#define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000 -/*!\brief Can receive encoded frames one fragment at a time */ -#define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000 - -/*! \brief Initialization-time Feature Enabling - * - * Certain codec features must be known at initialization time, to allow for - * proper memory allocation. - * - * The available flags are specified by VPX_CODEC_USE_* defines. - */ -/*!\brief Can support frame-based multi-threading */ -#define VPX_CODEC_CAP_FRAME_THREADING 0x200000 -/*!brief Can support external frame buffers */ -#define VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000 - -#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */ -/*!\brief Conceal errors in decoded frames */ -#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000 -/*!\brief The input frame should be passed to the decoder one fragment at a - * time */ -#define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000 -/*!\brief Enable frame-based multi-threading */ -#define VPX_CODEC_USE_FRAME_THREADING 0x80000 - -/*!\brief Stream properties - * - * This structure is used to query or set properties of the decoded - * stream. Algorithms may extend this structure with data specific - * to their bitstream by setting the sz member appropriately. - */ -typedef struct vpx_codec_stream_info { - unsigned int sz; /**< Size of this structure */ - unsigned int w; /**< Width (or 0 for unknown/default) */ - unsigned int h; /**< Height (or 0 for unknown/default) */ - unsigned int is_kf; /**< Current frame is a keyframe */ -} vpx_codec_stream_info_t; - -/* REQUIRED FUNCTIONS - * - * The following functions are required to be implemented for all decoders. - * They represent the base case functionality expected of all decoders. - */ - -/*!\brief Initialization Configurations - * - * This structure is used to pass init time configuration options to the - * decoder. - */ -typedef struct vpx_codec_dec_cfg { - unsigned int threads; /**< Maximum number of threads to use, default 1 */ - unsigned int w; /**< Width */ - unsigned int h; /**< Height */ -} vpx_codec_dec_cfg_t; /**< alias for struct vpx_codec_dec_cfg */ - -/*!\brief Initialize a decoder instance - * - * Initializes a decoder context using the given interface. Applications - * should call the vpx_codec_dec_init convenience macro instead of this - * function directly, to ensure that the ABI version number parameter - * is properly initialized. - * - * If the library was configured with --disable-multithread, this call - * is not thread safe and should be guarded with a lock if being used - * in a multithreaded context. - * - * \param[in] ctx Pointer to this instance's context. - * \param[in] iface Pointer to the algorithm interface to use. - * \param[in] cfg Configuration to use, if known. May be NULL. - * \param[in] flags Bitfield of VPX_CODEC_USE_* flags - * \param[in] ver ABI version number. Must be set to - * VPX_DECODER_ABI_VERSION - * \retval #VPX_CODEC_OK - * The decoder algorithm initialized. - * \retval #VPX_CODEC_MEM_ERROR - * Memory allocation failed. - */ -vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx, - vpx_codec_iface_t *iface, - const vpx_codec_dec_cfg_t *cfg, - vpx_codec_flags_t flags, int ver); - -/*!\brief Convenience macro for vpx_codec_dec_init_ver() - * - * Ensures the ABI version parameter is properly set. - */ -#define vpx_codec_dec_init(ctx, iface, cfg, flags) \ - vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION) - -/*!\brief Parse stream info from a buffer - * - * Performs high level parsing of the bitstream. Construction of a decoder - * context is not necessary. Can be used to determine if the bitstream is - * of the proper format, and to extract information from the stream. - * - * \param[in] iface Pointer to the algorithm interface - * \param[in] data Pointer to a block of data to parse - * \param[in] data_sz Size of the data buffer - * \param[in,out] si Pointer to stream info to update. The size member - * \ref MUST be properly initialized, but \ref MAY be - * clobbered by the algorithm. This parameter \ref MAY - * be NULL. - * - * \retval #VPX_CODEC_OK - * Bitstream is parsable and stream information updated - */ -vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface, - const uint8_t *data, - unsigned int data_sz, - vpx_codec_stream_info_t *si); - -/*!\brief Return information about the current stream. - * - * Returns information about the stream that has been parsed during decoding. - * - * \param[in] ctx Pointer to this instance's context - * \param[in,out] si Pointer to stream info to update. The size member - * \ref MUST be properly initialized, but \ref MAY be - * clobbered by the algorithm. This parameter \ref MAY - * be NULL. - * - * \retval #VPX_CODEC_OK - * Bitstream is parsable and stream information updated - */ -vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx, - vpx_codec_stream_info_t *si); - -/*!\brief Decode data - * - * Processes a buffer of coded data. If the processing results in a new - * decoded frame becoming available, PUT_SLICE and PUT_FRAME events may be - * generated, as appropriate. Encoded data \ref MUST be passed in DTS (decode - * time stamp) order. Frames produced will always be in PTS (presentation - * time stamp) order. - * If the decoder is configured with VPX_CODEC_USE_INPUT_FRAGMENTS enabled, - * data and data_sz can contain a fragment of the encoded frame. Fragment - * \#n must contain at least partition \#n, but can also contain subsequent - * partitions (\#n+1 - \#n+i), and if so, fragments \#n+1, .., \#n+i must - * be empty. When no more data is available, this function should be called - * with NULL as data and 0 as data_sz. The memory passed to this function - * must be available until the frame has been decoded. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] data Pointer to this block of new coded data. If - * NULL, a VPX_CODEC_CB_PUT_FRAME event is posted - * for the previously decoded frame. - * \param[in] data_sz Size of the coded data, in bytes. - * \param[in] user_priv Application specific data to associate with - * this frame. - * \param[in] deadline Soft deadline the decoder should attempt to meet, - * in us. Set to zero for unlimited. - * - * \return Returns #VPX_CODEC_OK if the coded data was processed completely - * and future pictures can be decoded without error. Otherwise, - * see the descriptions of the other error codes in ::vpx_codec_err_t - * for recoverability capabilities. - */ -vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data, - unsigned int data_sz, void *user_priv, - long deadline); - -/*!\brief Decoded frames iterator - * - * Iterates over a list of the frames available for display. The iterator - * storage should be initialized to NULL to start the iteration. Iteration is - * complete when this function returns NULL. - * - * The list of available frames becomes valid upon completion of the - * vpx_codec_decode call, and remains valid until the next call to - * vpx_codec_decode. - * - * \param[in] ctx Pointer to this instance's context - * \param[in,out] iter Iterator storage, initialized to NULL - * - * \return Returns a pointer to an image, if one is ready for display. Frames - * produced will always be in PTS (presentation time stamp) order. - */ -vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter); - -/*!\defgroup cap_put_frame Frame-Based Decoding Functions - * - * The following functions are required to be implemented for all decoders - * that advertise the VPX_CODEC_CAP_PUT_FRAME capability. Calling these - * functions - * for codecs that don't advertise this capability will result in an error - * code being returned, usually VPX_CODEC_ERROR - * @{ - */ - -/*!\brief put frame callback prototype - * - * This callback is invoked by the decoder to notify the application of - * the availability of decoded image data. - */ -typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv, - const vpx_image_t *img); - -/*!\brief Register for notification of frame completion. - * - * Registers a given function to be called when a decoded frame is - * available. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] cb Pointer to the callback function - * \param[in] user_priv User's private data - * - * \retval #VPX_CODEC_OK - * Callback successfully registered. - * \retval #VPX_CODEC_ERROR - * Decoder context not initialized, or algorithm not capable of - * posting slice completion. - */ -vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx, - vpx_codec_put_frame_cb_fn_t cb, - void *user_priv); - -/*!@} - end defgroup cap_put_frame */ - -/*!\defgroup cap_put_slice Slice-Based Decoding Functions - * - * The following functions are required to be implemented for all decoders - * that advertise the VPX_CODEC_CAP_PUT_SLICE capability. Calling these - * functions - * for codecs that don't advertise this capability will result in an error - * code being returned, usually VPX_CODEC_ERROR - * @{ - */ - -/*!\brief put slice callback prototype - * - * This callback is invoked by the decoder to notify the application of - * the availability of partially decoded image data. The - */ -typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv, - const vpx_image_t *img, - const vpx_image_rect_t *valid, - const vpx_image_rect_t *update); - -/*!\brief Register for notification of slice completion. - * - * Registers a given function to be called when a decoded slice is - * available. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] cb Pointer to the callback function - * \param[in] user_priv User's private data - * - * \retval #VPX_CODEC_OK - * Callback successfully registered. - * \retval #VPX_CODEC_ERROR - * Decoder context not initialized, or algorithm not capable of - * posting slice completion. - */ -vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx, - vpx_codec_put_slice_cb_fn_t cb, - void *user_priv); - -/*!@} - end defgroup cap_put_slice*/ - -/*!\defgroup cap_external_frame_buffer External Frame Buffer Functions - * - * The following section is required to be implemented for all decoders - * that advertise the VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability. - * Calling this function for codecs that don't advertise this capability - * will result in an error code being returned, usually VPX_CODEC_ERROR. - * - * \note - * Currently this only works with VP9. - * @{ - */ - -/*!\brief Pass in external frame buffers for the decoder to use. - * - * Registers functions to be called when libvpx needs a frame buffer - * to decode the current frame and a function to be called when libvpx does - * not internally reference the frame buffer. This set function must - * be called before the first call to decode or libvpx will assume the - * default behavior of allocating frame buffers internally. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] cb_get Pointer to the get callback function - * \param[in] cb_release Pointer to the release callback function - * \param[in] cb_priv Callback's private data - * - * \retval #VPX_CODEC_OK - * External frame buffers will be used by libvpx. - * \retval #VPX_CODEC_INVALID_PARAM - * One or more of the callbacks were NULL. - * \retval #VPX_CODEC_ERROR - * Decoder context not initialized, or algorithm not capable of - * using external frame buffers. - * - * \note - * When decoding VP9, the application may be required to pass in at least - * #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS external frame - * buffers. - */ -vpx_codec_err_t vpx_codec_set_frame_buffer_functions( - vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get, - vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv); - -/*!@} - end defgroup cap_external_frame_buffer */ - -/*!@} - end defgroup decoder*/ -#ifdef __cplusplus -} -#endif -#endif // VPX_VPX_DECODER_H_ diff --git a/protocols/Tox/include/vpx/vpx_encoder.h b/protocols/Tox/include/vpx/vpx_encoder.h deleted file mode 100644 index 28fcd5f999..0000000000 --- a/protocols/Tox/include/vpx/vpx_encoder.h +++ /dev/null @@ -1,980 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -#ifndef VPX_VPX_ENCODER_H_ -#define VPX_VPX_ENCODER_H_ - -/*!\defgroup encoder Encoder Algorithm Interface - * \ingroup codec - * This abstraction allows applications using this encoder to easily support - * multiple video formats with minimal code duplication. This section describes - * the interface common to all encoders. - * @{ - */ - -/*!\file - * \brief Describes the encoder algorithm interface to applications. - * - * This file describes the interface between an application and a - * video encoder algorithm. - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -#include "./vpx_codec.h" - -/*! Temporal Scalability: Maximum length of the sequence defining frame - * layer membership - */ -#define VPX_TS_MAX_PERIODICITY 16 - -/*! Temporal Scalability: Maximum number of coding layers */ -#define VPX_TS_MAX_LAYERS 5 - -/*!\deprecated Use #VPX_TS_MAX_PERIODICITY instead. */ -#define MAX_PERIODICITY VPX_TS_MAX_PERIODICITY - -/*! Temporal+Spatial Scalability: Maximum number of coding layers */ -#define VPX_MAX_LAYERS 12 // 3 temporal + 4 spatial layers are allowed. - -/*!\deprecated Use #VPX_MAX_LAYERS instead. */ -#define MAX_LAYERS VPX_MAX_LAYERS // 3 temporal + 4 spatial layers allowed. - -/*! Spatial Scalability: Maximum number of coding layers */ -#define VPX_SS_MAX_LAYERS 5 - -/*! Spatial Scalability: Default number of coding layers */ -#define VPX_SS_DEFAULT_LAYERS 1 - -/*!\brief Current ABI version number - * - * \internal - * If this file is altered in any way that changes the ABI, this value - * must be bumped. Examples include, but are not limited to, changing - * types, removing or reassigning enums, adding/removing/rearranging - * fields to structures - */ -#define VPX_ENCODER_ABI_VERSION \ - (5 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/ - -/*! \brief Encoder capabilities bitfield - * - * Each encoder advertises the capabilities it supports as part of its - * ::vpx_codec_iface_t interface structure. Capabilities are extra - * interfaces or functionality, and are not required to be supported - * by an encoder. - * - * The available flags are specified by VPX_CODEC_CAP_* defines. - */ -#define VPX_CODEC_CAP_PSNR 0x10000 /**< Can issue PSNR packets */ - -/*! Can output one partition at a time. Each partition is returned in its - * own VPX_CODEC_CX_FRAME_PKT, with the FRAME_IS_FRAGMENT flag set for - * every partition but the last. In this mode all frames are always - * returned partition by partition. - */ -#define VPX_CODEC_CAP_OUTPUT_PARTITION 0x20000 - -/*! Can support input images at greater than 8 bitdepth. - */ -#define VPX_CODEC_CAP_HIGHBITDEPTH 0x40000 - -/*! \brief Initialization-time Feature Enabling - * - * Certain codec features must be known at initialization time, to allow - * for proper memory allocation. - * - * The available flags are specified by VPX_CODEC_USE_* defines. - */ -#define VPX_CODEC_USE_PSNR 0x10000 /**< Calculate PSNR on each frame */ -/*!\brief Make the encoder output one partition at a time. */ -#define VPX_CODEC_USE_OUTPUT_PARTITION 0x20000 -#define VPX_CODEC_USE_HIGHBITDEPTH 0x40000 /**< Use high bitdepth */ - -/*!\brief Generic fixed size buffer structure - * - * This structure is able to hold a reference to any fixed size buffer. - */ -typedef struct vpx_fixed_buf { - void *buf; /**< Pointer to the data */ - size_t sz; /**< Length of the buffer, in chars */ -} vpx_fixed_buf_t; /**< alias for struct vpx_fixed_buf */ - -/*!\brief Time Stamp Type - * - * An integer, which when multiplied by the stream's time base, provides - * the absolute time of a sample. - */ -typedef int64_t vpx_codec_pts_t; - -/*!\brief Compressed Frame Flags - * - * This type represents a bitfield containing information about a compressed - * frame that may be useful to an application. The most significant 16 bits - * can be used by an algorithm to provide additional detail, for example to - * support frame types that are codec specific (MPEG-1 D-frames for example) - */ -typedef uint32_t vpx_codec_frame_flags_t; -#define VPX_FRAME_IS_KEY 0x1 /**< frame is the start of a GOP */ -/*!\brief frame can be dropped without affecting the stream (no future frame - * depends on this one) */ -#define VPX_FRAME_IS_DROPPABLE 0x2 -/*!\brief frame should be decoded but will not be shown */ -#define VPX_FRAME_IS_INVISIBLE 0x4 -/*!\brief this is a fragment of the encoded frame */ -#define VPX_FRAME_IS_FRAGMENT 0x8 - -/*!\brief Error Resilient flags - * - * These flags define which error resilient features to enable in the - * encoder. The flags are specified through the - * vpx_codec_enc_cfg::g_error_resilient variable. - */ -typedef uint32_t vpx_codec_er_flags_t; -/*!\brief Improve resiliency against losses of whole frames */ -#define VPX_ERROR_RESILIENT_DEFAULT 0x1 -/*!\brief The frame partitions are independently decodable by the bool decoder, - * meaning that partitions can be decoded even though earlier partitions have - * been lost. Note that intra prediction is still done over the partition - * boundary. */ -#define VPX_ERROR_RESILIENT_PARTITIONS 0x2 - -/*!\brief Encoder output packet variants - * - * This enumeration lists the different kinds of data packets that can be - * returned by calls to vpx_codec_get_cx_data(). Algorithms \ref MAY - * extend this list to provide additional functionality. - */ -enum vpx_codec_cx_pkt_kind { - VPX_CODEC_CX_FRAME_PKT, /**< Compressed video frame */ - VPX_CODEC_STATS_PKT, /**< Two-pass statistics for this frame */ - VPX_CODEC_FPMB_STATS_PKT, /**< first pass mb statistics for this frame */ - VPX_CODEC_PSNR_PKT, /**< PSNR statistics for this frame */ -// Spatial SVC is still experimental and may be removed before the next ABI -// bump. -#if VPX_ENCODER_ABI_VERSION > (5 + VPX_CODEC_ABI_VERSION) - VPX_CODEC_SPATIAL_SVC_LAYER_SIZES, /**< Sizes for each layer in this frame*/ - VPX_CODEC_SPATIAL_SVC_LAYER_PSNR, /**< PSNR for each layer in this frame*/ -#endif - VPX_CODEC_CUSTOM_PKT = 256 /**< Algorithm extensions */ -}; - -/*!\brief Encoder output packet - * - * This structure contains the different kinds of output data the encoder - * may produce while compressing a frame. - */ -typedef struct vpx_codec_cx_pkt { - enum vpx_codec_cx_pkt_kind kind; /**< packet variant */ - union { - struct { - void *buf; /**< compressed data buffer */ - size_t sz; /**< length of compressed data */ - /*!\brief time stamp to show frame (in timebase units) */ - vpx_codec_pts_t pts; - /*!\brief duration to show frame (in timebase units) */ - unsigned long duration; - vpx_codec_frame_flags_t flags; /**< flags for this frame */ - /*!\brief the partition id defines the decoding order of the partitions. - * Only applicable when "output partition" mode is enabled. First - * partition has id 0.*/ - int partition_id; - } frame; /**< data for compressed frame packet */ - vpx_fixed_buf_t twopass_stats; /**< data for two-pass packet */ - vpx_fixed_buf_t firstpass_mb_stats; /**< first pass mb packet */ - struct vpx_psnr_pkt { - unsigned int samples[4]; /**< Number of samples, total/y/u/v */ - uint64_t sse[4]; /**< sum squared error, total/y/u/v */ - double psnr[4]; /**< PSNR, total/y/u/v */ - } psnr; /**< data for PSNR packet */ - vpx_fixed_buf_t raw; /**< data for arbitrary packets */ -// Spatial SVC is still experimental and may be removed before the next -// ABI bump. -#if VPX_ENCODER_ABI_VERSION > (5 + VPX_CODEC_ABI_VERSION) - size_t layer_sizes[VPX_SS_MAX_LAYERS]; - struct vpx_psnr_pkt layer_psnr[VPX_SS_MAX_LAYERS]; -#endif - - /* This packet size is fixed to allow codecs to extend this - * interface without having to manage storage for raw packets, - * i.e., if it's smaller than 128 bytes, you can store in the - * packet list directly. - */ - char pad[128 - sizeof(enum vpx_codec_cx_pkt_kind)]; /**< fixed sz */ - } data; /**< packet data */ -} vpx_codec_cx_pkt_t; /**< alias for struct vpx_codec_cx_pkt */ - -/*!\brief Encoder return output buffer callback - * - * This callback function, when registered, returns with packets when each - * spatial layer is encoded. - */ -// putting the definitions here for now. (agrange: find if there -// is a better place for this) -typedef void (*vpx_codec_enc_output_cx_pkt_cb_fn_t)(vpx_codec_cx_pkt_t *pkt, - void *user_data); - -/*!\brief Callback function pointer / user data pair storage */ -typedef struct vpx_codec_enc_output_cx_cb_pair { - vpx_codec_enc_output_cx_pkt_cb_fn_t output_cx_pkt; /**< Callback function */ - void *user_priv; /**< Pointer to private data */ -} vpx_codec_priv_output_cx_pkt_cb_pair_t; - -/*!\brief Rational Number - * - * This structure holds a fractional value. - */ -typedef struct vpx_rational { - int num; /**< fraction numerator */ - int den; /**< fraction denominator */ -} vpx_rational_t; /**< alias for struct vpx_rational */ - -/*!\brief Multi-pass Encoding Pass */ -enum vpx_enc_pass { - VPX_RC_ONE_PASS, /**< Single pass mode */ - VPX_RC_FIRST_PASS, /**< First pass of multi-pass mode */ - VPX_RC_LAST_PASS /**< Final pass of multi-pass mode */ -}; - -/*!\brief Rate control mode */ -enum vpx_rc_mode { - VPX_VBR, /**< Variable Bit Rate (VBR) mode */ - VPX_CBR, /**< Constant Bit Rate (CBR) mode */ - VPX_CQ, /**< Constrained Quality (CQ) mode */ - VPX_Q, /**< Constant Quality (Q) mode */ -}; - -/*!\brief Keyframe placement mode. - * - * This enumeration determines whether keyframes are placed automatically by - * the encoder or whether this behavior is disabled. Older releases of this - * SDK were implemented such that VPX_KF_FIXED meant keyframes were disabled. - * This name is confusing for this behavior, so the new symbols to be used - * are VPX_KF_AUTO and VPX_KF_DISABLED. - */ -enum vpx_kf_mode { - VPX_KF_FIXED, /**< deprecated, implies VPX_KF_DISABLED */ - VPX_KF_AUTO, /**< Encoder determines optimal placement automatically */ - VPX_KF_DISABLED = 0 /**< Encoder does not place keyframes. */ -}; - -/*!\brief Encoded Frame Flags - * - * This type indicates a bitfield to be passed to vpx_codec_encode(), defining - * per-frame boolean values. By convention, bits common to all codecs will be - * named VPX_EFLAG_*, and bits specific to an algorithm will be named - * /algo/_eflag_*. The lower order 16 bits are reserved for common use. - */ -typedef long vpx_enc_frame_flags_t; -#define VPX_EFLAG_FORCE_KF (1 << 0) /**< Force this frame to be a keyframe */ - -/*!\brief Encoder configuration structure - * - * This structure contains the encoder settings that have common representations - * across all codecs. This doesn't imply that all codecs support all features, - * however. - */ -typedef struct vpx_codec_enc_cfg { - /* - * generic settings (g) - */ - - /*!\brief Algorithm specific "usage" value - * - * Algorithms may define multiple values for usage, which may convey the - * intent of how the application intends to use the stream. If this value - * is non-zero, consult the documentation for the codec to determine its - * meaning. - */ - unsigned int g_usage; - - /*!\brief Maximum number of threads to use - * - * For multi-threaded implementations, use no more than this number of - * threads. The codec may use fewer threads than allowed. The value - * 0 is equivalent to the value 1. - */ - unsigned int g_threads; - - /*!\brief Bitstream profile to use - * - * Some codecs support a notion of multiple bitstream profiles. Typically - * this maps to a set of features that are turned on or off. Often the - * profile to use is determined by the features of the intended decoder. - * Consult the documentation for the codec to determine the valid values - * for this parameter, or set to zero for a sane default. - */ - unsigned int g_profile; /**< profile of bitstream to use */ - - /*!\brief Width of the frame - * - * This value identifies the presentation resolution of the frame, - * in pixels. Note that the frames passed as input to the encoder must - * have this resolution. Frames will be presented by the decoder in this - * resolution, independent of any spatial resampling the encoder may do. - */ - unsigned int g_w; - - /*!\brief Height of the frame - * - * This value identifies the presentation resolution of the frame, - * in pixels. Note that the frames passed as input to the encoder must - * have this resolution. Frames will be presented by the decoder in this - * resolution, independent of any spatial resampling the encoder may do. - */ - unsigned int g_h; - - /*!\brief Bit-depth of the codec - * - * This value identifies the bit_depth of the codec, - * Only certain bit-depths are supported as identified in the - * vpx_bit_depth_t enum. - */ - vpx_bit_depth_t g_bit_depth; - - /*!\brief Bit-depth of the input frames - * - * This value identifies the bit_depth of the input frames in bits. - * Note that the frames passed as input to the encoder must have - * this bit-depth. - */ - unsigned int g_input_bit_depth; - - /*!\brief Stream timebase units - * - * Indicates the smallest interval of time, in seconds, used by the stream. - * For fixed frame rate material, or variable frame rate material where - * frames are timed at a multiple of a given clock (ex: video capture), - * the \ref RECOMMENDED method is to set the timebase to the reciprocal - * of the frame rate (ex: 1001/30000 for 29.970 Hz NTSC). This allows the - * pts to correspond to the frame number, which can be handy. For - * re-encoding video from containers with absolute time timestamps, the - * \ref RECOMMENDED method is to set the timebase to that of the parent - * container or multimedia framework (ex: 1/1000 for ms, as in FLV). - */ - struct vpx_rational g_timebase; - - /*!\brief Enable error resilient modes. - * - * The error resilient bitfield indicates to the encoder which features - * it should enable to take measures for streaming over lossy or noisy - * links. - */ - vpx_codec_er_flags_t g_error_resilient; - - /*!\brief Multi-pass Encoding Mode - * - * This value should be set to the current phase for multi-pass encoding. - * For single pass, set to #VPX_RC_ONE_PASS. - */ - enum vpx_enc_pass g_pass; - - /*!\brief Allow lagged encoding - * - * If set, this value allows the encoder to consume a number of input - * frames before producing output frames. This allows the encoder to - * base decisions for the current frame on future frames. This does - * increase the latency of the encoding pipeline, so it is not appropriate - * in all situations (ex: realtime encoding). - * - * Note that this is a maximum value -- the encoder may produce frames - * sooner than the given limit. Set this value to 0 to disable this - * feature. - */ - unsigned int g_lag_in_frames; - - /* - * rate control settings (rc) - */ - - /*!\brief Temporal resampling configuration, if supported by the codec. - * - * Temporal resampling allows the codec to "drop" frames as a strategy to - * meet its target data rate. This can cause temporal discontinuities in - * the encoded video, which may appear as stuttering during playback. This - * trade-off is often acceptable, but for many applications is not. It can - * be disabled in these cases. - * - * Note that not all codecs support this feature. All vpx VPx codecs do. - * For other codecs, consult the documentation for that algorithm. - * - * This threshold is described as a percentage of the target data buffer. - * When the data buffer falls below this percentage of fullness, a - * dropped frame is indicated. Set the threshold to zero (0) to disable - * this feature. - */ - unsigned int rc_dropframe_thresh; - - /*!\brief Enable/disable spatial resampling, if supported by the codec. - * - * Spatial resampling allows the codec to compress a lower resolution - * version of the frame, which is then upscaled by the encoder to the - * correct presentation resolution. This increases visual quality at - * low data rates, at the expense of CPU time on the encoder/decoder. - */ - unsigned int rc_resize_allowed; - - /*!\brief Internal coded frame width. - * - * If spatial resampling is enabled this specifies the width of the - * encoded frame. - */ - unsigned int rc_scaled_width; - - /*!\brief Internal coded frame height. - * - * If spatial resampling is enabled this specifies the height of the - * encoded frame. - */ - unsigned int rc_scaled_height; - - /*!\brief Spatial resampling up watermark. - * - * This threshold is described as a percentage of the target data buffer. - * When the data buffer rises above this percentage of fullness, the - * encoder will step up to a higher resolution version of the frame. - */ - unsigned int rc_resize_up_thresh; - - /*!\brief Spatial resampling down watermark. - * - * This threshold is described as a percentage of the target data buffer. - * When the data buffer falls below this percentage of fullness, the - * encoder will step down to a lower resolution version of the frame. - */ - unsigned int rc_resize_down_thresh; - - /*!\brief Rate control algorithm to use. - * - * Indicates whether the end usage of this stream is to be streamed over - * a bandwidth constrained link, indicating that Constant Bit Rate (CBR) - * mode should be used, or whether it will be played back on a high - * bandwidth link, as from a local disk, where higher variations in - * bitrate are acceptable. - */ - enum vpx_rc_mode rc_end_usage; - - /*!\brief Two-pass stats buffer. - * - * A buffer containing all of the stats packets produced in the first - * pass, concatenated. - */ - vpx_fixed_buf_t rc_twopass_stats_in; - - /*!\brief first pass mb stats buffer. - * - * A buffer containing all of the first pass mb stats packets produced - * in the first pass, concatenated. - */ - vpx_fixed_buf_t rc_firstpass_mb_stats_in; - - /*!\brief Target data rate - * - * Target bandwidth to use for this stream, in kilobits per second. - */ - unsigned int rc_target_bitrate; - - /* - * quantizer settings - */ - - /*!\brief Minimum (Best Quality) Quantizer - * - * The quantizer is the most direct control over the quality of the - * encoded image. The range of valid values for the quantizer is codec - * specific. Consult the documentation for the codec to determine the - * values to use. To determine the range programmatically, call - * vpx_codec_enc_config_default() with a usage value of 0. - */ - unsigned int rc_min_quantizer; - - /*!\brief Maximum (Worst Quality) Quantizer - * - * The quantizer is the most direct control over the quality of the - * encoded image. The range of valid values for the quantizer is codec - * specific. Consult the documentation for the codec to determine the - * values to use. To determine the range programmatically, call - * vpx_codec_enc_config_default() with a usage value of 0. - */ - unsigned int rc_max_quantizer; - - /* - * bitrate tolerance - */ - - /*!\brief Rate control adaptation undershoot control - * - * This value, expressed as a percentage of the target bitrate, - * controls the maximum allowed adaptation speed of the codec. - * This factor controls the maximum amount of bits that can - * be subtracted from the target bitrate in order to compensate - * for prior overshoot. - * - * Valid values in the range 0-1000. - */ - unsigned int rc_undershoot_pct; - - /*!\brief Rate control adaptation overshoot control - * - * This value, expressed as a percentage of the target bitrate, - * controls the maximum allowed adaptation speed of the codec. - * This factor controls the maximum amount of bits that can - * be added to the target bitrate in order to compensate for - * prior undershoot. - * - * Valid values in the range 0-1000. - */ - unsigned int rc_overshoot_pct; - - /* - * decoder buffer model parameters - */ - - /*!\brief Decoder Buffer Size - * - * This value indicates the amount of data that may be buffered by the - * decoding application. Note that this value is expressed in units of - * time (milliseconds). For example, a value of 5000 indicates that the - * client will buffer (at least) 5000ms worth of encoded data. Use the - * target bitrate (#rc_target_bitrate) to convert to bits/bytes, if - * necessary. - */ - unsigned int rc_buf_sz; - - /*!\brief Decoder Buffer Initial Size - * - * This value indicates the amount of data that will be buffered by the - * decoding application prior to beginning playback. This value is - * expressed in units of time (milliseconds). Use the target bitrate - * (#rc_target_bitrate) to convert to bits/bytes, if necessary. - */ - unsigned int rc_buf_initial_sz; - - /*!\brief Decoder Buffer Optimal Size - * - * This value indicates the amount of data that the encoder should try - * to maintain in the decoder's buffer. This value is expressed in units - * of time (milliseconds). Use the target bitrate (#rc_target_bitrate) - * to convert to bits/bytes, if necessary. - */ - unsigned int rc_buf_optimal_sz; - - /* - * 2 pass rate control parameters - */ - - /*!\brief Two-pass mode CBR/VBR bias - * - * Bias, expressed on a scale of 0 to 100, for determining target size - * for the current frame. The value 0 indicates the optimal CBR mode - * value should be used. The value 100 indicates the optimal VBR mode - * value should be used. Values in between indicate which way the - * encoder should "lean." - */ - unsigned int rc_2pass_vbr_bias_pct; - - /*!\brief Two-pass mode per-GOP minimum bitrate - * - * This value, expressed as a percentage of the target bitrate, indicates - * the minimum bitrate to be used for a single GOP (aka "section") - */ - unsigned int rc_2pass_vbr_minsection_pct; - - /*!\brief Two-pass mode per-GOP maximum bitrate - * - * This value, expressed as a percentage of the target bitrate, indicates - * the maximum bitrate to be used for a single GOP (aka "section") - */ - unsigned int rc_2pass_vbr_maxsection_pct; - - /* - * keyframing settings (kf) - */ - - /*!\brief Keyframe placement mode - * - * This value indicates whether the encoder should place keyframes at a - * fixed interval, or determine the optimal placement automatically - * (as governed by the #kf_min_dist and #kf_max_dist parameters) - */ - enum vpx_kf_mode kf_mode; - - /*!\brief Keyframe minimum interval - * - * This value, expressed as a number of frames, prevents the encoder from - * placing a keyframe nearer than kf_min_dist to the previous keyframe. At - * least kf_min_dist frames non-keyframes will be coded before the next - * keyframe. Set kf_min_dist equal to kf_max_dist for a fixed interval. - */ - unsigned int kf_min_dist; - - /*!\brief Keyframe maximum interval - * - * This value, expressed as a number of frames, forces the encoder to code - * a keyframe if one has not been coded in the last kf_max_dist frames. - * A value of 0 implies all frames will be keyframes. Set kf_min_dist - * equal to kf_max_dist for a fixed interval. - */ - unsigned int kf_max_dist; - - /* - * Spatial scalability settings (ss) - */ - - /*!\brief Number of spatial coding layers. - * - * This value specifies the number of spatial coding layers to be used. - */ - unsigned int ss_number_layers; - - /*!\brief Enable auto alt reference flags for each spatial layer. - * - * These values specify if auto alt reference frame is enabled for each - * spatial layer. - */ - int ss_enable_auto_alt_ref[VPX_SS_MAX_LAYERS]; - - /*!\brief Target bitrate for each spatial layer. - * - * These values specify the target coding bitrate to be used for each - * spatial layer. - */ - unsigned int ss_target_bitrate[VPX_SS_MAX_LAYERS]; - - /*!\brief Number of temporal coding layers. - * - * This value specifies the number of temporal layers to be used. - */ - unsigned int ts_number_layers; - - /*!\brief Target bitrate for each temporal layer. - * - * These values specify the target coding bitrate to be used for each - * temporal layer. - */ - unsigned int ts_target_bitrate[VPX_TS_MAX_LAYERS]; - - /*!\brief Frame rate decimation factor for each temporal layer. - * - * These values specify the frame rate decimation factors to apply - * to each temporal layer. - */ - unsigned int ts_rate_decimator[VPX_TS_MAX_LAYERS]; - - /*!\brief Length of the sequence defining frame temporal layer membership. - * - * This value specifies the length of the sequence that defines the - * membership of frames to temporal layers. For example, if the - * ts_periodicity = 8, then the frames are assigned to coding layers with a - * repeated sequence of length 8. - */ - unsigned int ts_periodicity; - - /*!\brief Template defining the membership of frames to temporal layers. - * - * This array defines the membership of frames to temporal coding layers. - * For a 2-layer encoding that assigns even numbered frames to one temporal - * layer (0) and odd numbered frames to a second temporal layer (1) with - * ts_periodicity=8, then ts_layer_id = (0,1,0,1,0,1,0,1). - */ - unsigned int ts_layer_id[VPX_TS_MAX_PERIODICITY]; - - /*!\brief Target bitrate for each spatial/temporal layer. - * - * These values specify the target coding bitrate to be used for each - * spatial/temporal layer. - * - */ - unsigned int layer_target_bitrate[VPX_MAX_LAYERS]; - - /*!\brief Temporal layering mode indicating which temporal layering scheme to - * use. - * - * The value (refer to VP9E_TEMPORAL_LAYERING_MODE) specifies the - * temporal layering mode to use. - * - */ - int temporal_layering_mode; -} vpx_codec_enc_cfg_t; /**< alias for struct vpx_codec_enc_cfg */ - -/*!\brief vp9 svc extra configure parameters - * - * This defines max/min quantizers and scale factors for each layer - * - */ -typedef struct vpx_svc_parameters { - int max_quantizers[VPX_MAX_LAYERS]; /**< Max Q for each layer */ - int min_quantizers[VPX_MAX_LAYERS]; /**< Min Q for each layer */ - int scaling_factor_num[VPX_MAX_LAYERS]; /**< Scaling factor-numerator */ - int scaling_factor_den[VPX_MAX_LAYERS]; /**< Scaling factor-denominator */ - int speed_per_layer[VPX_MAX_LAYERS]; /**< Speed setting for each sl */ - int temporal_layering_mode; /**< Temporal layering mode */ -} vpx_svc_extra_cfg_t; - -/*!\brief Initialize an encoder instance - * - * Initializes a encoder context using the given interface. Applications - * should call the vpx_codec_enc_init convenience macro instead of this - * function directly, to ensure that the ABI version number parameter - * is properly initialized. - * - * If the library was configured with --disable-multithread, this call - * is not thread safe and should be guarded with a lock if being used - * in a multithreaded context. - * - * \param[in] ctx Pointer to this instance's context. - * \param[in] iface Pointer to the algorithm interface to use. - * \param[in] cfg Configuration to use, if known. May be NULL. - * \param[in] flags Bitfield of VPX_CODEC_USE_* flags - * \param[in] ver ABI version number. Must be set to - * VPX_ENCODER_ABI_VERSION - * \retval #VPX_CODEC_OK - * The decoder algorithm initialized. - * \retval #VPX_CODEC_MEM_ERROR - * Memory allocation failed. - */ -vpx_codec_err_t vpx_codec_enc_init_ver(vpx_codec_ctx_t *ctx, - vpx_codec_iface_t *iface, - const vpx_codec_enc_cfg_t *cfg, - vpx_codec_flags_t flags, int ver); - -/*!\brief Convenience macro for vpx_codec_enc_init_ver() - * - * Ensures the ABI version parameter is properly set. - */ -#define vpx_codec_enc_init(ctx, iface, cfg, flags) \ - vpx_codec_enc_init_ver(ctx, iface, cfg, flags, VPX_ENCODER_ABI_VERSION) - -/*!\brief Initialize multi-encoder instance - * - * Initializes multi-encoder context using the given interface. - * Applications should call the vpx_codec_enc_init_multi convenience macro - * instead of this function directly, to ensure that the ABI version number - * parameter is properly initialized. - * - * \param[in] ctx Pointer to this instance's context. - * \param[in] iface Pointer to the algorithm interface to use. - * \param[in] cfg Configuration to use, if known. May be NULL. - * \param[in] num_enc Total number of encoders. - * \param[in] flags Bitfield of VPX_CODEC_USE_* flags - * \param[in] dsf Pointer to down-sampling factors. - * \param[in] ver ABI version number. Must be set to - * VPX_ENCODER_ABI_VERSION - * \retval #VPX_CODEC_OK - * The decoder algorithm initialized. - * \retval #VPX_CODEC_MEM_ERROR - * Memory allocation failed. - */ -vpx_codec_err_t vpx_codec_enc_init_multi_ver( - vpx_codec_ctx_t *ctx, vpx_codec_iface_t *iface, vpx_codec_enc_cfg_t *cfg, - int num_enc, vpx_codec_flags_t flags, vpx_rational_t *dsf, int ver); - -/*!\brief Convenience macro for vpx_codec_enc_init_multi_ver() - * - * Ensures the ABI version parameter is properly set. - */ -#define vpx_codec_enc_init_multi(ctx, iface, cfg, num_enc, flags, dsf) \ - vpx_codec_enc_init_multi_ver(ctx, iface, cfg, num_enc, flags, dsf, \ - VPX_ENCODER_ABI_VERSION) - -/*!\brief Get a default configuration - * - * Initializes a encoder configuration structure with default values. Supports - * the notion of "usages" so that an algorithm may offer different default - * settings depending on the user's intended goal. This function \ref SHOULD - * be called by all applications to initialize the configuration structure - * before specializing the configuration with application specific values. - * - * \param[in] iface Pointer to the algorithm interface to use. - * \param[out] cfg Configuration buffer to populate. - * \param[in] reserved Must set to 0 for VP8 and VP9. - * - * \retval #VPX_CODEC_OK - * The configuration was populated. - * \retval #VPX_CODEC_INCAPABLE - * Interface is not an encoder interface. - * \retval #VPX_CODEC_INVALID_PARAM - * A parameter was NULL, or the usage value was not recognized. - */ -vpx_codec_err_t vpx_codec_enc_config_default(vpx_codec_iface_t *iface, - vpx_codec_enc_cfg_t *cfg, - unsigned int reserved); - -/*!\brief Set or change configuration - * - * Reconfigures an encoder instance according to the given configuration. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] cfg Configuration buffer to use - * - * \retval #VPX_CODEC_OK - * The configuration was populated. - * \retval #VPX_CODEC_INCAPABLE - * Interface is not an encoder interface. - * \retval #VPX_CODEC_INVALID_PARAM - * A parameter was NULL, or the usage value was not recognized. - */ -vpx_codec_err_t vpx_codec_enc_config_set(vpx_codec_ctx_t *ctx, - const vpx_codec_enc_cfg_t *cfg); - -/*!\brief Get global stream headers - * - * Retrieves a stream level global header packet, if supported by the codec. - * - * \param[in] ctx Pointer to this instance's context - * - * \retval NULL - * Encoder does not support global header - * \retval Non-NULL - * Pointer to buffer containing global header packet - */ -vpx_fixed_buf_t *vpx_codec_get_global_headers(vpx_codec_ctx_t *ctx); - -/*!\brief deadline parameter analogous to VPx REALTIME mode. */ -#define VPX_DL_REALTIME (1) -/*!\brief deadline parameter analogous to VPx GOOD QUALITY mode. */ -#define VPX_DL_GOOD_QUALITY (1000000) -/*!\brief deadline parameter analogous to VPx BEST QUALITY mode. */ -#define VPX_DL_BEST_QUALITY (0) -/*!\brief Encode a frame - * - * Encodes a video frame at the given "presentation time." The presentation - * time stamp (PTS) \ref MUST be strictly increasing. - * - * The encoder supports the notion of a soft real-time deadline. Given a - * non-zero value to the deadline parameter, the encoder will make a "best - * effort" guarantee to return before the given time slice expires. It is - * implicit that limiting the available time to encode will degrade the - * output quality. The encoder can be given an unlimited time to produce the - * best possible frame by specifying a deadline of '0'. This deadline - * supercedes the VPx notion of "best quality, good quality, realtime". - * Applications that wish to map these former settings to the new deadline - * based system can use the symbols #VPX_DL_REALTIME, #VPX_DL_GOOD_QUALITY, - * and #VPX_DL_BEST_QUALITY. - * - * When the last frame has been passed to the encoder, this function should - * continue to be called, with the img parameter set to NULL. This will - * signal the end-of-stream condition to the encoder and allow it to encode - * any held buffers. Encoding is complete when vpx_codec_encode() is called - * and vpx_codec_get_cx_data() returns no data. - * - * \param[in] ctx Pointer to this instance's context - * \param[in] img Image data to encode, NULL to flush. - * \param[in] pts Presentation time stamp, in timebase units. - * \param[in] duration Duration to show frame, in timebase units. - * \param[in] flags Flags to use for encoding this frame. - * \param[in] deadline Time to spend encoding, in microseconds. (0=infinite) - * - * \retval #VPX_CODEC_OK - * The configuration was populated. - * \retval #VPX_CODEC_INCAPABLE - * Interface is not an encoder interface. - * \retval #VPX_CODEC_INVALID_PARAM - * A parameter was NULL, the image format is unsupported, etc. - */ -vpx_codec_err_t vpx_codec_encode(vpx_codec_ctx_t *ctx, const vpx_image_t *img, - vpx_codec_pts_t pts, unsigned long duration, - vpx_enc_frame_flags_t flags, - unsigned long deadline); - -/*!\brief Set compressed data output buffer - * - * Sets the buffer that the codec should output the compressed data - * into. This call effectively sets the buffer pointer returned in the - * next VPX_CODEC_CX_FRAME_PKT packet. Subsequent packets will be - * appended into this buffer. The buffer is preserved across frames, - * so applications must periodically call this function after flushing - * the accumulated compressed data to disk or to the network to reset - * the pointer to the buffer's head. - * - * `pad_before` bytes will be skipped before writing the compressed - * data, and `pad_after` bytes will be appended to the packet. The size - * of the packet will be the sum of the size of the actual compressed - * data, pad_before, and pad_after. The padding bytes will be preserved - * (not overwritten). - * - * Note that calling this function does not guarantee that the returned - * compressed data will be placed into the specified buffer. In the - * event that the encoded data will not fit into the buffer provided, - * the returned packet \ref MAY point to an internal buffer, as it would - * if this call were never used. In this event, the output packet will - * NOT have any padding, and the application must free space and copy it - * to the proper place. This is of particular note in configurations - * that may output multiple packets for a single encoded frame (e.g., lagged - * encoding) or if the application does not reset the buffer periodically. - * - * Applications may restore the default behavior of the codec providing - * the compressed data buffer by calling this function with a NULL - * buffer. - * - * Applications \ref MUSTNOT call this function during iteration of - * vpx_codec_get_cx_data(). - * - * \param[in] ctx Pointer to this instance's context - * \param[in] buf Buffer to store compressed data into - * \param[in] pad_before Bytes to skip before writing compressed data - * \param[in] pad_after Bytes to skip after writing compressed data - * - * \retval #VPX_CODEC_OK - * The buffer was set successfully. - * \retval #VPX_CODEC_INVALID_PARAM - * A parameter was NULL, the image format is unsupported, etc. - */ -vpx_codec_err_t vpx_codec_set_cx_data_buf(vpx_codec_ctx_t *ctx, - const vpx_fixed_buf_t *buf, - unsigned int pad_before, - unsigned int pad_after); - -/*!\brief Encoded data iterator - * - * Iterates over a list of data packets to be passed from the encoder to the - * application. The different kinds of packets available are enumerated in - * #vpx_codec_cx_pkt_kind. - * - * #VPX_CODEC_CX_FRAME_PKT packets should be passed to the application's - * muxer. Multiple compressed frames may be in the list. - * #VPX_CODEC_STATS_PKT packets should be appended to a global buffer. - * - * The application \ref MUST silently ignore any packet kinds that it does - * not recognize or support. - * - * The data buffers returned from this function are only guaranteed to be - * valid until the application makes another call to any vpx_codec_* function. - * - * \param[in] ctx Pointer to this instance's context - * \param[in,out] iter Iterator storage, initialized to NULL - * - * \return Returns a pointer to an output data packet (compressed frame data, - * two-pass statistics, etc.) or NULL to signal end-of-list. - * - */ -const vpx_codec_cx_pkt_t *vpx_codec_get_cx_data(vpx_codec_ctx_t *ctx, - vpx_codec_iter_t *iter); - -/*!\brief Get Preview Frame - * - * Returns an image that can be used as a preview. Shows the image as it would - * exist at the decompressor. The application \ref MUST NOT write into this - * image buffer. - * - * \param[in] ctx Pointer to this instance's context - * - * \return Returns a pointer to a preview image, or NULL if no image is - * available. - * - */ -const vpx_image_t *vpx_codec_get_preview_frame(vpx_codec_ctx_t *ctx); - -/*!@} - end defgroup encoder*/ -#ifdef __cplusplus -} -#endif -#endif // VPX_VPX_ENCODER_H_ diff --git a/protocols/Tox/include/vpx/vpx_frame_buffer.h b/protocols/Tox/include/vpx/vpx_frame_buffer.h deleted file mode 100644 index ad70cdd572..0000000000 --- a/protocols/Tox/include/vpx/vpx_frame_buffer.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2014 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef VPX_VPX_FRAME_BUFFER_H_ -#define VPX_VPX_FRAME_BUFFER_H_ - -/*!\file - * \brief Describes the decoder external frame buffer interface. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "./vpx_integer.h" - -/*!\brief The maximum number of work buffers used by libvpx. - * Support maximum 4 threads to decode video in parallel. - * Each thread will use one work buffer. - * TODO(hkuang): Add support to set number of worker threads dynamically. - */ -#define VPX_MAXIMUM_WORK_BUFFERS 8 - -/*!\brief The maximum number of reference buffers that a VP9 encoder may use. - */ -#define VP9_MAXIMUM_REF_BUFFERS 8 - -/*!\brief External frame buffer - * - * This structure holds allocated frame buffers used by the decoder. - */ -typedef struct vpx_codec_frame_buffer { - uint8_t *data; /**< Pointer to the data buffer */ - size_t size; /**< Size of data in bytes */ - void *priv; /**< Frame's private data */ -} vpx_codec_frame_buffer_t; - -/*!\brief get frame buffer callback prototype - * - * This callback is invoked by the decoder to retrieve data for the frame - * buffer in order for the decode call to complete. The callback must - * allocate at least min_size in bytes and assign it to fb->data. The callback - * must zero out all the data allocated. Then the callback must set fb->size - * to the allocated size. The application does not need to align the allocated - * data. The callback is triggered when the decoder needs a frame buffer to - * decode a compressed image into. This function may be called more than once - * for every call to vpx_codec_decode. The application may set fb->priv to - * some data which will be passed back in the ximage and the release function - * call. |fb| is guaranteed to not be NULL. On success the callback must - * return 0. Any failure the callback must return a value less than 0. - * - * \param[in] priv Callback's private data - * \param[in] new_size Size in bytes needed by the buffer - * \param[in,out] fb Pointer to vpx_codec_frame_buffer_t - */ -typedef int (*vpx_get_frame_buffer_cb_fn_t)(void *priv, size_t min_size, - vpx_codec_frame_buffer_t *fb); - -/*!\brief release frame buffer callback prototype - * - * This callback is invoked by the decoder when the frame buffer is not - * referenced by any other buffers. |fb| is guaranteed to not be NULL. On - * success the callback must return 0. Any failure the callback must return - * a value less than 0. - * - * \param[in] priv Callback's private data - * \param[in] fb Pointer to vpx_codec_frame_buffer_t - */ -typedef int (*vpx_release_frame_buffer_cb_fn_t)(void *priv, - vpx_codec_frame_buffer_t *fb); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // VPX_VPX_FRAME_BUFFER_H_ diff --git a/protocols/Tox/include/vpx/vpx_image.h b/protocols/Tox/include/vpx/vpx_image.h deleted file mode 100644 index d6d3166d2f..0000000000 --- a/protocols/Tox/include/vpx/vpx_image.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/*!\file - * \brief Describes the vpx image descriptor and associated operations - * - */ -#ifndef VPX_VPX_IMAGE_H_ -#define VPX_VPX_IMAGE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*!\brief Current ABI version number - * - * \internal - * If this file is altered in any way that changes the ABI, this value - * must be bumped. Examples include, but are not limited to, changing - * types, removing or reassigning enums, adding/removing/rearranging - * fields to structures - */ -#define VPX_IMAGE_ABI_VERSION (4) /**<\hideinitializer*/ - -#define VPX_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */ -#define VPX_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */ -#define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */ -#define VPX_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */ - -/*!\brief List of supported image formats */ -typedef enum vpx_img_fmt { - VPX_IMG_FMT_NONE, - VPX_IMG_FMT_RGB24, /**< 24 bit per pixel packed RGB */ - VPX_IMG_FMT_RGB32, /**< 32 bit per pixel packed 0RGB */ - VPX_IMG_FMT_RGB565, /**< 16 bit per pixel, 565 */ - VPX_IMG_FMT_RGB555, /**< 16 bit per pixel, 555 */ - VPX_IMG_FMT_UYVY, /**< UYVY packed YUV */ - VPX_IMG_FMT_YUY2, /**< YUYV packed YUV */ - VPX_IMG_FMT_YVYU, /**< YVYU packed YUV */ - VPX_IMG_FMT_BGR24, /**< 24 bit per pixel packed BGR */ - VPX_IMG_FMT_RGB32_LE, /**< 32 bit packed BGR0 */ - VPX_IMG_FMT_ARGB, /**< 32 bit packed ARGB, alpha=255 */ - VPX_IMG_FMT_ARGB_LE, /**< 32 bit packed BGRA, alpha=255 */ - VPX_IMG_FMT_RGB565_LE, /**< 16 bit per pixel, gggbbbbb rrrrrggg */ - VPX_IMG_FMT_RGB555_LE, /**< 16 bit per pixel, gggbbbbb 0rrrrrgg */ - VPX_IMG_FMT_YV12 = - VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 1, /**< planar YVU */ - VPX_IMG_FMT_I420 = VPX_IMG_FMT_PLANAR | 2, - VPX_IMG_FMT_VPXYV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | - 3, /** < planar 4:2:0 format with vpx color space */ - VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4, - VPX_IMG_FMT_I422 = VPX_IMG_FMT_PLANAR | 5, - VPX_IMG_FMT_I444 = VPX_IMG_FMT_PLANAR | 6, - VPX_IMG_FMT_I440 = VPX_IMG_FMT_PLANAR | 7, - VPX_IMG_FMT_444A = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_HAS_ALPHA | 6, - VPX_IMG_FMT_I42016 = VPX_IMG_FMT_I420 | VPX_IMG_FMT_HIGHBITDEPTH, - VPX_IMG_FMT_I42216 = VPX_IMG_FMT_I422 | VPX_IMG_FMT_HIGHBITDEPTH, - VPX_IMG_FMT_I44416 = VPX_IMG_FMT_I444 | VPX_IMG_FMT_HIGHBITDEPTH, - VPX_IMG_FMT_I44016 = VPX_IMG_FMT_I440 | VPX_IMG_FMT_HIGHBITDEPTH -} vpx_img_fmt_t; /**< alias for enum vpx_img_fmt */ - -/*!\brief List of supported color spaces */ -typedef enum vpx_color_space { - VPX_CS_UNKNOWN = 0, /**< Unknown */ - VPX_CS_BT_601 = 1, /**< BT.601 */ - VPX_CS_BT_709 = 2, /**< BT.709 */ - VPX_CS_SMPTE_170 = 3, /**< SMPTE.170 */ - VPX_CS_SMPTE_240 = 4, /**< SMPTE.240 */ - VPX_CS_BT_2020 = 5, /**< BT.2020 */ - VPX_CS_RESERVED = 6, /**< Reserved */ - VPX_CS_SRGB = 7 /**< sRGB */ -} vpx_color_space_t; /**< alias for enum vpx_color_space */ - -/*!\brief List of supported color range */ -typedef enum vpx_color_range { - VPX_CR_STUDIO_RANGE = 0, /**< Y [16..235], UV [16..240] */ - VPX_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */ -} vpx_color_range_t; /**< alias for enum vpx_color_range */ - -/**\brief Image Descriptor */ -typedef struct vpx_image { - vpx_img_fmt_t fmt; /**< Image Format */ - vpx_color_space_t cs; /**< Color Space */ - vpx_color_range_t range; /**< Color Range */ - - /* Image storage dimensions */ - unsigned int w; /**< Stored image width */ - unsigned int h; /**< Stored image height */ - unsigned int bit_depth; /**< Stored image bit-depth */ - - /* Image display dimensions */ - unsigned int d_w; /**< Displayed image width */ - unsigned int d_h; /**< Displayed image height */ - - /* Image intended rendering dimensions */ - unsigned int r_w; /**< Intended rendering image width */ - unsigned int r_h; /**< Intended rendering image height */ - - /* Chroma subsampling info */ - unsigned int x_chroma_shift; /**< subsampling order, X */ - unsigned int y_chroma_shift; /**< subsampling order, Y */ - -/* Image data pointers. */ -#define VPX_PLANE_PACKED 0 /**< To be used for all packed formats */ -#define VPX_PLANE_Y 0 /**< Y (Luminance) plane */ -#define VPX_PLANE_U 1 /**< U (Chroma) plane */ -#define VPX_PLANE_V 2 /**< V (Chroma) plane */ -#define VPX_PLANE_ALPHA 3 /**< A (Transparency) plane */ - unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */ - int stride[4]; /**< stride between rows for each plane */ - - int bps; /**< bits per sample (for packed formats) */ - - /*!\brief The following member may be set by the application to associate - * data with this image. - */ - void *user_priv; - - /* The following members should be treated as private. */ - unsigned char *img_data; /**< private */ - int img_data_owner; /**< private */ - int self_allocd; /**< private */ - - void *fb_priv; /**< Frame buffer data associated with the image. */ -} vpx_image_t; /**< alias for struct vpx_image */ - -/**\brief Representation of a rectangle on a surface */ -typedef struct vpx_image_rect { - unsigned int x; /**< leftmost column */ - unsigned int y; /**< topmost row */ - unsigned int w; /**< width */ - unsigned int h; /**< height */ -} vpx_image_rect_t; /**< alias for struct vpx_image_rect */ - -/*!\brief Open a descriptor, allocating storage for the underlying image - * - * Returns a descriptor for storing an image of the given format. The - * storage for the descriptor is allocated on the heap. - * - * \param[in] img Pointer to storage for descriptor. If this parameter - * is NULL, the storage for the descriptor will be - * allocated on the heap. - * \param[in] fmt Format for the image - * \param[in] d_w Width of the image - * \param[in] d_h Height of the image - * \param[in] align Alignment, in bytes, of the image buffer and - * each row in the image(stride). - * - * \return Returns a pointer to the initialized image descriptor. If the img - * parameter is non-null, the value of the img parameter will be - * returned. - */ -vpx_image_t *vpx_img_alloc(vpx_image_t *img, vpx_img_fmt_t fmt, - unsigned int d_w, unsigned int d_h, - unsigned int align); - -/*!\brief Open a descriptor, using existing storage for the underlying image - * - * Returns a descriptor for storing an image of the given format. The - * storage for descriptor has been allocated elsewhere, and a descriptor is - * desired to "wrap" that storage. - * - * \param[in] img Pointer to storage for descriptor. If this parameter - * is NULL, the storage for the descriptor will be - * allocated on the heap. - * \param[in] fmt Format for the image - * \param[in] d_w Width of the image - * \param[in] d_h Height of the image - * \param[in] align Alignment, in bytes, of each row in the image. - * \param[in] img_data Storage to use for the image - * - * \return Returns a pointer to the initialized image descriptor. If the img - * parameter is non-null, the value of the img parameter will be - * returned. - */ -vpx_image_t *vpx_img_wrap(vpx_image_t *img, vpx_img_fmt_t fmt, unsigned int d_w, - unsigned int d_h, unsigned int align, - unsigned char *img_data); - -/*!\brief Set the rectangle identifying the displayed portion of the image - * - * Updates the displayed rectangle (aka viewport) on the image surface to - * match the specified coordinates and size. - * - * \param[in] img Image descriptor - * \param[in] x leftmost column - * \param[in] y topmost row - * \param[in] w width - * \param[in] h height - * - * \return 0 if the requested rectangle is valid, nonzero otherwise. - */ -int vpx_img_set_rect(vpx_image_t *img, unsigned int x, unsigned int y, - unsigned int w, unsigned int h); - -/*!\brief Flip the image vertically (top for bottom) - * - * Adjusts the image descriptor's pointers and strides to make the image - * be referenced upside-down. - * - * \param[in] img Image descriptor - */ -void vpx_img_flip(vpx_image_t *img); - -/*!\brief Close an image descriptor - * - * Frees all allocated storage associated with an image descriptor. - * - * \param[in] img Image descriptor - */ -void vpx_img_free(vpx_image_t *img); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // VPX_VPX_IMAGE_H_ diff --git a/protocols/Tox/include/vpx/vpx_integer.h b/protocols/Tox/include/vpx/vpx_integer.h deleted file mode 100644 index 09bad9222d..0000000000 --- a/protocols/Tox/include/vpx/vpx_integer.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef VPX_VPX_INTEGER_H_ -#define VPX_VPX_INTEGER_H_ - -/* get ptrdiff_t, size_t, wchar_t, NULL */ -#include - -#if defined(_MSC_VER) -#define VPX_FORCE_INLINE __forceinline -#define VPX_INLINE __inline -#else -#define VPX_FORCE_INLINE __inline__ __attribute__(always_inline) -// TODO(jbb): Allow a way to force inline off for older compilers. -#define VPX_INLINE inline -#endif - -#if defined(VPX_EMULATE_INTTYPES) -typedef signed char int8_t; -typedef signed short int16_t; -typedef signed int int32_t; - -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; - -#ifndef _UINTPTR_T_DEFINED -typedef size_t uintptr_t; -#endif - -#else - -/* Most platforms have the C99 standard integer types. */ - -#if defined(__cplusplus) -#if !defined(__STDC_FORMAT_MACROS) -#define __STDC_FORMAT_MACROS -#endif -#if !defined(__STDC_LIMIT_MACROS) -#define __STDC_LIMIT_MACROS -#endif -#endif // __cplusplus - -#include - -#endif - -/* VS2010 defines stdint.h, but not inttypes.h */ -#if defined(_MSC_VER) && _MSC_VER < 1800 -#define PRId64 "I64d" -#else -#include -#endif - -#endif // VPX_VPX_INTEGER_H_ diff --git a/protocols/Tox/res/Icons/audio_call.ico b/protocols/Tox/res/Icons/audio_call.ico deleted file mode 100644 index 555d0cb874..0000000000 Binary files a/protocols/Tox/res/Icons/audio_call.ico and /dev/null differ diff --git a/protocols/Tox/res/Icons/audio_end.ico b/protocols/Tox/res/Icons/audio_end.ico deleted file mode 100644 index 9698282053..0000000000 Binary files a/protocols/Tox/res/Icons/audio_end.ico and /dev/null differ diff --git a/protocols/Tox/res/Icons/audio_ring.ico b/protocols/Tox/res/Icons/audio_ring.ico deleted file mode 100644 index 77c4aa9640..0000000000 Binary files a/protocols/Tox/res/Icons/audio_ring.ico and /dev/null differ diff --git a/protocols/Tox/res/Icons/audio_start.ico b/protocols/Tox/res/Icons/audio_start.ico deleted file mode 100644 index 4863643b52..0000000000 Binary files a/protocols/Tox/res/Icons/audio_start.ico and /dev/null differ diff --git a/protocols/Tox/res/resource.rc b/protocols/Tox/res/resource.rc index eb42763582..4f40144849 100644 --- a/protocols/Tox/res/resource.rc +++ b/protocols/Tox/res/resource.rc @@ -64,14 +64,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL // remains consistent on all systems. IDI_TOX ICON "icons\\tox.ico" -IDI_AUDIO_CALL ICON "icons\\audio_call.ico" - -IDI_AUDIO_END ICON "icons\\audio_end.ico" - -IDI_AUDIO_RING ICON "icons\\audio_ring.ico" - -IDI_AUDIO_START ICON "icons\\audio_start.ico" - ///////////////////////////////////////////////////////////////////////////// // @@ -199,62 +191,6 @@ BEGIN COMBOBOX IDC_COMBO_VIDEOINPUT,12,78,286,30,CBS_DROPDOWN | CBS_SORT | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP END -IDD_CHATROOM_INVITE DIALOGEX 0, 0, 190, 179 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Invite contacts to chat room" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - PUSHBUTTON "&Invite",IDOK,87,158,46,14 - PUSHBUTTON "&Cancel",IDCANCEL,138,158,45,14 - CONTROL "",IDC_CCLIST,"CListControl",WS_TABSTOP | 0x16f,7,7,176,145,WS_EX_CLIENTEDGE -END - -IDD_CALL DIALOGEX 0, 0, 319, 226 -STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Call" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "End",IDCANCEL,262,204,50,15 -END - -IDD_CALL_RECEIVE DIALOGEX 0, 0, 239, 111 -STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Incoming call" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Answer",IDOK,64,89,50,15 - PUSHBUTTON "Reject",IDCANCEL,127,90,50,14 - LTEXT "From:",IDC_STATIC,8,22,24,9,SS_CENTERIMAGE - CONTROL "",IDC_FROM,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,41,23,191,9 - LTEXT "Date:",IDC_STATIC,8,37,28,9,SS_CENTERIMAGE - CONTROL "",IDC_DATE,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,41,36,191,9 - CONTROL "&User menu",IDC_USERMENU,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,178,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "User &details",IDC_DETAILS,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,197,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "&History",IDC_HISTORY,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,216,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "",IDC_PROTOCOL,"Button",BS_OWNERDRAW | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,7,9,12,12 - LTEXT "",IDC_NAME2,21,9,137,9,SS_NOPREFIX | SS_CENTERIMAGE -END - -IDD_CALL_SEND DIALOGEX 0, 0, 239, 95 -STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Outgoing call" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Call",IDOK,64,73,50,15 - PUSHBUTTON "Cancel",IDCANCEL,127,74,50,14 - LTEXT "To:",-1,8,22,24,9,SS_CENTERIMAGE - CONTROL "",IDC_FROM,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,41,23,191,9 - CONTROL "&User menu",IDC_USERMENU,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,178,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "User &details",IDC_DETAILS,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,197,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "&History",IDC_HISTORY,"MButtonClass",NOT WS_VISIBLE | WS_TABSTOP,216,7,16,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "",IDC_PROTOCOL,"Button",BS_OWNERDRAW | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,7,9,12,12 - LTEXT "",IDC_NAME2,21,9,137,9,SS_NOPREFIX | SS_CENTERIMAGE -END - ///////////////////////////////////////////////////////////////////////////// // @@ -329,40 +265,6 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 228 END - - IDD_CHATROOM_INVITE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 183 - TOPMARGIN, 7 - BOTTOMMARGIN, 172 - HORZGUIDE, 152 - HORZGUIDE, 158 - END - - IDD_CALL, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 312 - TOPMARGIN, 7 - BOTTOMMARGIN, 219 - END - - IDD_CALL_RECEIVE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 232 - TOPMARGIN, 7 - BOTTOMMARGIN, 104 - END - - IDD_CALL_SEND, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 232 - TOPMARGIN, 7 - BOTTOMMARGIN, 88 - END END #endif // APSTUDIO_INVOKED diff --git a/protocols/Tox/src/api_av.cpp b/protocols/Tox/src/api_av.cpp deleted file mode 100644 index c46e549a35..0000000000 --- a/protocols/Tox/src/api_av.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include "stdafx.h" - -/* COMMON A/V FUNCTIONS */ - -ToxAV *toxav_new(Tox *tox, TOXAV_ERR_NEW *error) -{ - return CreateFunction(__FUNCTION__)(tox, error); -} - -void toxav_kill(ToxAV *toxAV) -{ - CreateFunction(__FUNCTION__)(toxAV); -} - -Tox *toxav_get_tox(const ToxAV *toxAV) -{ - return CreateFunction(__FUNCTION__)(toxAV); -} - -uint32_t toxav_iteration_interval(ToxAV *toxAV) -{ - return CreateFunction(__FUNCTION__)(toxAV); -} - -void toxav_iterate(ToxAV *toxAV) -{ - CreateFunction(__FUNCTION__)(toxAV); -} - -bool toxav_call(ToxAV *toxAV, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, TOXAV_ERR_CALL *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, audio_bit_rate, video_bit_rate, error); -} - -void toxav_callback_call(ToxAV *toxAV, toxav_call_cb *callback, void *user_data) -{ - CreateFunction(__FUNCTION__)(toxAV, callback, user_data); -} - -bool toxav_answer(ToxAV *toxAV, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, TOXAV_ERR_ANSWER *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, audio_bit_rate, video_bit_rate, error); -} - -void toxav_callback_call_state(ToxAV *toxAV, toxav_call_state_cb *callback, void *user_data) -{ - CreateFunction(__FUNCTION__)(toxAV, callback, user_data); -} - -bool toxav_call_control(ToxAV *toxAV, uint32_t friend_number, TOXAV_CALL_CONTROL control, TOXAV_ERR_CALL_CONTROL *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, control, error); -} - -bool toxav_bit_rate_set(ToxAV *toxAV, uint32_t friend_number, int32_t audio_bit_rate, int32_t video_bit_rate, TOXAV_ERR_BIT_RATE_SET *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, audio_bit_rate, video_bit_rate, error); -} - -void toxav_callback_bit_rate_status(ToxAV *toxAV, toxav_bit_rate_status_cb *callback, void *user_data) -{ - CreateFunction(__FUNCTION__)(toxAV, callback, user_data); -} - -bool toxav_audio_send_frame(ToxAV *toxAV, uint32_t friend_number, const int16_t *pcm, size_t sample_count, uint8_t channels, uint32_t sampling_rate, TOXAV_ERR_SEND_FRAME *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, pcm, sample_count, channels, sampling_rate, error); -} - -bool toxav_video_send_frame(ToxAV *toxAV, uint32_t friend_number, uint16_t width, uint16_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, TOXAV_ERR_SEND_FRAME *error) -{ - return CreateFunction(__FUNCTION__)(toxAV, friend_number, width, height, y, u, v, error); -} - -void toxav_callback_audio_receive_frame(ToxAV *toxAV, toxav_audio_receive_frame_cb *callback, void *user_data) -{ - CreateFunction(__FUNCTION__)(toxAV, callback, user_data); -} - -void toxav_callback_video_receive_frame(ToxAV *toxAV, toxav_video_receive_frame_cb *callback, void *user_data) -{ - CreateFunction(__FUNCTION__)(toxAV, callback, user_data); -} - -int toxav_add_av_groupchat(Tox *tox, void(*audio_callback)(void *, int, int, const int16_t *, unsigned int, uint8_t, unsigned int, void *), void *userdata) -{ - return CreateFunction(__FUNCTION__)(tox, audio_callback, userdata); -} - -int toxav_join_av_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length, void(*audio_callback)(void *, int, int, const int16_t *, unsigned int, uint8_t, unsigned int, void *), void *userdata) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, data, length, audio_callback, userdata); -} - -int toxav_group_send_audio(Tox *tox, int groupnumber, const int16_t *pcm, unsigned int samples, uint8_t channels, unsigned int sample_rate) -{ - return CreateFunction(__FUNCTION__)(tox, groupnumber, pcm, samples, channels, sample_rate); -} \ No newline at end of file diff --git a/protocols/Tox/src/api_avatars.cpp b/protocols/Tox/src/api_avatars.cpp deleted file mode 100644 index 658b835a68..0000000000 --- a/protocols/Tox/src/api_avatars.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "stdafx.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_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 deleted file mode 100644 index 1ed6b51d40..0000000000 --- a/protocols/Tox/src/api_connection.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "stdafx.h" - -/* CONNECTION FUNCTIONS */ - -bool tox_bootstrap(Tox *tox, const char *host, uint16_t port, const uint8_t *public_key, TOX_ERR_BOOTSTRAP *error) -{ - return CreateFunction(__FUNCTION__)(tox, host, port, public_key, error); -} - -bool tox_add_tcp_relay(Tox *tox, const char *host, uint16_t port, const uint8_t *public_key, TOX_ERR_BOOTSTRAP *error) -{ - return CreateFunction(__FUNCTION__)(tox, host, port, public_key, error); -} - -TOX_CONNECTION tox_self_get_connection_status(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint32_t tox_iteration_interval(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -void tox_iterate(Tox *tox, void *user_data) -{ - CreateFunction(__FUNCTION__)(tox, user_data); -} \ No newline at end of file diff --git a/protocols/Tox/src/api_dns.cpp b/protocols/Tox/src/api_dns.cpp deleted file mode 100644 index 57db01e57c..0000000000 --- a/protocols/Tox/src/api_dns.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "stdafx.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 deleted file mode 100644 index 85e77c06ad..0000000000 --- a/protocols/Tox/src/api_encryption.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "stdafx.h" - -/* ENCRYPTION FUNCTIONS */ - -bool tox_pass_decrypt(const uint8_t *data, size_t length, const uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_DECRYPTION *error) -{ - return CreateFunction(__FUNCTION__)(data, length, passphrase, pplength, out, error); -} - -bool tox_pass_encrypt(const uint8_t *data, size_t data_len, const uint8_t *passphrase, size_t pplength, uint8_t *out, TOX_ERR_ENCRYPTION *error) -{ - return CreateFunction(__FUNCTION__)(data, data_len, passphrase, pplength, out, error); -} - -bool tox_is_data_encrypted(const uint8_t *data) -{ - return CreateFunction(__FUNCTION__)(data); -} \ No newline at end of file diff --git a/protocols/Tox/src/api_friends.cpp b/protocols/Tox/src/api_friends.cpp deleted file mode 100644 index caa133feb7..0000000000 --- a/protocols/Tox/src/api_friends.cpp +++ /dev/null @@ -1,135 +0,0 @@ -#include "stdafx.h" - -/* FRIEND FUNCTIONS */ - -uint32_t tox_friend_add(Tox *tox, const uint8_t *address, const uint8_t *message, size_t length, TOX_ERR_FRIEND_ADD *error) -{ - return CreateFunction(__FUNCTION__)(tox, address, message, length, error); -} - -uint32_t tox_friend_add_norequest(Tox *tox, const uint8_t *public_key, TOX_ERR_FRIEND_ADD *error) -{ - return CreateFunction(__FUNCTION__)(tox, public_key, error); -} - -bool tox_friend_delete(Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_DELETE *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -uint32_t tox_friend_by_public_key(const Tox *tox, const uint8_t *public_key, TOX_ERR_FRIEND_BY_PUBLIC_KEY *error) -{ - return CreateFunction(__FUNCTION__)(tox, public_key, error); -} - -int tox_friend_exists(const Tox *tox, int32_t friendnumber) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber); -} - -size_t tox_self_get_friend_list_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -void tox_self_get_friend_list(const Tox *tox, uint32_t *list) -{ - CreateFunction(__FUNCTION__)(tox, list); -} - -bool tox_friend_get_public_key(const Tox *tox, uint32_t friend_number, uint8_t *public_key, TOX_ERR_FRIEND_GET_PUBLIC_KEY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, public_key, error); -} - -uint64_t tox_friend_get_last_online(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_GET_LAST_ONLINE *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -size_t tox_friend_get_name_size(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -bool tox_friend_get_name(const Tox *tox, uint32_t friend_number, uint8_t *name, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, name, error); -} - -void tox_callback_friend_name(Tox *tox, tox_friend_name_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -size_t tox_friend_get_status_message_size(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -bool tox_friend_get_status_message(const Tox *tox, uint32_t friend_number, uint8_t *status_message, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, status_message, error); -} - -void tox_callback_friend_status_message(Tox *tox, tox_friend_status_message_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -TOX_USER_STATUS tox_friend_get_status(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -void tox_callback_friend_status(Tox *tox, tox_friend_status_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -TOX_CONNECTION tox_friend_get_connection_status(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -void tox_callback_friend_connection_status(Tox *tox, tox_friend_connection_status_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -bool tox_friend_get_typing(const Tox *tox, uint32_t friend_number, TOX_ERR_FRIEND_QUERY *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, error); -} - -void tox_callback_friend_typing(Tox *tox, tox_friend_typing_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -/* */ - -bool tox_self_set_typing(Tox *tox, uint32_t friend_number, bool is_typing, TOX_ERR_SET_TYPING *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, is_typing, error); -} - -uint32_t tox_friend_send_message(Tox *tox, uint32_t friend_number, TOX_MESSAGE_TYPE type, const uint8_t *message, size_t length, TOX_ERR_FRIEND_SEND_MESSAGE *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, type, message, length, error); -} - -void tox_callback_friend_read_receipt(Tox *tox, tox_friend_read_receipt_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -void tox_callback_friend_request(Tox *tox, tox_friend_request_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -void tox_callback_friend_message(Tox *tox, tox_friend_message_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} \ No newline at end of file diff --git a/protocols/Tox/src/api_groupchats.cpp b/protocols/Tox/src/api_groupchats.cpp deleted file mode 100644 index 9919eee92c..0000000000 --- a/protocols/Tox/src/api_groupchats.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "stdafx.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) -{ - CreateFunction(__FUNCTION__)(tox, function, 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) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -int tox_del_groupchat(Tox *tox, int groupnumber) -{ - return CreateFunction(__FUNCTION__)(tox, 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) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, groupnumber); -} - -int tox_join_groupchat(Tox *tox, int32_t friendnumber, const uint8_t *data, uint16_t length) -{ - return CreateFunction(__FUNCTION__)(tox, friendnumber, data, 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) -{ - return CreateFunction(__FUNCTION__)(tox, groupnumber, title, 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) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -uint32_t tox_get_chatlist(const Tox *tox, int32_t *out_list, uint32_t list_size) -{ - return CreateFunction(__FUNCTION__)(tox, out_list, list_size); -} - -int tox_group_get_type(const Tox *tox, int groupnumber) -{ - return CreateFunction(__FUNCTION__)(tox, groupnumber); -} \ No newline at end of file diff --git a/protocols/Tox/src/api_main.cpp b/protocols/Tox/src/api_main.cpp deleted file mode 100644 index 3d46576925..0000000000 --- a/protocols/Tox/src/api_main.cpp +++ /dev/null @@ -1,131 +0,0 @@ -#include "stdafx.h" - -/* MAIN FUNCTIONS */ - -bool tox_version_is_compatible(uint32_t major, uint32_t minor, uint32_t patch) -{ - return CreateFunction(__FUNCTION__)(major, minor, patch); -} - -struct Tox_Options *tox_options_new(TOX_ERR_OPTIONS_NEW *error) -{ - return CreateFunction(__FUNCTION__)(error); -} - -void tox_options_default(struct Tox_Options *options) -{ - CreateFunction(__FUNCTION__)(options); -} - -void tox_options_free(struct Tox_Options *options) -{ - CreateFunction(__FUNCTION__)(options); -} - -Tox *tox_new(const struct Tox_Options *options, TOX_ERR_NEW *error) -{ - return CreateFunction(__FUNCTION__)(options, error); -} - -void tox_kill(Tox *tox) -{ - CreateFunction(__FUNCTION__)(tox); -} - -void tox_self_get_address(const Tox *tox, uint8_t *address) -{ - CreateFunction(__FUNCTION__)(tox, address); -} - -bool tox_self_set_name(Tox *tox, const uint8_t *name, size_t length, TOX_ERR_SET_INFO *error) -{ - return CreateFunction(__FUNCTION__)(tox, name, length, error); -} - -void tox_self_get_name(const Tox *tox, uint8_t *name) -{ - CreateFunction(__FUNCTION__)(tox, name); -} - -int tox_get_self_name_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -size_t tox_self_get_status_message_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -bool tox_self_set_status_message(Tox *tox, const uint8_t *status, size_t length, TOX_ERR_SET_INFO *error) -{ - return CreateFunction(__FUNCTION__)(tox, status, length, error); -} - -void tox_self_set_status(Tox *tox, TOX_USER_STATUS user_status) -{ - CreateFunction(__FUNCTION__)(tox, user_status); -} - -void tox_self_get_status_message(const Tox *tox, uint8_t *status) -{ - CreateFunction(__FUNCTION__)(tox, status); -} - -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_self_user_status(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -/* SAVING AND LOADING FUNCTIONS */ - -size_t tox_get_savedata_size(const Tox *tox) -{ - return CreateFunction(__FUNCTION__)(tox); -} - -void tox_get_savedata(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 deleted file mode 100644 index 446a2ccc80..0000000000 --- a/protocols/Tox/src/api_transfer.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "stdafx.h" - -/* FILE SENDING FUNCTIONS */ - -bool tox_hash(uint8_t *hash, const uint8_t *data, size_t datalen) -{ - return CreateFunction(__FUNCTION__)(hash, data, datalen); -} - -bool tox_file_get_file_id(const Tox *tox, uint32_t friend_number, uint32_t file_number, uint8_t *file_id, TOX_ERR_FILE_GET *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, file_number, file_id, error); -} - -uint32_t tox_file_send(Tox *tox, uint32_t friend_number, uint32_t kind, uint64_t file_size, const uint8_t *file_id, const uint8_t *filename, size_t filename_length, TOX_ERR_FILE_SEND *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, kind, file_size, file_id, filename, filename_length, error); -} - -bool tox_file_send_chunk(Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position, const uint8_t *data, size_t length, TOX_ERR_FILE_SEND_CHUNK *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, file_number, position, data, length, error); -} - -void tox_callback_file_chunk_request(Tox *tox, tox_file_chunk_request_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -void tox_callback_file_recv(Tox *tox, tox_file_recv_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -void tox_callback_file_recv_control(Tox *tox, tox_file_recv_control_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -void tox_callback_file_recv_chunk(Tox *tox, tox_file_recv_chunk_cb *function) -{ - CreateFunction(__FUNCTION__)(tox, function); -} - -bool tox_file_control(Tox *tox, uint32_t friend_number, uint32_t file_number, TOX_FILE_CONTROL control, TOX_ERR_FILE_CONTROL *error) -{ - return CreateFunction(__FUNCTION__)(tox, friend_number, file_number, control, error); -} - -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/main.cpp b/protocols/Tox/src/main.cpp index 90f3cf8efc..95c14d25f4 100644 --- a/protocols/Tox/src/main.cpp +++ b/protocols/Tox/src/main.cpp @@ -36,14 +36,10 @@ extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOC extern "C" int __declspec(dllexport) Load(void) { - g_hToxLibrary = LoadLibrary(TOX_LIBRARY); - if (g_hToxLibrary == nullptr) - return 1; - if (!TOX_VERSION_IS_ABI_COMPATIBLE()) { wchar_t message[100]; - mir_snwprintf(message, TranslateT("Current version of plugin is support Tox API version %i.%i.%i which is incompatible with %s"), TOX_VERSION_MAJOR, TOX_VERSION_MINOR, TOX_VERSION_PATCH, TOX_LIBRARY); + mir_snwprintf(message, TranslateT("Current version of plugin is support Tox API version %i.%i.%i which is incompatible with %s"), TOX_VERSION_MAJOR, TOX_VERSION_MINOR, TOX_VERSION_PATCH, ""); CToxProto::ShowNotification(message, MB_ICONERROR); FreeLibrary(g_hToxLibrary); return 2; @@ -68,8 +64,5 @@ extern "C" int __declspec(dllexport) Load(void) extern "C" int __declspec(dllexport) Unload(void) { - if (g_hToxLibrary) - FreeLibrary(g_hToxLibrary); - return 0; } \ No newline at end of file diff --git a/protocols/Tox/src/resource.h b/protocols/Tox/src/resource.h index 78d9fad660..a036587e91 100644 --- a/protocols/Tox/src/resource.h +++ b/protocols/Tox/src/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. -// Used by C:\Users\unsane\Projects\c++\miranda-ng\protocols\Tox\res\resource.rc +// Used by D:\Projects\c++\miranda-ng\protocols\Tox\res\resource.rc // #define IDI_TOX 100 #define IDD_USER_INFO 101 @@ -12,28 +12,20 @@ #define IDD_ADDNODE 108 #define IDD_NODE_EDITOR 109 #define IDD_OPTIONS_MULTIMEDIA 110 -#define IDD_CALL 111 #define IDI_AUDIO_END 112 #define IDI_AUDIO_RING 113 #define IDI_AUDIO_START 114 #define IDI_AUDIO_CALL 115 -#define IDD_CHATROOM_INVITE 172 -#define IDC_CCLIST 173 #define IDC_EDITSCR 174 -#define IDD_CALL_RECEIVE 175 -#define IDD_CALL_SEND 176 #define IDC_TOXID 1001 #define IDC_CLIPBOARD 1002 #define IDC_SEARCH 1003 #define IDC_PASSWORD 1004 #define IDC_NAME 1005 -#define IDC_FROM 1005 #define IDC_GROUP 1006 -#define IDC_DATE 1006 #define IDC_ENABLE_UDP 1007 #define IDC_ENABLE_IPV6 1008 #define IDC_PROFILE_EXPORT 1009 -#define IDC_NAME2 1009 #define IDC_DNS_ID 1010 #define IDC_PROFILE_NEW 1011 #define IDC_SAVEPERMANENT 1012 @@ -55,11 +47,7 @@ #define IDC_MAXRECONNECTRETRIES 1026 #define IDC_MAXCONNECTRETRIESSPIN 1027 #define IDC_MAXRECONNECTRETRIESSPIN 1028 -#define IDC_DETAILS 1069 -#define IDC_USERMENU 1071 -#define IDC_HISTORY 1080 #define IDC_UPDATENODES 1081 -#define IDC_PROTOCOL 1580 // Next default values for new objects // diff --git a/protocols/Tox/src/stdafx.h b/protocols/Tox/src/stdafx.h index c403b787ce..b69c0fd629 100644 --- a/protocols/Tox/src/stdafx.h +++ b/protocols/Tox/src/stdafx.h @@ -45,7 +45,6 @@ DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0 #include #include -#include #include #include @@ -60,8 +59,6 @@ struct CToxProto; #include "tox_profile.h" #include "tox_options.h" #include "tox_transfer.h" -#include "tox_multimedia.h" -#include "tox_chatrooms.h" #include "tox_proto.h" #include "http_request.h" @@ -107,13 +104,4 @@ enum TOX_DB_EVENT #define TOX_MAX_AVATAR_SIZE 1 << 16 // 2 ^ 16 bytes -#define TOX_LIBRARY L"libtox.dll" -extern HMODULE g_hToxLibrary; - -template -T CreateFunction(LPCSTR functionName) -{ - return reinterpret_cast(GetProcAddress(g_hToxLibrary, functionName)); -} - #endif //_COMMON_H_ \ No newline at end of file diff --git a/protocols/Tox/src/tox_chatrooms.cpp b/protocols/Tox/src/tox_chatrooms.cpp deleted file mode 100644 index 5ca9895fcb..0000000000 --- a/protocols/Tox/src/tox_chatrooms.cpp +++ /dev/null @@ -1,326 +0,0 @@ -#include "stdafx.h" -/* -MCONTACT CToxProto::GetChatRoom(int groupNumber) -{ - MCONTACT hContact = NULL; - for (hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) - { - if (!isChatRoom(hContact)) - { - continue; - } - int chatRoumNumber = getWord(hContact, TOX_SETTINGS_CHAT_ID, TOX_ERROR); - if (groupNumber == chatRoumNumber) - { - break; - } - } - return hContact; -} - -MCONTACT CToxProto::AddChatRoom(int groupNumber) -{ - MCONTACT hContact = GetChatRoom(groupNumber); - if (!hContact) - { - hContact = db_add_contact(); - Proto_AddToContact(hContact, m_szModuleName); - - setWord(hContact, TOX_SETTINGS_CHAT_ID, groupNumber); - - wchar_t title[MAX_PATH]; - mir_snwprintf(title, L"%s #%d", TranslateT("Group chat"), groupNumber); - setWString(hContact, "Nick", title); - - DBVARIANT dbv; - if (!db_get_s(NULL, "Chat", "AddToGroup", &dbv, DBVT_WCHAR)) - { - db_set_ws(hContact, "CList", "Group", dbv.ptszVal); - db_free(&dbv); - } - - setByte(hContact, "ChatRoom", 1); - } - return hContact; -} - -void CToxProto::LoadChatRoomList(void*) -{ - uint32_t count = tox_count_chatlist(toxThread->Tox()); - if (count == 0) - { - debugLogA(__FUNCTION__": your group chat list is empty"); - return; - } - int32_t *groupChats = (int32_t*)mir_alloc(count * sizeof(int32_t)); - tox_get_chatlist(toxThread->Tox(), groupChats, count); - for (uint32_t i = 0; i < count; i++) - { - int32_t groupNumber = groupChats[i]; - int type = tox_group_get_type(toxThread->Tox(), groupNumber); - if (type == TOX_GROUPCHAT_TYPE_AV) - { - continue; - } - MCONTACT hContact = AddChatRoom(groupNumber); - if (hContact) - { - uint8_t title[TOX_MAX_NAME_LENGTH] = { 0 }; - tox_group_get_title(toxThread->Tox(), groupNumber, title, TOX_MAX_NAME_LENGTH); - setWString(hContact, "Nick", ptrW(mir_utf8decodeW((char*)title))); - } - } - mir_free(groupChats); -} - -int CToxProto::OnGroupChatEventHook(WPARAM, LPARAM lParam) -{ - GCHOOK *gch = (GCHOOK*)lParam; - if (!gch) - { - return 1; - } - else - return 0; -} - -int CToxProto::OnGroupChatMenuHook(WPARAM, LPARAM) -{ - return 0; -} - -INT_PTR CToxProto::OnJoinChatRoom(WPARAM, LPARAM) -{ - return 0; -} - -INT_PTR CToxProto::OnLeaveChatRoom(WPARAM, LPARAM) -{ - return 0; -} - -INT_PTR CToxProto::OnCreateChatRoom(WPARAM, LPARAM) -{ - ChatRoomInviteParam param = { this }; - - if (DialogBoxParam( - g_hInstance, - MAKEINTRESOURCE(IDD_CHATROOM_INVITE), - NULL, - CToxProto::ChatRoomInviteProc, - (LPARAM)¶m) == IDOK && !param.invitedContacts.empty()) - { - int groupNumber = tox_add_groupchat(toxThread->Tox()); - if (groupNumber == TOX_ERROR) - { - return 1; - } - for (std::vector::iterator it = param.invitedContacts.begin(); it != param.invitedContacts.end(); ++it) - { - int32_t friendNumber = GetToxFriendNumber(*it); - if (friendNumber == TOX_ERROR || tox_invite_friend(toxThread->Tox(), friendNumber, groupNumber) == TOX_ERROR) - { - return 1; - } - } - MCONTACT hContact = AddChatRoom(groupNumber); - if (!hContact) - { - return 1; - } - return 0; - } - - return 1; -} - -void CToxProto::InitGroupChatModule() -{ - GCREGISTER gcr = {}; - gcr.iMaxText = 0; - gcr.ptszDispName = this->m_tszUserName; - gcr.pszModule = this->m_szModuleName; - Chat_Register(&gcr); - - HookProtoEvent(ME_GC_EVENT, &CToxProto::OnGroupChatEventHook); - HookProtoEvent(ME_GC_BUILDMENU, &CToxProto::OnGroupChatMenuHook); - - CreateProtoService(PS_JOINCHAT, &CToxProto::OnJoinChatRoom); - CreateProtoService(PS_LEAVECHAT, &CToxProto::OnLeaveChatRoom); -} - -void CToxProto::CloseAllChatChatSessions() -{ - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYINDEX | GCF_ID; - gci.pszModule = m_szModuleName; - - int count = pci->SM_GetCount(m_szModuleName); - for (int i = 0; i < count; i++) - { - gci.iItem = i; - if (!Chat_GetInfo(&gci)) - { - Chat_Control(m_szModuleName, gci.pszID, SESSION_OFFLINE); - Chat_Terminate(m_szModuleName, gci.pszID); - } - } -} - -void CToxProto::OnGroupChatInvite(Tox *tox, int32_t friendNumber, uint8_t type, const uint8_t *data, uint16_t length, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - if (type == TOX_GROUPCHAT_TYPE_AV) - { - Netlib_Logf(proto->m_hNetlibUser, __FUNCTION__": audio chat is not supported yet"); - return; - } - - int groupNumber = tox_join_groupchat(tox, friendNumber, data, length); - if (groupNumber == TOX_ERROR) - { - Netlib_Logf(proto->m_hNetlibUser, __FUNCTION__": failed to join to group chat"); - return; - } - - MCONTACT hContact = proto->AddChatRoom(groupNumber); - if (!hContact) - { - Netlib_Logf(proto->m_hNetlibUser, __FUNCTION__": failed to create group chat"); - } -} - -void CToxProto::ChatValidateContact(HWND hwndList, const std::vector &contacts, MCONTACT hContact) -{ - bool isProtoContact = mir_strcmpi(GetContactProto(hContact), m_szModuleName) == 0; - if (isProtoContact && !isChatRoom(hContact)) - { - if (std::find(contacts.begin(), contacts.end(), hContact) != contacts.end()) - { - SendMessage(hwndList, CLM_DELETEITEM, (WPARAM)hContact, 0); - } - return; - } - SendMessage(hwndList, CLM_DELETEITEM, (WPARAM)hContact, 0); -} - -void CToxProto::ChatPrepare(HWND hwndList, const std::vector &contacts, MCONTACT hContact) -{ - if (hContact == NULL) - { - hContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_ROOT, 0); - } - while (hContact) - { - if (IsHContactGroup(hContact)) - { - MCONTACT hSubContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hContact); - if (hSubContact) - { - ChatPrepare(hwndList, contacts, hSubContact); - } - } - else if (IsHContactContact(hContact)) - { - ChatValidateContact(hwndList, contacts, hContact); - } - hContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXT, (LPARAM)hContact); - } -} - -std::vector CToxProto::GetInvitedContacts(HWND hwndList, MCONTACT hContact) -{ - std::vector contacts; - if (hContact == NULL) - { - hContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_ROOT, 0); - } - while (hContact) - { - if (IsHContactGroup(hContact)) - { - MCONTACT hSubContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hContact); - if (hSubContact) - { - std::vector subContacts = GetInvitedContacts(hwndList, hSubContact); - contacts.insert(contacts.end(), subContacts.begin(), subContacts.end()); - } - } - else - { - int cheked = SendMessage(hwndList, CLM_GETCHECKMARK, (WPARAM)hContact, 0); - if (cheked) - { - contacts.push_back(hContact); - } - } - hContact = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXT, (LPARAM)hContact); - } - return contacts; -} - -INT_PTR CALLBACK CToxProto::ChatRoomInviteProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hwndList = GetDlgItem(hwndDlg, IDC_CCLIST); - ChatRoomInviteParam *param = (ChatRoomInviteParam*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - { - param = (ChatRoomInviteParam*)lParam; - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - { - //HWND hwndClist = GetDlgItem(hwndDlg, IDC_CCLIST); - //SetWindowLongPtr(hwndClist, GWL_STYLE, GetWindowLongPtr(hwndClist, GWL_STYLE) & ~CLS_HIDEOFFLINE); - } - } - break; - - case WM_CLOSE: - EndDialog(hwndDlg, 0); - break; - - case WM_NOTIFY: - { - NMCLISTCONTROL *nmc = (NMCLISTCONTROL*)lParam; - if (nmc->hdr.idFrom == IDC_CCLIST) - { - switch (nmc->hdr.code) - { - case CLN_NEWCONTACT: - if ((nmc->flags & (CLNF_ISGROUP | CLNF_ISINFO)) == 0) - { - param->proto->ChatValidateContact(nmc->hdr.hwndFrom, param->invitedContacts, (UINT_PTR)nmc->hItem); - } - break; - - case CLN_LISTREBUILT: - { - param->proto->ChatPrepare(nmc->hdr.hwndFrom, param->invitedContacts); - } - break; - } - } - } - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - //SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - param->invitedContacts = param->proto->GetInvitedContacts(hwndList); - EndDialog(hwndDlg, IDOK); - break; - - case IDCANCEL: - EndDialog(hwndDlg, IDCANCEL); - break; - } - break; - } - return FALSE; -} -*/ \ No newline at end of file diff --git a/protocols/Tox/src/tox_chatrooms.h b/protocols/Tox/src/tox_chatrooms.h deleted file mode 100644 index 0f51a7391e..0000000000 --- a/protocols/Tox/src/tox_chatrooms.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _TOX_CHATROOMS_H_ -#define _TOX_CHATROOMS_H_ - -struct ChatRoomInviteParam -{ - CToxProto *proto; - std::vector invitedContacts; -}; - -#endif //_TOX_CHATROOMS_H_ \ No newline at end of file diff --git a/protocols/Tox/src/tox_core.cpp b/protocols/Tox/src/tox_core.cpp index ab2e4ceb1d..735bcd0f3f 100644 --- a/protocols/Tox/src/tox_core.cpp +++ b/protocols/Tox/src/tox_core.cpp @@ -58,22 +58,6 @@ void CToxProto::InitToxCore(Tox *tox) tox_callback_file_recv(tox, OnFriendFile); tox_callback_file_recv_chunk(tox, OnDataReceiving); tox_callback_file_chunk_request(tox, OnFileSendData); - // group chats - //tox_callback_group_invite(tox, OnGroupChatInvite, this); - // a/v - //if (IsWinVerVistaPlus()) - //{ - // TOXAV_ERR_NEW avInitError; - // toxThread->Tox()AV = toxav_new(toxThread->Tox(), &avInitError); - // if (initError != TOX_ERR_NEW_OK) - // { - // toxav_callback_call(toxThread->Tox()AV, OnFriendCall, this); - // toxav_callback_call_state(toxThread->Tox()AV, OnFriendCallState, this); - // toxav_callback_bit_rate_status(toxThread->Tox()AV, OnBitrateChanged, this); - // toxav_callback_audio_receive_frame(toxThread->Tox()AV, OnFriendAudioFrame, this); - // //toxav_callback_video_receive_frame(toxThread->Tox()AV, , this); - // } - //} uint8_t data[TOX_ADDRESS_SIZE]; tox_self_get_address(tox, data); diff --git a/protocols/Tox/src/tox_icons.cpp b/protocols/Tox/src/tox_icons.cpp index a96e7984d4..928685ebf3 100644 --- a/protocols/Tox/src/tox_icons.cpp +++ b/protocols/Tox/src/tox_icons.cpp @@ -3,10 +3,6 @@ IconItemT CToxProto::Icons[] = { { LPGENW("Protocol icon"), "main", IDI_TOX }, - { LPGENW("Audio call"), "audio_call", IDI_AUDIO_CALL }, - { LPGENW("Audio ring"), "audio_ring", IDI_AUDIO_RING }, - { LPGENW("Audio start"), "audio_start", IDI_AUDIO_START }, - { LPGENW("Audio end"), "audio_end", IDI_AUDIO_END }, }; void CToxProto::InitIcons() diff --git a/protocols/Tox/src/tox_menus.cpp b/protocols/Tox/src/tox_menus.cpp index ed70ad8a7b..205fb11979 100644 --- a/protocols/Tox/src/tox_menus.cpp +++ b/protocols/Tox/src/tox_menus.cpp @@ -21,9 +21,6 @@ int CToxProto::OnPrebuildContactMenu(WPARAM hContact, LPARAM) bool isGrantNeed = getByte(hContact, "Grant", 0) > 0; Menu_ShowItem(ContactMenuItems[CMI_AUTH_GRANT], isCtrlPressed || isGrantNeed); - bool isContactOnline = GetContactStatus(hContact) > ID_STATUS_OFFLINE; - Menu_ShowItem(ContactMenuItems[CMI_AUDIO_CALL], toxThread->ToxAV() && isContactOnline); - return 0; } @@ -59,15 +56,6 @@ void CToxProto::InitMenus() mi.hIcolibItem = ::Skin_GetIconHandle(SKINICON_AUTH_GRANT); ContactMenuItems[CMI_AUTH_GRANT] = Menu_AddContactMenuItem(&mi); CreateServiceFunction(mi.pszService, GlobalService<&CToxProto::OnGrantAuth>); - - // Start audio call - SET_UID(mi, 0x116cb7fe, 0xce37, 0x429c, 0xb0, 0xa9, 0x7d, 0xe7, 0x70, 0x59, 0xc3, 0x95); - mi.pszService = MODULE"/Audio/Call"; - mi.name.w = LPGENW("Call"); - mi.position = -2000020000 + CMI_AUDIO_CALL; - mi.hIcolibItem = GetIconHandle(IDI_AUDIO_START); - ContactMenuItems[CMI_AUDIO_CALL] = Menu_AddContactMenuItem(&mi); - CreateServiceFunction(mi.pszService, GlobalService<&CToxProto::OnSendAudioCall>); } int CToxProto::OnInitStatusMenu() diff --git a/protocols/Tox/src/tox_multimedia.cpp b/protocols/Tox/src/tox_multimedia.cpp deleted file mode 100644 index c9c840274a..0000000000 --- a/protocols/Tox/src/tox_multimedia.cpp +++ /dev/null @@ -1,626 +0,0 @@ -#include "stdafx.h" - -CToxCallDlgBase::CToxCallDlgBase(CToxProto *proto, int idDialog, MCONTACT hContact) : - CToxDlgBase(proto, idDialog, false), hContact(hContact) -{} - -void CToxCallDlgBase::OnInitDialog() -{ - WindowList_Add(m_proto->hAudioDialogs, m_hwnd, hContact); -} - -void CToxCallDlgBase::OnClose() -{ - WindowList_Remove(m_proto->hAudioDialogs, m_hwnd); -} - -INT_PTR CToxCallDlgBase::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) -{ - if (msg == WM_CALL_END) - if (wParam == hContact) - Close(); - - return CToxDlgBase::DlgProc(msg, wParam, lParam); -} - -void CToxCallDlgBase::SetIcon(const char *name) -{ - char iconName[100]; - mir_snprintf(iconName, "%s_%s", MODULE, name); - Window_SetIcon_IcoLib(m_hwnd, IcoLib_GetIconHandle(iconName)); -} - -void CToxCallDlgBase::SetTitle(const wchar_t *title) -{ - SetWindowText(m_hwnd, title); -} - -////////////////////////////////////////////////////////////////////////////////////////////// - -CToxIncomingCall::CToxIncomingCall(CToxProto *proto, MCONTACT hContact) : - CToxCallDlgBase(proto, IDD_CALL_RECEIVE, hContact), - from(this, IDC_FROM), date(this, IDC_DATE), - answer(this, IDOK), reject(this, IDCANCEL) -{ - answer.OnClick = Callback(this, &CToxIncomingCall::OnAnswer); -} - -void CToxIncomingCall::OnInitDialog() -{ - CToxCallDlgBase::OnInitDialog(); - Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "IncomingCallWindow_"); - - wchar_t *nick = pcli->pfnGetContactDisplayName(hContact, 0); - from.SetText(nick); - - wchar_t title[MAX_PATH]; - mir_snwprintf(title, TranslateT("Incoming call from %s"), nick); - SetTitle(title); - SetIcon("audio_ring"); -} - -void CToxIncomingCall::OnClose() -{ - toxav_call_control(m_proto->toxThread->ToxAV(), m_proto->calls[hContact], TOXAV_CALL_CONTROL_CANCEL, nullptr); - Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "IncomingCallWindow_"); - CToxCallDlgBase::OnClose(); -} - -void CToxIncomingCall::OnAnswer(CCtrlBase*) -{ - /*ToxAvCSettings *cSettings = m_proto->GetAudioCSettings(); - if (cSettings == NULL) - return;*/ - - int friendNumber = m_proto->GetToxFriendNumber(hContact); - if (friendNumber == UINT32_MAX) { - //mir_free(cSettings); - Close(); - return; - } - - TOXAV_ERR_ANSWER error; - if (!toxav_answer(m_proto->toxThread->ToxAV(), friendNumber, 0, 0, &error)) { - m_proto->debugLogA(__FUNCTION__": failed to answer the call (%d)", error); - Close(); - } -} - -////////////////////////////////////////////////////////////////////////////////////////////// - -CToxOutgoingCall::CToxOutgoingCall(CToxProto *proto, MCONTACT hContact) : - CToxCallDlgBase(proto, IDD_CALL_SEND, hContact), - to(this, IDC_FROM), call(this, IDOK), cancel(this, IDCANCEL) -{ - m_autoClose = CLOSE_ON_CANCEL; - call.OnClick = Callback(this, &CToxOutgoingCall::OnCall); - cancel.OnClick = Callback(this, &CToxOutgoingCall::OnCancel); -} - -void CToxOutgoingCall::OnInitDialog() -{ - CToxCallDlgBase::OnInitDialog(); - Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "OutgoingCallWindow_"); - - wchar_t *nick = pcli->pfnGetContactDisplayName(hContact, 0); - to.SetText(nick); - - wchar_t title[MAX_PATH]; - mir_snwprintf(title, TranslateT("Outgoing call to %s"), nick); - SetTitle(title); - SetIcon("audio_end"); -} - -void CToxOutgoingCall::OnClose() -{ - Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "OutgoingCallWindow_"); - CToxCallDlgBase::OnClose(); -} - -void CToxOutgoingCall::OnCall(CCtrlBase*) -{ - /*ToxAvCSettings *cSettings = m_proto->GetAudioCSettings(); - if (cSettings == NULL) - { - Close(); - return; - }*/ - - int friendNumber = m_proto->GetToxFriendNumber(hContact); - if (friendNumber == UINT32_MAX) { - //mir_free(cSettings); - Close(); - return; - } - - TOXAV_ERR_CALL error; - if (!toxav_call(m_proto->toxThread->ToxAV(), friendNumber, 0, 0, &error)) { - //mir_free(cSettings); - m_proto->debugLogA(__FUNCTION__": failed to make a call (%d)", error); - return; - } - //mir_free(cSettings); - - char *message = nullptr; - wchar_t title[MAX_PATH]; - if (GetWindowText(m_hwnd, title, _countof(title))) - message = mir_utf8encodeW(title); - else - message = mir_utf8encode("Outgoing call"); - m_proto->AddEventToDb(hContact, DB_EVENT_CALL, time(nullptr), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - call.Enable(FALSE); - SetIcon("audio_call"); -} - -void CToxOutgoingCall::OnCancel(CCtrlBase*) -{ - int friendNumber = m_proto->GetToxFriendNumber(hContact); - if (friendNumber == UINT32_MAX) { - //mir_free(cSettings); - Close(); - return; - } - - if (!call.Enabled()) - toxav_call_control(m_proto->toxThread->ToxAV(), friendNumber, TOXAV_CALL_CONTROL_CANCEL, nullptr); -} - -////////////////////////////////////////////////////////////////////////////////////////////// - -CToxCallDialog::CToxCallDialog(CToxProto *proto, MCONTACT hContact) : - CToxCallDlgBase(proto, IDD_CALL, hContact), end(this, IDCANCEL) -{} - -void CToxCallDialog::OnInitDialog() -{ - CToxCallDlgBase::OnInitDialog(); - Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "CallWindow_"); - SetIcon("audio_start"); -} - -void CToxCallDialog::OnClose() -{ - int friendNumber = m_proto->GetToxFriendNumber(hContact); - if (friendNumber == UINT32_MAX) { - //mir_free(cSettings); - Close(); - return; - } - - toxav_call_control(m_proto->toxThread->ToxAV(), friendNumber, TOXAV_CALL_CONTROL_CANCEL, nullptr); - Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "CallWindow_"); - CToxCallDlgBase::OnClose(); -} - -////////////////////////////////////////////////////////////////////////////////////////////// - -/*ToxAvCSettings* CToxProto::GetAudioCSettings() -{ - ToxAvCSettings *cSettings = (ToxAvCSettings*)mir_calloc(sizeof(ToxAvCSettings)); - cSettings->audio_frame_duration = 20; - - DWORD deviceId = getDword("AudioInputDeviceID", WAVE_MAPPER); - - WAVEINCAPS wic; - MMRESULT error = waveInGetDevCaps(deviceId, &wic, sizeof(WAVEINCAPS)); - if (error != MMSYSERR_NOERROR) - { - debugLogA(__FUNCTION__": failed to get input device caps (%d)", error); - - wchar_t errorMessage[MAX_PATH]; - waveInGetErrorText(error, errorMessage, _countof(errorMessage)); - CToxProto::ShowNotification( - TranslateT("Unable to find input audio device"), - errorMessage); - - mir_free(cSettings); - return NULL; - } - - cSettings->audio_channels = wic.wChannels; - if ((wic.dwFormats & WAVE_FORMAT_48S16) || (wic.dwFormats & WAVE_FORMAT_48M16)) - { - cSettings->audio_bitrate = 16 * 1000; - cSettings->audio_sample_rate = 48000; - } - else if ((wic.dwFormats & WAVE_FORMAT_48S08) || (wic.dwFormats & WAVE_FORMAT_48M08)) - { - cSettings->audio_bitrate = 8 * 1000; - cSettings->audio_sample_rate = 48000; - } - else if ((wic.dwFormats & WAVE_FORMAT_4S16) || (wic.dwFormats & WAVE_FORMAT_4M16)) - { - cSettings->audio_bitrate = 16 * 1000; - cSettings->audio_sample_rate = 24000; - } - else if ((wic.dwFormats & WAVE_FORMAT_4S08) || (wic.dwFormats & WAVE_FORMAT_4S08)) - { - cSettings->audio_bitrate = 8 * 1000; - cSettings->audio_sample_rate = 24000; - } - else if ((wic.dwFormats & WAVE_FORMAT_2M16) || (wic.dwFormats & WAVE_FORMAT_2S16)) - { - cSettings->audio_bitrate = 16 * 1000; - cSettings->audio_sample_rate = 16000; - } - else if ((wic.dwFormats & WAVE_FORMAT_2M08) || (wic.dwFormats & WAVE_FORMAT_2S08)) - { - cSettings->audio_bitrate = 8 * 1000; - cSettings->audio_sample_rate = 16000; - } - else if ((wic.dwFormats & WAVE_FORMAT_1M16) || (wic.dwFormats & WAVE_FORMAT_1S16)) - { - cSettings->audio_bitrate = 16 * 1000; - cSettings->audio_sample_rate = 8000; - } - else if ((wic.dwFormats & WAVE_FORMAT_1M08) || (wic.dwFormats & WAVE_FORMAT_1S08)) - { - cSettings->audio_bitrate = 8 * 1000; - cSettings->audio_sample_rate = 8000; - } - else - { - debugLogA(__FUNCTION__": failed to parse input device caps"); - mir_free(cSettings); - return NULL; - } - - return cSettings; -}*/ - -/* INCOMING CALL */ - -// incoming call flow -void CToxProto::OnFriendCall(ToxAV *toxAV, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *arg) -{ - /*CToxProto *proto = (CToxProto*)arg; - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - toxav_reject(proto->toxThread->Tox()AV, callId, NULL); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - toxav_reject(proto->toxThread->Tox()AV, callId, NULL); - return; - } - - ToxAvCSettings cSettings; - if (toxav_get_peer_csettings(proto->toxThread->Tox()AV, callId, 0, &cSettings) != av_ErrorNone) - { - proto->debugLogA(__FUNCTION__": failed to get codec settings"); - toxav_reject(proto->toxThread->Tox()AV, callId, NULL); - return; - } - - if (cSettings.call_type != av_TypeAudio) - { - proto->debugLogA(__FUNCTION__": video call is unsupported"); - toxav_reject(proto->toxThread->Tox()AV, callId, Translate("Video call is unsupported")); - return; - } - - wchar_t message[MAX_PATH]; - mir_snwprintf(message, TranslateT("Incoming call from %s"), pcli->pfnGetContactDisplayName(hContact, 0)); - T2Utf szMessage(message); - - PROTORECVEVENT recv = { 0 }; - recv.timestamp = time(NULL); - recv.lParam = callId; - recv.szMessage = szMessage; - ProtoChainRecv(hContact, PSR_AUDIO, hContact, (LPARAM)&recv);*/ -} - -void CToxProto::OnFriendCallState(ToxAV *toxAV, uint32_t friend_number, uint32_t state, void *user_data) -{} - -void CToxProto::OnBitrateChanged(ToxAV *toxAV, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, void *arg) -{} - -// save event to db -INT_PTR CToxProto::OnRecvAudioCall(WPARAM hContact, LPARAM lParam) -{ - PROTORECVEVENT *pre = (PROTORECVEVENT*)lParam; - - calls[hContact] = pre->lParam; - - MEVENT hEvent = AddEventToDb(hContact, DB_EVENT_CALL, pre->timestamp, DBEF_UTF, (PBYTE)pre->szMessage, mir_strlen(pre->szMessage)); - - CLISTEVENT cle = {}; - cle.flags = CLEF_UNICODE; - cle.hContact = hContact; - cle.hDbEvent = hEvent; - cle.lParam = DB_EVENT_CALL; - cle.hIcon = IcoLib_GetIconByHandle(GetIconHandle(IDI_AUDIO_RING)); - - wchar_t szTooltip[MAX_PATH]; - mir_snwprintf(szTooltip, TranslateT("Incoming call from %s"), pcli->pfnGetContactDisplayName(hContact, 0)); - cle.szTooltip.w = szTooltip; - - char szService[MAX_PATH]; - mir_snprintf(szService, "%s/Audio/Ring", GetContactProto(hContact)); - cle.pszService = szService; - pcli->pfnAddEvent(&cle); - - return hEvent; -} - -// react on clist event click -INT_PTR CToxProto::OnAudioRing(WPARAM, LPARAM lParam) -{ - CLISTEVENT *cle = (CLISTEVENT*)lParam; - CDlgBase *incomingCallDlg = new CToxIncomingCall(this, cle->hContact); - incomingCallDlg->Show(); - - return 0; -} - -/*void CToxProto::OnAvCancel(void*, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - return; - } - - CLISTEVENT *cle = NULL; - while ((cle = (CLISTEVENT*)CallService(MS_CLIST_GETEVENT, hContact, 0))) - { - if (cle->lParam == DB_EVENT_CALL) - { - CallService(MS_CLIST_REMOVEEVENT, hContact, cle->hDbEvent); - break; - } - } - - char *message = mir_utf8encodeW(TranslateT("Call canceled")); - proto->AddEventToDb(hContact, DB_EVENT_CALL, time(NULL), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - WindowList_Broadcast(proto->hAudioDialogs, WM_CALL_END, hContact, 0); -}*/ - -/* OUTGOING CALL */ - -// outcoming audio flow -INT_PTR CToxProto::OnSendAudioCall(WPARAM hContact, LPARAM) -{ - CDlgBase *outgoingCallDlg = new CToxOutgoingCall(this, hContact); - outgoingCallDlg->Show(); - - return 0; -} - -/*void CToxProto::OnAvReject(void*, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - return; - } - - char *message = mir_utf8encodeW(TranslateT("Call canceled")); - proto->AddEventToDb(hContact, DB_EVENT_CALL, time(NULL), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - WindowList_Broadcast(proto->hAudioDialogs, WM_CALL_END, hContact, 0); -} - -void CToxProto::OnAvCallTimeout(void*, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - return; - } - - char *message = mir_utf8encodeW(TranslateT("Call canceled")); - proto->AddEventToDb(hContact, DB_EVENT_CALL, time(NULL), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - WindowList_Broadcast(proto->hAudioDialogs, WM_CALL_END, hContact, 0); -}*/ - -/* --- */ - -static void CALLBACK WaveOutCallback(HWAVEOUT hOutDevice, UINT uMsg, DWORD/* dwInstance*/, DWORD dwParam1, DWORD/* dwParam2*/) -{ - if (uMsg == WOM_DONE) { - WAVEHDR *header = (WAVEHDR*)dwParam1; - if (header->dwFlags & WHDR_PREPARED) - waveOutUnprepareHeader(hOutDevice, header, sizeof(WAVEHDR)); - mir_free(header->lpData); - mir_free(header); - } -} - -static void CALLBACK ToxShowDialogApcProc(void *arg) -{ - CDlgBase *callDlg = (CDlgBase*)arg; - callDlg->Show(); -} - -/*void CToxProto::OnAvStart(void*, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - ToxAvCSettings cSettings; - int cSettingsError = toxav_get_peer_csettings(proto->toxThread->Tox()AV, callId, 0, &cSettings); - if (cSettingsError != av_ErrorNone) - { - proto->debugLogA(__FUNCTION__": failed to get codec settings (%d)", cSettingsError); - toxav_hangup(proto->toxThread->Tox()AV, callId); - return; - } - - if (cSettings.call_type != av_TypeAudio) - { - proto->debugLogA(__FUNCTION__": video call is unsupported"); - toxav_hangup(proto->toxThread->Tox()AV, callId); - return; - } - - WAVEFORMATEX wfx = { 0 }; - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = cSettings.audio_channels; - wfx.wBitsPerSample = cSettings.audio_bitrate / 1000; - wfx.nSamplesPerSec = cSettings.audio_sample_rate; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - - DWORD deviceId = proto->getDword("AudioOutputDeviceID", WAVE_MAPPER); - MMRESULT error = waveOutOpen(&proto->hOutDevice, deviceId, &wfx, (DWORD_PTR)WaveOutCallback, (DWORD_PTR)proto, CALLBACK_FUNCTION); - if (error != MMSYSERR_NOERROR) - { - proto->debugLogA(__FUNCTION__": failed to open audio device (%d)", error); - toxav_hangup(proto->toxThread->Tox()AV, callId); - - wchar_t errorMessage[MAX_PATH]; - waveInGetErrorText(error, errorMessage, _countof(errorMessage)); - CToxProto::ShowNotification( - TranslateT("Unable to find output audio device"), - errorMessage); - - return; - } - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - toxav_hangup(proto->toxThread->Tox()AV, callId); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - toxav_hangup(proto->toxThread->Tox()AV, callId); - return; - } - - if (toxav_prepare_transmission(proto->toxThread->Tox()AV, callId, false) == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to prepare audio transmition"); - toxav_hangup(proto->toxThread->Tox()AV, callId); - return; - } - - char *message = mir_utf8encodeW(TranslateT("Call started")); - proto->AddEventToDb(hContact, DB_EVENT_CALL, time(NULL), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - - WindowList_Broadcast(proto->hAudioDialogs, WM_CALL_END, hContact, 0); - CDlgBase *callDlg = new CToxCallDialog(proto, hContact); - CallFunctionAsync(ToxShowDialogApcProc, callDlg); -} - -void CToxProto::OnAvEnd(void*, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - waveOutReset(proto->hOutDevice); - waveOutClose(proto->hOutDevice); - toxav_kill_transmission(proto->toxThread->Tox()AV, callId); - - int friendNumber = toxav_get_peer_id(proto->toxThread->Tox()AV, callId, 0); - if (friendNumber == TOX_ERROR) - { - proto->debugLogA(__FUNCTION__": failed to get friend number"); - return; - } - - MCONTACT hContact = proto->GetContact(friendNumber); - if (hContact == NULL) - { - proto->debugLogA(__FUNCTION__": failed to find contact"); - return; - } - - char *message = mir_utf8encodeW(TranslateT("Call ended")); - proto->AddEventToDb(hContact, DB_EVENT_CALL, time(NULL), DBEF_UTF, (PBYTE)message, mir_strlen(message)); - - WindowList_Broadcast(proto->hAudioDialogs, WM_CALL_END, hContact, 0); -} - -void CToxProto::OnAvPeerTimeout(void *av, int32_t callId, void *arg) -{ - CToxProto *proto = (CToxProto*)arg; - - ToxAvCallState callState = toxav_get_call_state(proto->toxThread->Tox()AV, callId); - switch (callState) - { - case av_CallStarting: - proto->OnAvCancel(av, callId, arg); - return; - - case av_CallActive: - proto->OnAvEnd(av, callId, arg); - return; - - default: - proto->debugLogA(__FUNCTION__": failed to handle callState"); - break; - } -}*/ - -////// - -void CToxProto::OnFriendAudioFrame(ToxAV *toxAV, uint32_t friend_number, const int16_t *pcm, size_t sample_count, uint8_t channels, uint32_t sampling_rate, void *user_data) -{ - /*CToxProto *proto = (CToxProto*)arg; - - WAVEHDR *header = (WAVEHDR*)mir_calloc(sizeof(WAVEHDR)); - header->dwBufferLength = size * sizeof(int16_t); - header->lpData = (LPSTR)mir_alloc(header->dwBufferLength); - memcpy(header->lpData, (PBYTE)PCM, header->dwBufferLength); - - MMRESULT error = waveOutPrepareHeader(proto->hOutDevice, header, sizeof(WAVEHDR)); - if (error != MMSYSERR_NOERROR) - { - proto->debugLogA(__FUNCTION__": failed to prepare audio buffer (%d)", error); - return; - } - - error = waveOutWrite(proto->hOutDevice, header, sizeof(WAVEHDR)); - if (error != MMSYSERR_NOERROR) - { - proto->debugLogA(__FUNCTION__": failed to play audio samples (%d)", error); - return; - }*/ -} diff --git a/protocols/Tox/src/tox_multimedia.h b/protocols/Tox/src/tox_multimedia.h deleted file mode 100644 index 922b9b406f..0000000000 --- a/protocols/Tox/src/tox_multimedia.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef _TOX_MULTIMEDIA_H_ -#define _TOX_MULTIMEDIA_H_ - -#define WM_CALL_END (WM_PROTO_LAST + 100) - -class CToxCallDlgBase : public CToxDlgBase -{ -protected: - MCONTACT hContact; - - virtual void OnInitDialog(); - virtual void OnClose(); - - INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); - - void SetIcon(const char *name); - void SetTitle(const wchar_t *title); - -public: - CToxCallDlgBase(CToxProto *proto, int idDialog, MCONTACT hContact); -}; - -/////////////////////////////////////////////// - -class CToxIncomingCall : public CToxCallDlgBase -{ -private: - CCtrlLabel from; - CCtrlLabel date; - - CCtrlButton answer; - CCtrlButton reject; - -protected: - void OnInitDialog(); - void OnClose(); - - void OnAnswer(CCtrlBase*); - -public: - CToxIncomingCall(CToxProto *proto, MCONTACT hContact); -}; - -/////////////////////////////////////////////// - -class CToxOutgoingCall : public CToxCallDlgBase -{ -private: - CCtrlLabel to; - CCtrlButton call; - CCtrlButton cancel; - -protected: - void OnInitDialog(); - void OnClose(); - - void OnCall(CCtrlBase*); - void OnCancel(CCtrlBase*); - -public: - CToxOutgoingCall(CToxProto *proto, MCONTACT hContact); -}; - -/////////////////////////////////////////////// - -struct ToxCallDialogParam -{ - CToxProto *proto; - MCONTACT hContact; -}; - -class CToxCallDialog : public CToxCallDlgBase -{ -protected: - CCtrlButton end; - - void OnInitDialog(); - void OnClose(); - -public: - CToxCallDialog(CToxProto *proto, MCONTACT hContact); -}; - -#endif //_TOX_MULTIMEDIA_H_ \ No newline at end of file diff --git a/protocols/Tox/src/tox_proto.cpp b/protocols/Tox/src/tox_proto.cpp index 5b6d345c9c..7e4036f92a 100644 --- a/protocols/Tox/src/tox_proto.cpp +++ b/protocols/Tox/src/tox_proto.cpp @@ -18,10 +18,6 @@ CToxProto::CToxProto(const char* protoName, const wchar_t* userName) SetAllContactsStatus(ID_STATUS_OFFLINE); - // services - CreateProtoService(PSR_AUDIO, &CToxProto::OnRecvAudioCall); - CreateProtoService("/Audio/Ring", &CToxProto::OnAudioRing); - // avatars CreateProtoService(PS_GETAVATARCAPS, &CToxProto::GetAvatarCaps); CreateProtoService(PS_GETAVATARINFO, &CToxProto::GetAvatarInfo); @@ -31,15 +27,11 @@ CToxProto::CToxProto(const char* protoName, const wchar_t* userName) // nick CreateProtoService(PS_SETMYNICKNAME, &CToxProto::SetMyNickname); - // hAudioDialogs = WindowList_Create(); - hTerminateEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); } CToxProto::~CToxProto() { - WindowList_Destroy(hAudioDialogs); - UninitNetlib(); } diff --git a/protocols/Tox/src/tox_proto.h b/protocols/Tox/src/tox_proto.h index 810479ab30..4eb2bee085 100644 --- a/protocols/Tox/src/tox_proto.h +++ b/protocols/Tox/src/tox_proto.h @@ -6,10 +6,6 @@ struct CToxProto : public PROTO friend CToxPasswordEditor; friend CToxOptionsMain; friend CToxOptionsNodeList; - friend CToxCallDlgBase; - friend CToxIncomingCall; - friend CToxOutgoingCall; - friend CToxCallDialog; public: ////////////////////////////////////////////////////////////////////////////////////// @@ -266,30 +262,6 @@ private: void OnGotFriendAvatarInfo(AvatarTransferParam *transfer); void OnGotFriendAvatarData(AvatarTransferParam *transfer); - // multimedia - MWindowList hAudioDialogs; - HWAVEOUT hOutDevice; - std::map calls; - - //ToxAvCSettings* GetAudioCSettings(); - - - INT_PTR __cdecl OnRecvAudioCall(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl OnAudioRing(WPARAM wParam, LPARAM lParam); - - INT_PTR __cdecl OnSendAudioCall(WPARAM wParam, LPARAM); - - static void OnFriendCall(ToxAV *toxAV, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *arg); - static void OnFriendCallState(ToxAV *toxAV, uint32_t friend_number, uint32_t state, void *user_data); - static void OnBitrateChanged(ToxAV *toxAV, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, void *arg); - static void OnFriendAudioFrame(ToxAV *toxAV, uint32_t friend_number, const int16_t *pcm, size_t sample_count, uint8_t channels, uint32_t sampling_rate, void *user_data); - - //static void OnAvEnd(void*, int32_t callId, void *arg); - //static void OnAvReject(void*, int32_t callId, void *arg); - //static void OnAvCancel(void*, int32_t callId, void *arg); - //static void OnAvCallTimeout(void*, int32_t callId, void *arg); - //static void OnAvPeerTimeout(void*, int32_t callId, void *arg); - // utils static int MapStatus(int status); static TOX_USER_STATUS MirandaToToxStatus(int status); @@ -298,7 +270,6 @@ private: static wchar_t* ToxErrorToString(TOX_ERR_NEW error); static wchar_t* ToxErrorToString(TOX_ERR_FRIEND_SEND_MESSAGE error); - static void ShowNotification(const wchar_t *caption, const wchar_t *message, int flags = 0, MCONTACT hContact = NULL); static bool IsFileExists(const wchar_t* path); diff --git a/protocols/Tox/src/tox_thread.h b/protocols/Tox/src/tox_thread.h index ae0f4225f8..37372177dc 100644 --- a/protocols/Tox/src/tox_thread.h +++ b/protocols/Tox/src/tox_thread.h @@ -5,22 +5,16 @@ class CToxThread { private: Tox *tox; - ToxAV *toxAV; public: CToxThread(Tox_Options *options, TOX_ERR_NEW *error = NULL) - : tox(NULL), toxAV(NULL) + : tox(NULL) { tox = tox_new(options, error); } ~CToxThread() { - if (toxAV) - { - toxav_kill(toxAV); - toxAV = NULL; - } if (tox) { @@ -33,11 +27,6 @@ public: { return tox; } - - ToxAV* ToxAV() - { - return toxAV; - } }; #endif //_TOX_THREAD_H_ \ No newline at end of file diff --git a/protocols/Tox/src/version.h b/protocols/Tox/src/version.h index a2ecd46c33..8db7b7f76a 100644 --- a/protocols/Tox/src/version.h +++ b/protocols/Tox/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 -#define __RELEASE_NUM 1 -#define __BUILD_NUM 26 +#define __RELEASE_NUM 2 +#define __BUILD_NUM 0 #include diff --git a/protocols/Tox/tools/CHANGES b/protocols/Tox/tools/CHANGES deleted file mode 100644 index c2f308e980..0000000000 --- a/protocols/Tox/tools/CHANGES +++ /dev/null @@ -1,266 +0,0 @@ - -This is the CHANGES file for cv2pdb, a -converter of DMD CodeView/DWARF debug information to PDB files - -Copyright (c) 2009-2012 by Rainer Schuetze, All Rights Reserved - -Version history ---------------- - -2009-05-08 Version 0.1 - - * initial release - -2009-05-16 Version 0.2 - - * replace .debug section in executable rather than rename it. (only works - if it is the last section). - * support for field type LF_VFUNCTAB and symbol type S_CONSTANT used by DMC. - * added stringview to autoexp.dat for full length text display. - -2009-06-04 Version 0.3 - - * static members' debug info was not correctly converted, causing debugger confusion - * now works on executables compiled by DMC - - added command line switch -C to disable some D feature and - to remove function name from local variables - - added support for type LF_BITFIELD. - * added fields __viewhelper to classes string and object - * new addin dviewhelper.dll to display correctly terminated strings - and derived object type - -2009-06-05 Version 0.4 - - * fixed crash when long is used as index or element type of dynamic or - associative arrays - -2009-06-06 Version 0.5 - - * fixed error in __viewhelper field of string type, that could screw up type info - * added support for wstring and dstring - * fixed problems with debug info inside library by combining debug info of different modules - into a single pseudo-module - * now also replaces '.' by '@' in enumerator types for more consistent debug info - -2009-06-07 Version 0.6 - - * removed LF_DERIVED info from debug info, as it is inconsistent in DMD generated info - with more than 4096 type entries - -2009-06-08 Version 0.7 - - * corrected number of field entries in classes or struct, because DMD miscounts private members - -2009-06-11 Version 0.8 - - * tweaked visualizer macros to detect uninitialized associative arrays and to limit expansion - to arrays with less than 1024 entries - * renamed data pointer member of dynamic arrays to "ptr" to be consistent with the array property - in D. - -2009-06-19 Version 0.9 - - * fixed line number info at the end of a segment or when switching to another file - because of inline expansion - * fixed line numbers > 32767 and sections with 0 line number entries - -2009-08-12 Version 0.10 - - * better support for DMC: - - entries LF_FRIENDFCN removed - - entries LF_FRIENDCLS, LF_VBCLASS and LF_IVBCLASS converted - thanks to Andrew. - * derived-classes info in class entry now cleared to be consistent with removal of LF_DERIVED - -2009-12-29 Version 0.11 - - * basic types now show with their D names, not as C types - * "enum" prefix removed from type names of enumerator types - * added type information for complex data types - * dmd-patch needed for long/ulong support (http://d.puremagic.com/issues/show_bug.cgi?id=3373) - * experimental hack to add lexical scope to local variables (dmd patch in - http://d.puremagic.com/issues/show_bug.cgi?id=3657 needed) - -2010-04-13 Version 0.12 - - * added patch to convert binaries produced by Metroworks CodeWarrior - * names of local function are now demangled - * dmd 2.041 fixes long/ulong support (patch http://d.puremagic.com/issues/show_bug.cgi?id=3373 - no longer needed) - * added managed C++ project to integrate cv2pdb with CLR (thanks to Alexander Bothe) - * dmd 2.043 uses different implementation of associative arrays, use command line - option -D 2.043 or above to produce the respective debug info - -2010-06-03 Version 0.13 - - * adapted to mspdb100.dll which comes with VS2010 - * tweaked autoexp.dat modifications to be more stable with uninitialized data - * autoexp.snippet now split into two files: autoexp.expand and autoexp.visualizer - -2010-06-23 Version 0.14 - - * 64-integer types are now displayed as "dlong" and "ulong" instead of "__int64" and - "unsigned __int64" - * improved support for long and ulong for DMD versions before 1.057 and 2.041 - * DMC also emits D-types for "long long" and "unsigned long long", these are - translated back to the correct types if command option -C is used - * now adding properties "has nested type" and "is nested type" to class/struct/union/enum types - * better support for enumerators: now added as user defined types (DMD patch needed) - -2010-08-08 Version 0.15 - - * thanks to patches by Z3N, the resulting pdb is now usable by more debuggers - * now uses shared file access to executable - * incomplete structs/classes are now added as user defined types to avoid confusing - debugger for following symbols - * fixed name demangling of very long names - * added name demangling support for @safe/@trusted/@property/pure/nothrow/ref - * base classes are added to D/cpp-interfaces to allow viewing the virtual function - table pointer - * structs, classes and interfaces now have an internal qualifier attached that allows - the preview in autoexp.dat to show better info for structs and interfaces - -2010-08-10 Version 0.16 - - * fixed crash when working with -C (introduced in last version) - -2010-09-04 Version 0.17 - - * fixed crash that could occur for user-defined types longer than 90 characters - -2010-10-24 Version 0.18 - - * fixed error with nested types longer than 255 characters - * more fixes for names longer than 300 characters - -2010-12-10 Version 0.19 - - * now converting only class pointers to references, not pointers to structs or void - * changed default D-version to 2.043 to create correct associative array type - information for recent compilers by default - -2010-12-30 Version 0.20 - - * fixed another issue with user defined type names longer than 300 characters - * now corrects the debug info when dmc/optlink emits multiple struct definitions, - but only one UDT record. - -2010-05-08 Version 0.21 - - * fixed decoding of compressed symbols - * added command line switch -n to disable symbol demangling - * fixed crash with more than 32767 types - -unreleased Version 0.22 - - * added command line switch -s to specify the replacement character for '.' in symbols - * fixed another crash where compressed symbols expand to more than 4096 characters - -2012-02-12 Version 0.23 - - * disabled named enumerator for D basic types to avoid debugger troubles displaying arrays - * added command line switch -e to enable using named enumerator for D basic types - * added DWARF support - * added x64 support - * tweaked visualizer for associative array element to just show key and value - -2012-05-01 Version 0.24 - - * supports unicode characters in file names - * improve interpretation of DWARF location expression - -2012-06-18 Version 0.25 - - * new option -p allows to specify the embedded PDB reference in the binary - * added support for VS2012 - -2012-11-09 Version 0.26 - - * now iterating over multiple entries in the debug directory to find CV info - -2013-05-11 Version 0.27 - - * fixed crash when converting DWARF locations using 8 bytes or more - -2013-11-16 Version 0.28 - - * added searching mspdb120.dll for VS 2013 - * changed search order for mspdb*.dll: trying to load through PATH first - newest VS versions preferred, then trying through installation paths for VS 2013-2005 - * dviewhelper.dll now avoids being reloaded for every expression - -2014-02-19 Version 0.29 - - * fix DWARF conversion for newer gcc versions (4.8.0 or even earlier) - -2014-02-25 Version 0.30 - - * fixed crash when converting DWARF for executables without .reloc segment - -2014-03-01 Version 0.31 - - * added support for local variables accessed through esp - -2014-09-24 Version 0.32 - - * DWARF: fixed relocations in .debug_line section - * tweaked visualizer macros to display void[], limit array preview to 64 entries - -2014-12-19 Version 0.33 - - * DWARF: revamped location expression evaluator by Vadim Chugunov - -2015-02-17 Version 0.34 - - * DWARF: fixed issues with DW_FORM_strp, DW_AT_upper_bound and DW_AT_lower_bound - * DWARF: translate __int128 to CV code 0x14, just a wild guesss - - * DWARF: add support for DW_ATE_UTF, remove bad assert - -2015-05-08 Version 0.35 - - * new tool dumplines to display the debug line number info - -2015-06-03 Version 0.36 - - * last version introduced a regression that could cause DWARF conversion to crash - * DWARF sections now stripped from image (if last sections) - * add support for VS 2015 - -2015-06-17 Version 0.37 - - * DWARF: improved support for gcc 4.9.0 and clang 3.6 - * DWARF: support debug_frame (CFA) and debug_loc (for frame base) for better support for locals - * write correct machine type for x64 to PDB - -2016-08-09 Version 0.38 - - * allow anonymous typedefs - * cv2pdb now builds as x64 application - * truncate symbols that are to long - * better support for symbols that contain non-ascii characters: do not uncompress names in field lists - * copy symbol unmodified if uncompression fails - -2017-01-20 Version 0.39 - - * do not assume sorted line numbers per segment - -2017-05-13 Version 0.40 - - * set source language 'D' in compilation unit - * for D version >= 2.068, write AA debug info compatible with dmd COFF output - * prefer struct over class for internal structs - * handle class/struct property "uniquename" - -2017-05-13 Version 0.41 - - * when using mspdb120.dll (VS2013) or later, do not emit view helpers - * remove method declarations from struct or class records (they confuse mspdb*.dll if having forward references?) - -2017-09-02 Version 0.42 - - * search VS2017 registry entries to find mspdb140.dll - * when using mspdb140.dll (VS2015) or later, use symbols to emit line numbers - * translate S_UDT_V1 to V3 version - * translate S_BLOCK_V1 to V3 version - * remove "this" from delegate parameter list if inconsistent with procedure type diff --git a/protocols/Tox/tools/FEATURES b/protocols/Tox/tools/FEATURES deleted file mode 100644 index d6767e3bc8..0000000000 --- a/protocols/Tox/tools/FEATURES +++ /dev/null @@ -1,33 +0,0 @@ -Main Features - -* conversion of DMD/DMC CodeView information to PDB file -* converted line number info allows setting breakpoints -* display of variables, fields and objects in watch, local and auto - window and in data tooltips -* convenient display of dynamic and associative arrays in watch windows -* demangled function names for convenient display of callstack - -More features - -This list is a bit more technical and shows what is actually done to -achieve the desired functionality: - -* replaces '.' in class names with '@' to avoid confusing debugger -* converts class pointers to reference for "clss.field" syntax -* converts the type of member function, so that "this" is an object - pointer, allowing the debugger to display fields without "this." -* generates generic debug info for dynamic arrays, associative arrays - and delegates -* creates readable type names for display of D specific types -* autoexp.dat formats output for dynamic and associative arrays in - watch windows -* autoexp.dat filters display of null references -* adds object class debug info -* "char[]", "wchar[]" and "dchar[]" (D1) or "const char[]", - "const wchar[]" and "const dchar[]" (D2) translated to "string", - "wstring" and "dstring", respectively -* converts type delegate to __int64 -* addin dviewhelper.dll allows correct display of D style strings - and derived object type -* maps D basic types to enumerators to overload C style names -* add struct definitions for complex data types diff --git a/protocols/Tox/tools/INSTALL b/protocols/Tox/tools/INSTALL deleted file mode 100644 index 93863dd740..0000000000 --- a/protocols/Tox/tools/INSTALL +++ /dev/null @@ -1,71 +0,0 @@ - -This is the INSTALL file for cv2pdb, a -converter of DMD CodeView/DWARF debug information to PDB files - -Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved - -Prerequisites -------------- - -For this program to be useful, you should have you should have the -Digital Mars D Compiler (http://www.digitalmars.com/d/2.0/dmd-windows.html) -and either Microsoft Visual Studio 2005, 2008 or 2010 or one of the Express -versions installed. cv2pdb uses one of the Microsoft DLLs to actually -write the PDB file. - -If you are using some other program, you'll still need some -files from one of the distributions. These are mspdb80.dll, mspdbsrv.exe, -msobj80.dll, mspdbcore.dll and msvcr90.dll from the VS2008 installation or -mspdb100.dll, mspdbsrv.exe, msobj100.dll, mspdbcore.dll and msvcr100.dll -from VS2010. They should be accessible through the PATH environment variable. -(The VS Shell is missing the msobj80.dll/msobj100.dll only). - -Installation ------------- -You might want to consider installing Visual D (www.dsource.org/projects/visuald) -instead of cv2pdb. Visual D provides both project and language integration -into Visual Studio and comes with an installer that includes cv2pdb. - -There is no full featured installer available for cv2pdb, you'll have -to do some simple manual steps to use cv2pdb. - -1. The binary package of cv2pdb contains an executable cv2pdb.exe, which -should be copied somewhere accessible through your PATH environment -variable. - -2. cv2pdb.exe must be able to locate the DLL mspdb80.dll/mspdb100.dll from the Visual -Studio installation. It tries to read the installation path of the latter from the registry, but -if this fails, mspdb80.dll/mspdb100.dll should also be accessible through your PATH -environment variable. - -3. For best debugging experience, you should configure Visual Studio -to use C/C++ syntax highlighting for D files. This is done by -navigating to the file extensions option page (found in Tools -> Options --> Text editor -> File Extensions) and adding extensions "d" and "di" -with editor "Microsoft Visual C++". This will also enable display of -variables in the "Auto" watch window. - -4. You should also add the contents of the files autoexp.expand and -autoexp.visualizer to the respective [AutoExpand] and [Visualizer] -sections of the file autoexp.dat found in -\Common7\Packages\Debugger. -Please note that in a standard installation of Visual Studio, the -section [AutoExpand] is at the beginning of that file, followed by -the section [Visualizer], which extends to the bottom of the file but a few lines -for the section [hresult]. -These lines will enable a convenient display of strings, dynamic arrays, -associative arrays, object types and null references. - -5. The file dviewhelper.dll must be copied into a directory where -the debugger can find it. This can be any directory accessible through your -PATH variable or \Common7\IDE. Alternatively, -the full path can be specified in the corresponding entries in the -[AutoExpand] section of autoexp.dat. - - -Building from source --------------------- -The source package comes with a Visual Studio 2008 project and solution -that work with both the Standard and the Express version. These won't -work in VS2005, but creating VS2005 projects should be easy. - diff --git a/protocols/Tox/tools/LICENSE b/protocols/Tox/tools/LICENSE deleted file mode 100644 index 32efefcf63..0000000000 --- a/protocols/Tox/tools/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - The Artistic License 2.0 - - Copyright (c) 2000-2006, The Perl Foundation. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - -This license establishes the terms under which a given free software -Package may be copied, modified, distributed, and/or redistributed. -The intent is that the Copyright Holder maintains some artistic -control over the development of that Package while still keeping the -Package available as open source and free software. - -You are always permitted to make arrangements wholly outside of this -license directly with the Copyright Holder of a given Package. If the -terms of this license do not permit the full use that you propose to -make of the Package, you should contact the Copyright Holder and seek -a different licensing arrangement. - -Definitions - - "Copyright Holder" means the individual(s) or organization(s) - named in the copyright notice for the entire Package. - - "Contributor" means any party that has contributed code or other - material to the Package, in accordance with the Copyright Holder's - procedures. - - "You" and "your" means any person who would like to copy, - distribute, or modify the Package. - - "Package" means the collection of files distributed by the - Copyright Holder, and derivatives of that collection and/or of - those files. A given Package may consist of either the Standard - Version, or a Modified Version. - - "Distribute" means providing a copy of the Package or making it - accessible to anyone else, or in the case of a company or - organization, to others outside of your company or organization. - - "Distributor Fee" means any fee that you charge for Distributing - this Package or providing support for this Package to another - party. It does not mean licensing fees. - - "Standard Version" refers to the Package if it has not been - modified, or has been modified only in ways explicitly requested - by the Copyright Holder. - - "Modified Version" means the Package, if it has been changed, and - such changes were not explicitly requested by the Copyright - Holder. - - "Original License" means this Artistic License as Distributed with - the Standard Version of the Package, in its current version or as - it may be modified by The Perl Foundation in the future. - - "Source" form means the source code, documentation source, and - configuration files for the Package. - - "Compiled" form means the compiled bytecode, object code, binary, - or any other form resulting from mechanical transformation or - translation of the Source form. - - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use -Modified Versions for any purpose without restriction, provided that -you do not Distribute the Modified Version. - - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the -Standard Version of this Package in any medium without restriction, -either gratis or for a Distributor Fee, provided that you duplicate -all of the original copyright notices and associated disclaimers. At -your discretion, such verbatim copies may or may not include a -Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other -modifications made available from the Copyright Holder. The resulting -Package will still be considered the Standard Version, and as such -will be subject to the Original License. - - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis -or for a Distributor Fee, and with or without a Compiled form of the -Modified Version) provided that you clearly document how it differs -from the Standard Version, including, but not limited to, documenting -any non-standard features, executables, or modules, and provided that -you do at least ONE of the following: - - (a) make the Modified Version available to the Copyright Holder - of the Standard Version, under the Original License, so that the - Copyright Holder may include your modifications in the Standard - Version. - - (b) ensure that installation of your Modified Version does not - prevent the user installing or running the Standard Version. In - addition, the Modified Version must bear a name that is different - from the name of the Standard Version. - - (c) allow anyone who receives a copy of the Modified Version to - make the Source form of the Modified Version available to others - under - - (i) the Original License or - - (ii) a license that permits the licensee to freely copy, - modify and redistribute the Modified Version using the same - licensing terms that apply to the copy that the licensee - received, and requires that the Source form of the Modified - Version, and of any works derived from it, be made freely - available in that license fees are prohibited but Distributor - Fees are allowed. - - -Distribution of Compiled Forms of the Standard Version -or Modified Versions without the Source - -(5) You may Distribute Compiled forms of the Standard Version without -the Source, provided that you include complete instructions on how to -get the Source of the Standard Version. Such instructions must be -valid at the time of your distribution. If these instructions, at any -time while you are carrying out such distribution, become invalid, you -must provide new instructions on demand or cease further distribution. -If you provide valid instructions or cease distribution within thirty -days after you become aware that the instructions are invalid, then -you do not forfeit any of your rights under this license. - -(6) You may Distribute a Modified Version in Compiled form without -the Source, provided that you comply with Section 4 with respect to -the Source of the Modified Version. - - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or -Modified Version) with other packages and Distribute the resulting -aggregation provided that you do not charge a licensing fee for the -Package. Distributor Fees are permitted, and licensing fees for other -components in the aggregation are permitted. The terms of this license -apply to the use and Distribution of the Standard or Modified Versions -as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with -other works, to embed the Package in a larger work of your own, or to -build stand-alone binary or bytecode versions of applications that -include the Package, and Distribute the result without restriction, -provided the result does not expose a direct interface to the Package. - - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that -merely extend or make use of the Package, do not, by themselves, cause -the Package to be a Modified Version. In addition, such works are not -considered parts of the Package itself, and are not subject to the -terms of this license. - - -General Provisions - -(10) Any use, modification, and distribution of the Standard or -Modified Versions is governed by this Artistic License. By using, -modifying or distributing the Package, you accept this license. Do not -use, modify, or distribute the Package, if you do not accept this -license. - -(11) If your Modified Version has been derived from a Modified -Version made by someone other than you, you are nevertheless required -to ensure that your Modified Version complies with the requirements of -this license. - -(12) This license does not grant you the right to use any trademark, -service mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, -free-of-charge patent license to make, have made, use, offer to sell, -sell, import and otherwise transfer the Package with respect to any -patent claims licensable by the Copyright Holder that are necessarily -infringed by the Package. If you institute patent litigation -(including a cross-claim or counterclaim) against any party alleging -that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the -date that such litigation is filed. - -(14) Disclaimer of Warranty: -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL -LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/protocols/Tox/tools/README b/protocols/Tox/tools/README deleted file mode 100644 index 25fe632c74..0000000000 --- a/protocols/Tox/tools/README +++ /dev/null @@ -1,139 +0,0 @@ - -This is the README file for cv2pdb, a -converter of DMD CodeView/DWARF debug information to PDB files - -Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved - -The goal of this project is to make debugging of D applications that -were created with the Digital Mars DMD compiler, as seamless as possible -in current versions of Visual Studio (i.e Visual Studio 2008 and -VCExpress). -As a side effect, other applications might also benefit from the -converted debug information, like WinDbg or DMC. - -Features --------- -* conversion of DMD CodeView information to PDB file -* conversion of DWARF information to PDB file -* converted line number info allows setting breakpoints -* display of variables, fields and objects in watch, local and auto window and in data tooltips -* generates generic debug info for dynamic arrays, associative arrays and delegates -* autoexp.dat allows convenient display of dynamic and associative arrays in watch windows -* demangles function names for convenient display of callstack -* also works debugging executables built with the Digital Mars C/C++ compiler DMC - -License information -------------------- - -This code is distributed under the term of the Artistic License 2.0. -For more details, see the full text of the license in the file LICENSE. - -The file demangle.cpp is an adaption of denangle.d to C++ distributed with -the DMD compiler. It is placed into the Public Domain. - -The file mscvpdb.h is taken from the WINE-project (http://www.winehq.org) -and is distributed under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. -See the file header for more details and -http://www.gnu.org/licenses/lgpl.html for the full license. - -The file dwarf.h is taken from the libdwarf project -(http://reality.sgiweb.org/davea/dwarf.html) -and is distributed under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. -See the file header for more details and -http://www.gnu.org/licenses/lgpl.html for the full license. - -Installation ------------- -Sorry, there is no full featured installer available yet, you'll have -to do some simple manual steps to use cv2pdb. - -See the file INSTALL for further details. - -Usage ------ - -Quick start: - -Simply run - - cv2pdb debuggee.exe - -on your executable to debug and start the debugger, e.g. - - devenv debuggee.exe -or - vcexpress debuggee.exe - -Description: - -cv2pdb.exe is a command line tool which outputs its usage information -if run without arguments: - - usage: cv2pdb [-Dversion|-C] [new-exe-file] [pdb-file] - -With the -D option, you can specify the version of the DMD compiler -you are using. Unfortunately, this information is not embedded into -the debug information. The default is -D2. So far, this information -is only needed to determine whether "char[]" or "const char[]" is -translated to "string". - -Starting with DMD 2.043, assoiciative arrays have a slightly different -implementation, so debug information needs to be adjusted aswell. -Use -D 2.043 or higher to produce the matching debug info. - -Option -C tells the program, that you want to debug a program compiled -with DMC, the Digital Mars C/C++ compiler. It will disable some of the -D specific functions and will enable adjustment of stack variable names. - -The first file name on the command line is expected to be the executable -or dynamic library compiled by the DMD compiler and containing the -CodeView debug information (-g option used when running dmd). - -If no further file name is given, a PDB file will be created with the -same base name as the executable, but with extension "pdb", and the -executable will be modified to redirect debuggers to this pdb-file instead -of the original debug information. - -Example: - cv2pdb debuggee.exe - -In an environment using make-like tools, it is often useful to create -a new file instead of modifying existing files. That way the file -modification time can be used to continue the build process at the -correct step. -If another file name is specified, the new executable is written -to this file and leaves the input executable unmodified.. The naming -of the pdb-file will use the base name of the output file. - -Example: - cv2pdb debuggee.exe debuggee_pdb.exe - -Last but not least, the resulting pdb-file can be renamed by specifying -a third file name. - -Example: - cv2pdb debuggee.exe debuggee_pdb.exe debug.pdb - - - -Changes -------- - -For documentation on the changes between this version and -previous versions, please see the file CHANGES. - -Feedback --------- -The project home for cv2pdb is here: - - http://www.dsource.org/projects/cv2pdb - https://github.com/rainers/cv2pdb - -There's also a forum, where you can leave your comments and suggestions. - -Have fun, -Rainer Schuetze diff --git a/protocols/Tox/tools/TODO b/protocols/Tox/tools/TODO deleted file mode 100644 index 7cc2fff3c0..0000000000 --- a/protocols/Tox/tools/TODO +++ /dev/null @@ -1,28 +0,0 @@ - -This is the TODO file for cv2pdb, a -converter of DMD CodeView/DWARF debug information to PDB files - -Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved - -There are some quirks that you might run into when using -Visual Studio to debug D programs. These will hopefully be removed -in the future, but not all have a known solution. - -* has to use '@' instead of '.' in class names to avoid confusing debugger, - but it looks ugly -* "this.var" is not a valid debugger expression, you have to use - "var" or "this->var" -* global/static vars have to be watched with full module and class name - specified (e.g. module@globvar) -* type of associative arrays is displayed as aa<*> to allow overload - in autoexp.dat -* DMD does not emit different debug information for const and invariant, - type info is the same -* DMD does not emit different debug information for float and ifloat, - type info is the same -* type display of delegate does not have arguments -* assoc_array.length cannot be displayed (it is assoc_array.a->nodes) -* enum values not displayed -* watch incorrect if same variable name used in different parts of a function -* line number in templates sometimes off by 1 or 2 -* call to other function jumps to called function while pushing default arguments diff --git a/protocols/Tox/tools/VERSION b/protocols/Tox/tools/VERSION deleted file mode 100644 index 2b70a49ad0..0000000000 --- a/protocols/Tox/tools/VERSION +++ /dev/null @@ -1 +0,0 @@ -VERSION = 0.42 diff --git a/protocols/Tox/tools/cv2pdb.exe b/protocols/Tox/tools/cv2pdb.exe deleted file mode 100644 index f65cd291bc..0000000000 Binary files a/protocols/Tox/tools/cv2pdb.exe and /dev/null differ -- cgit v1.2.3