Link: https://github.com/Zoxcore/ToxBlinkenwall
ToxBlinkenwall (eWindow) is an effort to develop Software and Hardware to provide a cheap, stable,
easy to use and secure System to have Video Conferences anywhere in the world.
The Main Component is Tox.
ToxBlinkenwall (eWindow) utilizes Tox (c-toxcore: https://toktok.ltd/index.html)
as the library to handle all encryption and the sending and receiving of data.
Tox is an open source, distributed, peer-to-peer and end-to-end encrypted network library.
ToxBlinkenwall (eWindow) builds upon Tox to give Videocalls and Videoconferencing to users and small companies.
We are developing better and smoother Video and Audio transmission and also getting Hardware acceleration support
for some devices. All this while still staying distributed, without centralized Servers, and also using as
little in the way of 3rd party libraries as possible (no WebRTC).
This makes the code small and easy to compile on many different platforms.
Our current Hardware focuses on the Raspberry Pi (since it's easy to obtain in many places and also cheap) and the Android platform (as it is very flexible and readily available).
Brief Explanation:
Toxblinkenwall can handle 1-on-1 Video calls in 720p and 1080p at 25fps.
This pushes the Hardware and Software of the Raspberry PI to the limit.
But we are envisioning even more: we want to be able to Videocall with more than 2 parties at the
same time.
The idea is to implement a way to show 3 or maybe even more Video Feeds on 1 Display Device,
and handle multiple incoming Audio PCM streams.
Expected Results:
- 3 or more clients can video call (including audio) each other
- all incoming video streams are displayed optimally on the available screen
- all incoming audio streams are mixed properly, resulting in a natural sound output
Knowledge Prerequisites: Experience with C, Knowledge about PCM Audio, Experience with Video Codecs
Difficulty: Medium
Brief Explanation:
Toxblinkenwall currently assumes a default "wide" display configuration, like 4:3 or 16:9 aspect ratio.
From a design point of view, some users prefer an upright, "portrait-mode" aspect ratio.
This currently can only be done by rotating the camera, and living with distorted UI elements.
To solve this, the communication protocol must be enhanced to negotiate the peers display and camera orientation, so that the endpoints can rotate the video and UI elements accordingly.
Expected Results:
- ToxBlinkenwall can be used in both landscape and portrait mode
- UI elements are drawn correctly
- Participants can have different display and camera orientations
Knowledge Prerequisites: Experience with C, Experience with graphics programming
Difficulty: Easy
Brief Explanation:
Since TRIfA [https://github.com/zoff99/ToxAndroidRefImpl] is now the main Android Client for Tox,
we would really like to improve the User Experience with this Application.
The Android Application was created in one Weekend (almost by accident, see our talk at ToxCon 2018
Slides)
and it is very stable and great.
But we want even more.
Users have been asking for some features that they are missing from the Application.
Expected Results:
- Perform usability testing with documented results.
- Define UX improvements based on the test results.
- Add Hardware Accelerated Video Encoding Support
- Clean up the Source Code
- Remove Duplication in the Source as much as possible
- Write Tests for the Android App
- Implement the most asked for missing features: Ringtone Support and Export/Import Data Function
Knowledge Prerequisites: Experience with Java, Knowledge about Android
Difficulty: Hard
Brief Explanation: An interesting use case for ToxBlinkenwall (eWindow) is to take an old laptop and repurpose it into a dedicated Videochat station. For this we need a live-booting USB image with the ToxBlinkenwall software on it. Ideally it would be based on a light-weight linux distribution, like Alpine Linux.
Expected Results:
- Bootable Image for x86 with
- CI flow to create updated images
- Auto-Configuration OR setup dialogs for various hardware configurations
- Implement persistent storage methods to retain keys and connections
- Implement update mechanism, or self-hosting build capability
Knowledge Prerequisites: Experience with Distro packaging, Linux boot process, Shell Scripting
Difficulty: Medium
Brief Explanation:
The Source Code for ToxBlinkenwall (eWindow) has evolved over the years, by quickly implementing features and ideas and
testing them out.
This Process was great for fast progress, yet not so great for a clear and structured code base.
We want to clean the Code, and fix some of the most common mistakes made.
Expected Results:
- Code follows common modularity guidelines and design principles.
- C Code is purged of unused functions and variables
- Most Common Bugs (SEGV) fixed
- Most Common Causes for Crashes fixed
- Write Documentation for Test Cases
- Create Code Test and/or Unit tests
Knowledge Prerequisites: Experience with C, Knowledge about Debugging (and Debugger Tools)
Difficulty: Easy
Mentor: iphydf, strfry, robinli, zugz