MASTER's THESIS Integrating Video Support Into the New Woize SIP-Client
Total Page:16
File Type:pdf, Size:1020Kb
2007:201 CIV MASTER'S THESIS Integrating Video Support into the New Woize SIP-client Fredrik Karlsson Luleå University of Technology MSc Programmes in Engineering Media Technology Department of Computer Science and Electrical Engineering Division of Media Technology 2007:201 CIV - ISSN: 1402-1617 - ISRN: LTU-EX--07/201--SE Integrating video support into the new Woize SIP-client Fredrik Karlsson May 15, 2007 Abstract With VoIP services becoming more and more popular and, even beginning to compete with the PSTN (Public Switched Telephone Network) in terms of prices and wide use, companies that provides this service has to evolve to keep their customers and be competitive. Woize Ltd. is one of these companies and as a mean to strengthen their position on the market they want to integrate video call support and video conferencing to their new VoIP-client. This thesis is aimed at helping Woize Ltd. choosing an appropriate video codec and finding an appropriate API for integrating video into their new SIP-powered VoIP-client. The decisions and paths taken in this work are all a product of Woize Ltd's requirements and preferences. In this report there is a description of how and why the codec and API were chosen. The report then describes the API, its features and, the problems that were encountered when setting it up on two of the platforms Woize Ltd are aiming for. Different encoding tweaks of the Theora codec are also tried out to see what quality is acceptable with different bitrates. These are the main objectives. Further on an attempt on implementing a reference model for streaming video on different platforms are conducted, which proved to be more problematic than was expected in the beginning. The results will show that it is possible to integrate video calls into a VoIP client using this economical method, even though an application prototype is not achieved. Lastly a short discussion on how to make video calls available over the SIP protocol between computer and 3G cell phones is held. Acknowledgment First, I would like to thank my supervisor at Algitech, Lars Sundqvist, whose guidance and assistance throughout this work proved to be crucial to the realization of the thesis. Furthermore I wish to express my gratitude to all other employees at Algitech who have helped me in this study. Lastly I would like to thank my family and friends for their support. Table of Contents 1 Introduction...................................................................................................................................6 1.1 Project Background...............................................................................................................6 1.2 Project Objectives and delimitations....................................................................................6 1.3 Business complications.........................................................................................................7 1.4 Terminology..........................................................................................................................7 1.5 Outline...................................................................................................................................8 2 Choosing the video codec.............................................................................................................9 2.1 Method...................................................................................................................................9 2.2 Results.................................................................................................................................10 2.2.1 Ogg Theora..................................................................................................................10 2.2.2 x264.............................................................................................................................11 2.2.3 MPEG2/4, H.263/4, On2©s VP6/7, Quicktime and RealVideo...................................12 2.3 Decision...............................................................................................................................12 3 Choosing the API........................................................................................................................13 3.1 Method.................................................................................................................................13 3.2 Results.................................................................................................................................14 3.2.1 FFmpeg (API)..............................................................................................................14 3.2.3 portVideo (API)...........................................................................................................17 3.2.4 Elecard (SDK).............................................................................................................19 3.2.5 HDX4..........................................................................................................................20 3.2.6 Helix............................................................................................................................22 3.2.7 QuickTime...................................................................................................................26 3.2.8 VP7 (SDK)..................................................................................................................27 3.2.9 Leadtools (SDK).........................................................................................................29 3.3 Decision..............................................................................................................................32 4 GStreamer...................................................................................................................................32 4.1 GStreamer and its packages................................................................................................33 4.1.1 gstreamer and gst-plugins-base...................................................................................34 4.1.2 gst-plugins-good..........................................................................................................34 4.1.3 gst-plugins-ugly...........................................................................................................34 4.1.4 gst-plugins-bad............................................................................................................34 4.1.5 Miscellaneous packages..............................................................................................34 4.2 Elements and its ªglueº......................................................................................................34 4.2.1 Elements......................................................................................................................35 4.2.2 Pads.............................................................................................................................35 4.3 The pipeline........................................................................................................................36 4.4 Advanced concepts.............................................................................................................36 4.4.1 Position tracking and seeking......................................................................................36 4.4.2 Metadata......................................................................................................................36 4.4.3 Interfaces.....................................................................................................................37 4.4.4 Clocks in GStreamer...................................................................................................37 4.4.5 Dynamic Controllable Parameters..............................................................................37 4.4.6 Threads........................................................................................................................37 4.4.7 Autoplugging...............................................................................................................37 4.4.8 Pipeline manipulation.................................................................................................38 4.5 Plug-ins...............................................................................................................................38 4.6 GStreamer on Windows......................................................................................................38 4.6.1 Dependencies..............................................................................................................38 4.6.2 Early problems and fixes.............................................................................................39 4.6.3 The correct way...........................................................................................................40 5 Developing the reference model.................................................................................................40 5.1 Theora encoding tweaks......................................................................................................41 5.1.1 Method.........................................................................................................................41 5.1.2 Results..........................................................................................................................42