Running Skype on an embedded device - video. Part 3

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.
The Rendering will be done directly via the OMAP framebuffer.

Ok lets build something finally. Go to the directory with the reference implementation of the video loopback .

sdp-distro-skypekit_3.7.1.331_1823867/reference/videortphost-loopback

and call

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

sdp-distro-skypekit_3.7.1.331_1823867/reference/videortphost-loopback/build/videortphost-loopback

To run the Skype client app with the audio and video hosts I ran these processes.

  1. videortphost-loopback
  2. voicepcmhost-rtaudio
  3. linux-armv7-skypekit-voicepcm-videortp
    Notice this time I'm running the linux-armv7-skypekit-voicepcm-videortp runtime that communicates with the video host.
  4. 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_3.7.1.341_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
Cx
<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
Ca 

After that you will need to start sending the video by executing command
CS

...and start receiving video by
CR

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.

 

 

This entry was posted in ARM, Embedded, Skype, Software development, Video calling, VoIP. Bookmark the permalink.

Leave a Reply