libdlna aims at being the reference open-source implementation
of DLNA (Digital Living Network Alliance) standards. Its primary goal is to provide DLNA support to uShare, an embedded DLNA & UPnP A/V Media Server, but it will be used to build both DLNA servers and players in the long term.
libdlna is written in C and relies on FFMPEG librairies (libavformat and libavcodec) to handle and demux A/V streams. You still need libupnp to provide basic UPnP support to your project.
libdlna is based on official DLNA specifications and aims at providing a complete respect of the defined standards. Right now, libdlna can be used to build compliant DLNA Media Servers.
libdlna is free software - it is licensed under the terms of the
GNU Lesser General Public License (GNU/LGPL) version 2.1+.
By lack of spare time, motivation and interest, libldna development is currently discontinued (this may change though). Don't expect release anytime soon :-(
Changes in 0.2.4:
- Various fixes due to FFmpeg/libav API changes.
- Compiler warning flags fixed.
Changes in 0.2.3:
- FIX: one header file was missing from previous tarball release.
- Support for LPCM and HeAACv2 profiles introduced in DLNA 1.5.
- Better check of AAC ADTS frame header.
Changes in 0.2.2:
- Proper build of both shared and static library.
- Remove some GNU CC specific syntax.
- Hide some elements from public API.
Changes in 0.2.1:
- Corrected many compilation warnings.
- Support for shared/static library build.
- Generates valid DMS description.
- Updates of public API.
Changes in 0.2.0:
- Updated public API.
- Code simplifications and bug fixes.
- Ensure library's thread-safety.
Changes in 0.1.4:
- Complete decoding of AAC profile variants (LC/LTP/HE/BSAC).
- Fix memleaks.
- Fix bug with ATRAC profile compliance.
- Added Debian packages.
Copyright and License
libdlna is copyright (C) 2007-2008 Benjamin Zores.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
The currently available libdlna release is 0.2.4.
Sources can be downloaded here.
- Development Tree
The latest libdlna development tree can be grabbed using Mercurial, a revision control system, similar in purpose to tools such as CVS, SCCS, and Subversion. It is used to keep track of the changes made to a source tree and to help programmers combine and otherwise manipulate changes made by multiple people or at different times.
There are currently 2 ways of accessing the Mercurial tree: via command-line or web interface (to just have a look to some changes on a specific file, for example). You can directly access to the web interface with your browser from:
In order to access to Mercurial via command line, create and enter a new directory and do the following (be sure that you have installed the mercurial package).
Currently supported DLNA profiles:
- Image: JPEG, PNG
- Audio: AC3, AMR, ATRAC3, LPCM, MP3, MPEG-4 (AAC), WMA
- AV: MPEG-1, MPEG-2, MPEG-4 Part 2 (SP and ASP), MPEG-4 Part 10 (a.k.a. AVC or H.264)
libdlna has been tested successfully with the following devices:
libdlna is work in progress right now. If you're interested in its development, you're highly welcomed to join in.
Development roadmap focuses on the following:
- Add complete DLNA 1.5 profiles detection
- Add UPnP A/V layer (ripped from uShare) to easily create MediaServer
- Import latest libupnp into libdlna
- Rewrite of UPnP parts from libupnp
- Add support for MediaPlayer capabilities
- Add transcoding/transmuxing capabilities
Projects using libdlna
If you're running a project featuring libdlna, don't hesitate to notify about it. Below is a list of applications based on libdlna:
- uShare : a UPnP A/V and DLNA MediaServer
Many people have indirectly contributed to libdlna by sponsoring its development or by having donated DLNA certified hardware to test it with.
My eternal thanks go to these people who done so much for this project:
- DLNA Specifications
Many thanks to Tim Bird (Sony) and Rahul Saxena (Intel) from CE Linux Forum : a California Non-Profit Corporation, is focused on the advancement of Linux as an open source platform for consumer electronics (CE) devices.
- Nokia N95 (see here)
offered by the finnish Wippies community, which develops and introduces services which challenge the conventional ways of thinking as well as make your life a little bit easier and more enjoyable. As a Wippie, one is invited to develop new ideas and build services with us. All our services are based on open source software so that you can take part in developing services you would like to use.
DLNA Mailing List
If you're interested in OpenSource DLNA related programs, applications, libraries (and development as a whole), you may want to join the DLNA-Dev mailing List. This list however is not meant to support libdlna development.
The author of libdlna and this document, Benjamin Zores, can be contacted e-mail.
Please send bug reports, suggestions, ideas, comments or patches.