The audio part of this project was tricky. The need is very clear: this is an IP phone that automatically places a call when somebody presses a button. The hard part is finding an IP softphone without a GUI.

I found that a lot of softphone apps (andrioid and iOS) are based on [pjlib](http://www.pjsip.org/), so luckily I'm not forced to go Plan-B (configure asterisk for the job). Pjlib supports a lot of protocols, it does everything I need and more. It also has bindings for python, and I'm feeling that Pitofono's final destination will involve some python coding.
Another good point is video support embedded in the library; I still haven't investigated on this.

Tags :

My top priority is video acquisition and streaming. So I investigated a little and I choose motion as the software component for this task: low requirements, it can stream via http in mjpg, and it's very configurable. After a while i found a compatible video source (the video out of my reflex): turns out that in 2017 it's difficult to have a device with an analog video out...

After a bit of fiddling I've got it working. Motion is not very resource demanding, and I need only the streaming feature, not the motion detection or the video/snapshot generation. Also a good feature is the video loopback: when a software is using a v4l2 device (say /dev/video0) this is blocked by the process and inaccessible to other processes, the loopback is able to create a "clone v4l2 device" accessible to other programs.