Commit Graph

258 Commits

Author SHA1 Message Date
iphydf
475f01bc1a
Fix style in toxav.c.
* Use Camel_Snake_Case for type names.
* Use at least 4 characters for constant names. I.e. `END` is a type
  name, but `RETURN` is a constant name. This is because `DHT` is a type
  name (yay consistency).
* Using `min_*` functions instead of MIN, we can avoid a cast.
* Use `for`-loops for for-each-frame semantics instead of `while`.
* Don't use assignments as expressions.
* `++i` instead of `i++`.
* Function pointers are dereferenced automatically, so no need to
  manually do so.
* Avoid void pointers that lie about not being spaghetti code. Toxcore
  and toxav are both spaghetti and shouldn't pretend anything else.
* Don't use empty statements (e.g. no `;;` anywhere in the code).
2018-08-14 21:59:27 +00:00
iphydf
2d84681529
Fix ToxAv's use of struct Tox.
* Fix `toxav_get_tox` to return tox, not messenger.
* Fix the casts from Tox* to Messenger* in toxav_old.c.
* Pass Tox instead of Messenger to public group AV callbacks.
2018-08-13 22:11:48 +00:00
iphydf
4ed6e59992
Fix enumerator names to comply with toxcore naming standards. 2018-08-12 20:07:18 +00:00
iphydf
1de8b020cb
Remove all uses of the PAIR macro in toxav. 2018-08-12 11:38:23 +00:00
iphydf
5d15b5930d
Remove last use of the MIN macro.
We use functions for this instead.
2018-08-12 11:38:23 +00:00
iphydf
064ffe5875
Make a separate struct Tox containing the Messenger.
This allows Tox to contain additional data on top of Messenger, making
Messenger not necessarily the most top-level object. E.g. groups are
built on Messenger and currently awkwardly void-pointered into it to
pretend there is no cyclic dependency.
2018-08-04 09:29:15 +00:00
iphydf
adb12d5340
Add github usernames to TODOs. 2018-07-21 14:56:21 +00:00
iphydf
beeb9b4335
Style fixes in TCP code; remove MIN and PAIR from util.h.
* Moved PAIR to toxav, where it's used (but really this should die).
* Replace most MIN calls with typed `min_*` calls. Didn't replace the
  ones where the desired semantics are unclear. Moved the MIN macro to
  the one place where it's still used.
* Avoid assignments in `while` loops. Instead, factored out the loop body
  into a separate `bool`-returning function.
* Use named types for callbacks (`_cb` types).
* Avoid assignments in `if` conditions.
* Removed `MAKE_REALLOC` and expanded its two calls. We can't have
  templates in C, and this fake templating is ugly and hard to analyse
  and debug (it expands on a single line).
* Moved epoll system include to the .c file, out of the .h file.
* Avoid assignments in expressions (`a = b = c;`).
* Avoid multiple declarators per struct member declaration.
* Fix naming inconsistencies.
* Replace `net_to_host` macro with function.
2018-07-12 20:21:42 +00:00
iphydf
abc17b0f89
Factor out time keeping code into its own module: mono_time.c.
It turns out, `unix_time` is also monotonic, and is used as such, so I've
renamed the new functions to `mono_time_*`.

2018-07-08:
```
00:01 <@irungentoo> the idea used to be that the unix_time() function
  could go backward in time but I think I might have started using it like
  if it could not after I changed it so that it would never go back in time
```
2018-07-09 21:04:50 +00:00
iphydf
d3b286cb43
Fix a bunch of compiler warnings and remove suppressions. 2018-02-24 22:20:22 +00:00
zoff99
721358208b
Improve video key frame sending.
This change does not include the addition of VP9. We do that in a
separate pull request.

Changes:

* fix the video bug (video frames larger than 65KBytes) by sending full
  frame length in alternate header field
* improve video frame reconstruction logic with slots
* configure video encoder and decoder to be multihtreaded
* set error resilience flags on video codec
* change encoder and decoder softdeadline
2018-02-11 23:31:46 +00:00
iphydf
92ffad1a72
Use nullptr as NULL pointer constant instead of NULL or 0.
This changes only code, no string literals or comments.
2018-01-30 23:35:50 +00:00
xhe
651ef3adb6
Make audio/video bit rates "properties"
follow TokTok#731. This commit
completely removed all things in namespace bit_rate, and deprecated
functions are to be added back in another commit. set_xxx() is treadted
as a property of namespace audio&video, same as bit_rate change event.

