Info

Download ZIP (2.4 MB)

Testing and Issues

You can test this entry and submit issues during the testing period of the VoIP Contest, Round 1 contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

33

Comments

tgvoipcall doesn't depend on ffmpeg or any other big libraries, using libopusfile to read and libogg to write opus files. Input/output to libtgvoip are using -DTGVOIP_USE_CALLBACK_AUDIO_IO, which makes it possible to run as many instances of tgvoipcall as needed on a single machine.

tgvoiprate uses Google's ViSQOL algorithm (https://link.springer.com/article/10.1186/s13636-015-0054-9) with some modifications, rewritten in C++. According to Google, this outperforms PESQ used by other entries.
6
You have not added any comments yet...
by rating

Issues

Fair Wombat Nov 14, 2019 at 11:06
The submitted tgvoiprate app got a score of 956 and took the 10th place in the scoring table, receiving 3⭐️.
External dependency: Google's ViSQOL algorithm (free license) -0.15⭐️
Final result is 2.85⭐️
10
This is not a good idea for encoding and writing data to an ogg file inside a blocking callback in a single thread - encoding and ogg_page_streamout can take a lot of time, especially in the case of variable data rates (https://xiph.org/ogg/doc/libogg/ogg_stream_pageout. HTML).
The receive cycle is locked until the page is written - so it increases the temporal latency and you loose some data. You must exit this handler as soon as it possible to not affect receiving process - save data to the buffer(pipe) which is being processed by asynchronous task.
Debian GNU/Linux 10
5
Sturdy Butterfly Oct 29, 2019 at 11:47
You'd be right if I was using a real audio device, but knowing how callbacks are implemented in libtgvoip, I have up to 20 ms to do whatever I want in that callback, including writing a file.
B
Borik Bobrujskov Oct 28, 2019 at 14:45
Your tgvoiprate very often report 1.000000 status on a generated by your application ogg outputs (on all success calls (31 calls) I see only one non 1.000000 rate). This is because you loose some data while writing ogg files
Debian GNU/Linux 10 \n \l
1
Sturdy Butterfly Oct 28, 2019 at 15:09
Try a longer file maybe? This might as well be a libtgvoip issue.
Fair Wombat Nov 12, 2019 at 11:47
Didn't find any copyrights for code or license information about ViSQOL alorithm.
Debian GNU/Linux 10 (buster)
Sturdy Butterfly Nov 12, 2019 at 19:22
The C++ implementation provided here is my own. The Matlab implementation I used as my primary reference can be found in various github repositories, for example here https://github.com/wireapp/wire-audio-video-signaling/tree/1e90bf464279f1915c87246622c58093811f10bf/test/audio_test/visqolrelease. This Matlab implementation is the only one I was able to find, and there's no license attached to it. There also are no restrictions in the research paper I linked in my comment. There are no patents mentioned anywhere either.

The research paper itself allows doing basically anything as long as you link to it, which I did in my comment:
This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
Nobody added any issues yet...