And now something even more interesting..... a Skype video calling from our ARM embedded device. Unlike the SkypeKit desktop version the one for embedded devices supports only H264 over RTP. This is no problem since I would need to use it anyway due to the HW accelerated video coding/decoding that I'm inteding to run.
The RTP video host runs as a standalone process as the audio one does. Here is how it interfaces with the SkypeKit runtime.
The video host must
- Capture video from the camera or screengrab or photo album or from a DVB-T/S receiver 🙂 etc.
- Preview the video
- Encode/Decode video to the H264. Great I have the HW accelerated codec already ready
- Render the video on screen and/or saves it into a file.
Ok lets build something finally. Go to the directory with the reference implementation of the video loopback .
make TARGET_ARCH=armv7le-eabi TOOLCHAIN_PREFIX=arm-angstrom-linux-gnueabi-
As usually I have expected some issues but I was surprised. Not problem at all. The build finished with this new binary
To run the Skype client app with the audio and video hosts I ran these processes.
Notice this time I'm running the linux-armv7-skypekit-voicepcm-videortp runtime that communicates with the video host.
- skypekitclient -t av_test_arm_v1.pem
When you run the skypekitclient the SkypeKit runtime should output this
$ ./linux-armv7-skypekit-voicepcm-videortp SkypeRuntime Copyright (C) 2003-2012 Skype Technologies S.A. SkypeRuntime Version: 3.7/linux-armv7-skypekit-voicepcm-videortp_126.96.36.1991_1823905 Proprietary and confidential, do not share this application. AVTransportWrapper (/tmp/vidrtp_to_skypekit_key): connected! AVTransportWrapper (/tmp/vidrtp_from_skypekit_key): connected! AVTransportWrapper (/tmp/pcm_to_skypekit_key): connected! AVTransportWrapper (/tmp/pcm_from_skypekit_key): connected!
You can see it got connected with the audio and video hosts.
Now you can make a video call. From the command line of the skypekitclient
<you will be asked for skype Id to call to>
Or call from your dektop on the skypekitclient. In that case you will pick up the call by command
After that you will need to start sending the video by executing command
...and start receiving video by
At this moment you should see a picture from you desktop camera (assuming you are using you Skype on the desktop to call the skypekitclient on the ARM board) being returned as a video from the skypekitclient. As with the audio loopback the video loopback just takes the video frames and returns them back to the caller.
This was not so bad was it? I cannot wait to actually decode and display the video on a small HDMI monitor I have attached to the ARM device, but that's for next time.