toxav_basic_test is fixed, either.
2018-01-28 13:21:57 +00:00
xhe
0becafd272
Split bit_rate_set(), one for audio, one for video.
Fixes #572.

As discussed in the issue, there's a risk that toxcore may not hold the
maximum bitrates libvpx supports, if toxcore insists on using integer
type. I initially proposed to have another flag in set(), so that we can
use unsigned type instead. iphydf came up with a better solution, that is
splitting the original functions, one for audio, one for video. Now, we
could safely replace int32_t with uint32_t.

Also: clean video_bit_rate_invalid()

Though this is not a part of issue #572, as it's used in the
toxav_bit_rate_set(), i cleaned the code. As mannol said, there should be
a check. Uint32_t is large enough to hold the maximum bitrates libvpx
supports, but user may pass a value larger than uint while smaller than
uint32_t. Thanks to the reminding from nurupo, it's no longer a stub
function.

Bitrate error enums are shared for both audio and video
https://github.com/TokTok/c-toxcore/pull/578#issuecomment-360095609, just
as iphydf said.
2018-01-25 14:29:01 +00:00
mannol
e996a030f0
Split video payload into multiple packets when >65k
This is the implementation of the [proposed fix](https://github.com/TokTok/c-toxcore/issues/620#issuecomment-346902071) for [this issue](https://github.com/TokTok/c-toxcore/issues/620).
2017-12-17 16:31:23 +01:00
Diadlo
b19a9e5464
Add part of platform-independent network API implementation
socket      -> net_socket
htons       -> net_htons
htonl       -> net_htonl
connect     -> net_connect
sendto      -> net_sendto_ip4
getaddrinfo -> net_getipport
sa_family_t -> Family
2017-02-26 23:16:16 +03:00
iphydf
6ae33c16cf
Add VLA compatibility macro for C89-ish compilers. 2017-01-28 20:49:12 +00:00
Diadlo
f00006cf1d
Add platform-independent Socket and IP implementation 2017-01-26 23:11:15 +03:00
iphydf
8f96ca6d86
Update license headers and remove redundant file name comment.
"All rights reserved" was incorrect. The project was licensed under GPL3,
which means a lot of rights are licensed to everybody in the world, i.e.
not reserved to the "Tox Project".
2017-01-19 00:01:44 +00:00
mannol
7122d2e862 Use after free reported in #278 occurs because toxav_kill()
calls msi_kill() (toxav.c:180) which frees msi_call instances (msi.c:161)
which are then used when call_remove() (toxav.c:1136) is called.
This fix prevents call_remove() from calling invalid pointer.

Fixes #278
2016-12-21 00:16:22 +01:00
Maxim Biro
44ac196936 Fix NULL pointer dereference in log calls 2016-11-20 20:32:48 -05:00
Gregory Mullen (grayhatter)
51139a080c
v0.0.0 => v0.0.1 2016-09-28 12:12:39 -07:00
iphydf
15cb426166
Make toxcore code C++ compatible.
It is still C code, so still compatible with C compilers as well. This
change lets us see more clearly where implicit conversions occur by
making them explicit.
2016-09-24 21:53:50 +01:00
iphydf
51d18236c8
Revert "Make ToxAV stateless"
This reverts commit 21f8db12c4.

It is currently broken. Incoming call callbacks are not invoked, and
instead the client goes offline immediately.
2016-09-19 21:53:40 +01:00
Gregory Mullen (grayhatter)
21f8db12c4
Make ToxAV stateless 2016-09-17 14:05:51 -07:00
iphydf
1494e474dd
Ensure that all TODOs have an owner.
In the future, all TODOs added either need a bug number (TODO(#NN)) or a
person's github user name. By default, I made irungentoo the owner of
all toxcore TODOs, mannol the owner of toxav TODOs, and myself the owner
of API TODOs.
2016-09-16 12:06:02 +01:00
iphydf
a8823830d3
Add some astyle options to make it do more.
It now enforces a bit more formatting. In particular, padding inside
parentheses is removed. I would like it to remove padding after unary
operators, but there seems to be no option for that.
2016-09-13 01:07:02 +01:00
iphydf
0aa2840164
Group #include directives in 3-4 groups.
1. Current module (if C file).
2. Headers from current library.
3. Headers from other library (e.g. toxcore includes in toxav).
4. System headers.
2016-09-13 00:32:02 +01:00
iphydf
a9fbdaf46b
Do not use else after return.
http://llvm.org/docs/CodingStandards.html#use-early-exits-and-continue-to-simplify-code
2016-09-02 11:02:56 +01:00
iphydf
45d1f9acb9
Match parameter names in declarations with their definitions.
The parameter names were taken from function definitions to update the names in
function declarations (prototypes).
2016-09-01 14:54:17 +01:00
iphydf
633da98ae6
Add braces to all if statements. 2016-08-31 20:04:16 +01:00
iphydf
13ae9e9a93
Move logging to a callback.
This removes the global logger (which by the way was deleted when the first tox
was killed, so other toxes would then stop logging). Various bits of the code
now carry a logger or pass it around. It's a bit less transparent now, but now
there is no need to have a global logger, and clients can decide what to log and
where.
2016-08-27 01:16:14 +01:00
iphydf
459f8f2013
Check code formatting on Travis.
We run astyle on Travis and check if there is a diff. The build terminates if
git finds a difference.
2016-08-12 01:00:00 +01:00
Gregory Mullen (GrayHatter)
9628f9d171 added the dropped ; 2016-02-13 20:53:30 -08:00
Gregory Mullen (GrayHatter)
ea21a541ff missed a line tox to toxav 2016-02-13 20:50:01 -08:00
Gregory Mullen (GrayHatter)
96bf594be5 update the compatablity function to match the macro 2016-02-13 20:44:30 -08:00
Gregory Mullen (GrayHatter)
2d361228cd SemVer toxav too 2016-02-13 20:23:29 -08:00
Eniz Vukovic
96a7b7b4fc Fix error reporting in toxav_call() 2015-11-29 00:38:33 +01:00
irungentoo
74f2fa00c2
Merge branch 'master' of https://github.com/helium-software/toxcore 2015-11-19 14:43:09 -05:00
irungentoo
4df59de504
Mannol toxav fix. 2015-11-17 18:41:00 -05:00
Tibor Stolz
edbfca5474 fix BWController misspelling 2015-11-11 10:33:03 +01:00
irungentoo
6a494e2cbd
Astyle. 2015-11-03 13:42:05 -05:00
Eniz Vukovic
fa0c87fa55 Revert "Removed mutex operations" 2015-10-31 14:53:20 +01:00
Eniz Vukovic
87828a1b42 Add synchronization protection for send_frame API functions 2015-10-24 01:56:49 +02:00
Eniz Vukovic
7972db5c41 Removed mutex operations 2015-10-23 22:56:54 +02:00
irungentoo
d012bb1e8e Added mutex lock+unlock.
Should it be also added to the other parts of this function?
2015-10-23 22:54:22 +02:00
irungentoo
d8a85d9a78 Fixed error in last commit. 2015-10-23 22:54:22 +02:00
irungentoo
b23819a4d1 Fixed some memory related bugs. 2015-10-23 22:54:22 +02:00
Eniz Vukovic
90b1ca8727 Fix setting resolution for vpx v1.4 (or newer i suppose) 2015-10-23 22:53:56 +02:00
Eniz Vukovic
8f130b6f25 Remove old comment 2015-10-11 00:41:34 +02:00
Eniz Vukovic
d6fdf16520 New Adaptive BR algorithm, cleanups and fixes 2015-10-10 23:54:23 +02:00
mannol
0be0e88f3e Remove empty lines 2015-08-09 12:02:52 +02:00
mannol
12d3f9396b Fix possible double free 2015-08-09 11:57:39 +02:00
mannol
3c8cae72d0 Removed redundant function from video.[h|c] 2015-08-08 17:45:24 +02:00
mannol
6c126e34e6 Implement handling capability change on rtp level 2015-06-30 01:41:38 +02:00
mannol
2ecb71bb1e Renamed TOXAV_CALL_STATE to TOXAV_FRIEND_CALL_STATE 2015-06-27 17:28:07 +02:00
mannol
08bc4eb0e0 Added payload turning off by setting bit rate to 0 2015-06-27 01:55:28 +02:00
mannol
9aba4ec273 Random fixes 2015-06-25 01:04:31 +02:00
mannol
d694839d60 Rebased on master and removed alpha channel (again) 2015-06-05 22:14:37 +02:00
mannol
3100042a2b Updated with master 2015-05-22 23:22:31 +02:00
mannol
64037017cc Fix bug 2015-05-12 22:16:00 +02:00
irungentoo
b2350f2e26
Check if call supports video encoding before encoding frame. 2015-05-09 16:09:48 -04:00
mannol
73fbc22961 Fixed inconsistencies 2015-05-07 23:14:03 +02:00
irungentoo
048d793021
Toxav fix.
Use stored image width instead of displayed image width.
2015-05-05 16:12:09 -04:00
mannol
eb6e8aa290 Fixed* api comments and some bugs 2015-05-01 22:29:25 +02:00
mannol
b2b11f0fba Added many test and fixed various warnings 2015-04-30 00:40:30 +02:00
mannol
9bba7a0434 Done 2015-04-29 01:01:25 +02:00
mannol
e4a020333d working av new api 2015-04-28 00:55:57 +02:00
mannol
27e0254a98 Almooooooost 2015-04-27 00:15:57 +02:00
mannol
144fc94d69 Almost done 2015-04-26 00:31:03 +02:00
mannol
1bfd93e64a Finished refactoring 2015-04-22 02:09:37 +02:00
mannol
3fd0ee5f08 Final touchups 2015-04-21 02:31:12 +02:00
mannol
eb9f4ad592 Fix toxav callback 2015-04-18 19:08:18 +02:00
mannol
d1fd3e36a6 Updated with upstream 2015-04-17 19:19:58 +02:00
mannol
969367b72a Update latest 2015-04-17 15:55:02 +02:00
mannol
da6c17222f The pretty basic adaptive bitrate is *working* 2015-04-16 02:00:34 +02:00
mannol
2465f486ac Started custom RTCP 2015-04-13 01:45:53 +02:00
mannol
b2d88a4544 Random fixes 2015-04-11 02:07:54 +02:00
mannol
4fa31d14cf Make it possible to decode mono audio with stereo decoder 2015-04-09 02:43:13 +02:00
mannol
9c003c9dd2 Video works now 2015-04-08 01:00:19 +02:00
mannol
bf9f7e2ae8 Video works but there is one deadlock left and video replay is slow 2015-04-07 01:24:36 +02:00
mannol
62c4fd7409 Video preview works (lmao) 2015-04-02 02:04:45 +02:00
mannol
fdaad0b7c0 A little CS cleanup 2015-03-29 01:10:34 +01:00
mannol
e65efc8936 Improvement in test and removed some bloat from CS 2015-03-28 03:36:31 +01:00
Dubslow
56e5373a11
Consistency with core api 2015-03-25 14:55:42 -05:00
mannol
96ca88a0d6 Make it possible to change channels/sample rate of the decoder 2015-03-23 23:38:04 +01:00
mannol
995bddbc26 Audio works in test 2015-03-23 22:22:17 +01:00
mannol
62af82705a Some progress 2015-03-22 23:50:43 +01:00
mannol
45e8807c1e Make toxav thread safe 2015-03-01 18:45:04 +01:00
irungentoo
ca997bda70
toxav new api fixes. 2015-02-25 20:51:37 -05:00
mannol
9e65cd5337 Implement pausing 2015-02-24 23:27:20 +01:00
mannol
29601feb76 New msi protocol 2015-02-21 01:07:22 +01:00
mannol
efe31ec92f Removed extra msi header and started testing 2015-02-20 00:23:38 +01:00
mannol
6e259d5fcb Msi should be done; toxav.c need a cleanup and adjustments 2015-02-18 23:23:46 +01:00
mannol
483a6ffa32 Added 2 new headers into msi for buffer control 2015-02-17 23:34:40 +01:00
mannol
7329f3b3d4 Fixed header protectors and cleaning up the msi 2015-02-16 23:30:20 +01:00
mannol
8c245affb1 Started adjusting msi backend to new api 2015-02-15 22:41:10 +01:00
mannol
aad857527c Control part of new api already kind of works 2015-02-14 23:37:52 +01:00
mannol
39680f31d0 Progress 2015-02-01 23:43:54 +01:00
mannol
1450c22d01 Current progress 2015-01-24 23:29:54 +01:00