
SkypeKit Video Call Tutorial with Qt Framework
--------------------------------------------------

This is a Qt example application that demonstrates how to get started with building a GUI application with SkypeKit.

Once built, the application will:
* auto-answer incoming calls 
* automatically start video send when possible
* make outgoing video calls to a selected contact.

The project is cross-platform. It works on Windows, Mac OSX and Linux. 

An online walkthrough of this project is available at:
http://developer.skype.com/skypekit/development-guide/audio-video-integration/desktop-video-with-qt

Environments
---------------

The project has been tested using the following environments:

* Microsoft Windows 7 (64 bit)
  * SkypeKit SDK: version 3.1 
  * Qt: version 4.7.4 (32 bit)
  * IDE: Qt Creator 2.0.1
  * Compiler: Microsoft Visual C++ 2010

On Linux Kubuntu 10.04 (lucid), KDE 4.4.2
  * SkypeKit SDK: version 3.1 
  * Qt: version 4.6.3 (32 bit)
  * IDE: Qt Creator 2.0.0
  * Compiler: gcc 4.4.3 (i486-linux-gnu)


Contents of the project directory
------------------------------------

* Qt Creator project file
 * qt_videocalls.pro - Qt Creator project file

* main.cpp - Programmatic launching of SkypeKit runtime, construction of UI and skype objects, and launching the UI.

* Derived classes from SkypeKit API and SkypeKit side of the program logic. The global variables for UI classes are also declared here.
 * QSKClasses.h
 * QSKClasses.cpp

* Application main window class and UI side of logic.
 * mainwindow.h
 * mainwindow.cpp

* Video renderer class. Based on both VideoTransport for communication with runtime and QWidget for drawing bitmaps. Since SDK release 3.2, this class replaces videowindow.
 * videowidget.h
 * videowidget.cpp

* UI files, automatically generated by Qt Creator
 * ui_mainwindow.h
 * mainwindow.ui

 
Notes
--------
 * As of SDK release 3.2 the project also includes app_token.h that contains application token file loader(default name keypair.pem). You will need to modify the keyfile constant in the app_token.h in order to be able to log in.
 
 * You will also likely need to modify the runtime path in the main.cpp in order to programmatically launch appropriate runtime. Default runtime path is assumed to be in <distro root>/bin directory, but as runtimes now reside in separately downloadable archives, this assumption is rather baseless.

 * As multi-party video is currently not enabled in SkypeKit, this application does not support conference calls.
 
 * On linux the C++ wrapper library needs to be built with RTTI. As the default make files come with -fno-rtti switch, you will most likely need to remove that switch and rebuild libskypekit-cppwrapper_2_lib.a

 * On MS Windows, the project requires the WS2_32.Lib library, which may make it difficult for you to build the project with Express version of Visual C++ 
 
 * The C++ wrapper library needs to be built with appropriate defines to switch on the rendering modules. Under normal circumstances, CMake generates the project files already with appropriate switches. However, should you run into shared memory related linking errors, it is good idea to check if the wrapper project files have following defines:
 
For all targets:
 SKYPEKIT_SURFACE_RENDERING
 
For non-Windows targets also:
 VIDEO_TRANSPORT_SYSV
 VIDEO_TRANSPORT_POSIX