<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" type="topic" id="gupnp" xml:lang="it">
<info>
  <link type="guide" xref="index" group="gstreamer"/>
  <desc>An easy to use, efficient and flexible UPnP framework</desc>
  <revision pkgversion="1.0" date="2011-05-17" status="candidate"/>
</info>

<title>GUPnP</title>

<p>GUPnP is an object-oriented open source framework for creating UPnP devices and control points,
written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and
flexible.</p>

<p>The GUPnP framework consists of the following components/packages:</p>

<list>

<item><p>GSSDP: The low-level library implementing resource discovery and announcement on the
network through SSDP protocol.</p></item>

<item><p>GUPnP: The core library that implements the UPnP specification: resource announcement and
discovery, description, control, event notification, and presentation (GUPnP includes basic web
server functionality through libsoup). GUPnP does not include helpers for construction or control of
specific standardized resources (e.g. MediaServer); this is left for higher level libraries
utilizing the GUPnP framework.</p></item>

<item><p>GUPnP A/V: A small utility library that aims to ease the handling and implementation of
UPnP A/V profiles.</p></item>

<item><p>GUPnP DLNA: A small utility library that aims to ease the DLNA-related tasks such as media
profile guessing, transcoding to a given profile, etc.</p></item>

<item><p>GUPnP IGD: A library to handle UPnP Internet Gateway Device port mappings.</p></item>

<item><p>GUPnP Vala: Vala bindings for GUPnP libraries.</p></item>

<item><p>GUPnP Tools: Free replacements of Intel UPnP tools, that use GUPnP. They provides the
following client and server side tools which enable one to easily test and debug one's UPnP devices
and control points:</p>

<list>

<item><p>Universal Control Point: a tool that enables one to discover UPnP devices and services,
retrieve information about them, subscribe to events and invoke actions.</p></item>

<item><p>Network Light: a virtual light bulb that allows control points to switch it on and off,
change its dimming level and query its current status. It also provides a simple UI to control all
the network lights available on the network.</p></item>

<item><p>AV Control Point: a simple media player UI that enables one to discover and play multimedia
contents available on a network. It is strictly a control point and therefore does not have any
playback capabilities of it's own and relies on external UPnP MediaRenderer devices for actual
playback.</p></item>

<item><p>Upload: a simple commandline utility that uploads files to known MediaServers. Use
Universal Control Point for discovering the MediaServers.</p></item>

</list>

</item>

</list>

<p>The GUPnP framework was born out of frustration with libupnp and its mess of threads. GUPnP is
entirely single-threaded (though asynchronous), integrates with the GLib main loop, and provides the
same set of features as libupnp while hiding most of the UPnP internals through an elegant
object-oriented design.</p>

<p>GUPnP is free software. All libraries are released under the GNU LGPL, while GUPnP Tools are
licensed under GNU GPL.</p>

<p>You should use GUPnP whenever you need your code to communicate with any UPnP or DLNA devices.
Examples of such devices includes Sony Playstation 3 and Bravia model TVs, Samsung TVs and phones, Microsoft XBox and all modern router etc. The list of such devices is huge and its increasing.</p>

<p>Apart from dealing with existing UPnP devices, GUPnP can very effectively be used to easily
create custom home network solutions where devices/services are able to discover and interact with
each other without any configuration from user.</p>

<p>For comprehensive information on GUPnP, please visit the <link href="http://www.gupnp.org">project home page</link>.</p>
</page>
