sharme - developer
sharme in its current form has a simple codebase.
The way it works is:
- Take a desktop screenshot in rgba
- If the screen size is not multiple of 16 (any or both width, height) do a resize to make it multiple of 16
- convert the screenshot image data from rgb to yuv420p and at the same time strip the alpha channel.
- Feed the video codec. The codec used is the smoke codec from Gstreamer. Gstreamer is not needed, I just shameless stole it from Gstreamer.
- Then just send the encoded data to the network. Before sent it an encryption is done with arc4
The way it is organized:
lib/* - where several routines are implemented. Generally a specific task is in its own .c file, for example conversion from rgb to yuv and vice versa are in the colorspace.c include/* - the headers of the lib/*
src/viewer.cpp - the code that runs in the supporter machine
src/client.cpp - the code that runs in the machine that it's sharing its screen.
src/sharme.cpp - the main where all starts running.
Source code is hosted on github https://github.com/rpedroso/sharme so go fork it.